1회) 다음 Java 언어로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test001 {
static int[] arr() {
int a[] = new int[4];
int b = a.length;
for (int i=0; i<b; i++) {
a[i] = i;
}
return a;
}
public static void main(String[] args) {
int a[] = arr();
for (int i=0; i<a.length; i++) {
System.out.println(a[i] + " ");
}
}
}
답: 0 1 2 3
2회-1) 다음 Java로 구현된 프로그램의 괄호 안에 들어갈 것을 쓰시오.
class Parent {
void show() { System.out.println("parent"); }
}
class Child extends Parent {
void show() { System.out.println("child"); }
}
public class Test002 {
public static void main(String[] args) {
Parent pa = ( ) Child();
pa.show();
}
}
답: new
만약에 이 문제의 실행 결과를 쓰라고 했다면?
부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조하고 있다.
👉 다형성에 의해 child가 정답일 것이다.
2회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 서식을 준수하시오.)
class A {
int a;
public A(int a) { this.a = a; }
void display() { System.out.println("a=" + a); }
}
class B extends A {
public B(int a) {
super(a);
super.display();
}
}
public class Test003 {
public static void main(String[] args) {
B obj = new B(10);
}
}
답: a=10
3회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test004 {
public static void main(String[] args) {
int i = 0, c = 0;
while (i < 10) {
i++;
c *= i;
}
System.out.println(c);
}
}
답: 0
3회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
abstract class Vehicle {
String name;
abstract public String getName(String val);
public String getName() {
return "Vehicle name : " + name;
}
}
class Car extends Vehicle {
private String name;
public Car(String val) {
name = super.name = val;
}
public String getName(String val) {
return "Car name : " + val;
}
public String getName(byte[] val) {
return "Car name : " + val;
}
}
public class Test005 {
public static void main(String[] args) {
Vehicle obj = new Car("Spark");
System.out.println(obj.getName());
}
}
답) Vehicle name : Spark
getName 메소드가 총 3개가 있는데, Vehicle 클래스의 getName 메소드를 Car 클래스에서 오버로딩한 것을 알 수 있다. (매개변수가 다 다름)
obj.getName()을 보면 매개변수가 없다.
따라서 Vehicle 클래스에 있는 getName이 실행되어 Vehicle name : 이 앞에 붙을 것이다.
3회-3) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test006 {
public static void main(String[] args) {
int a = 0, sum = 0;
while (a < 10) {
a++;
if (a % 2 == 1) {
continue;
}
sum += a;
}
System.out.println(sum);
}
}
답: 30
4회-1) 다음은 변수 n에 저장된 10진수를 2진수로 변환하여 출력하는 Java 프로그램이다. 프로그램을 분석하여 괄호 안에 들어갈 알맞은 답을 쓰시오.
public class Test007 {
public static void main(String[] args) {
int a[] = new int[8];
int i = 0;
int n = 10;
while (( 1 )) {
a[i++] = ( 2 );
n /= 2;
}
for (i = 7; i >= 0; i--) {
System.out.print(a[i]);
}
}
}
(1) n > 0
(2) n % 2
4회-2) 다음 Java로 구현된 프로그램을 분석하여 괄호에 들어갈 알맞은 답을 쓰시오.
public class Test008 {
public static void main(String[] args) {
int ary[][] = new int [(1)][(2)];
int n = 1;
for (int i=0; i<3; i++) {
for(int j=0; j<5; j++) {
ary[i][j] = j*3 + i + 1;
System.out.print(ary[i][j] + " ");
}
System.out.println();
}
}
}
(1) 3
(2) 5
실행결과를 적으라는 문제였다면 답은
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
4회-3) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
class Parent {
int compute(int num) {
if (num <= 1) return num;
return compute(num - 1) * compute(num - 2);
}
}
class Child extends Parent {
int compute(int num) {
if (num <= 1) return num;
return compute(num - 1) + compute(num - 3);
}
}
public class Test009 {
public static void main(String[] args) {
Parent obj = new Child();
System.out.println(obj.compute(4));
}
}
답: 1
obj는 다형성에 의해 Child 클래스의 compute() 메소드가 실행이 된다.
따라서 compute(4) == compute(3) + compute(1) == compute(3) + 1
== compute(2) + compute(0) + 1 == compute(2) + 0 + 1
== compute(1) +compute(-1) + 0 + 1 == 1-1+0+1 = 1
'Language > Java' 카테고리의 다른 글
[정보처리기사] 2022년 Java 프로그래밍 언어 문제 (0) | 2024.04.07 |
---|---|
[정보처리기사] 2021년 Java 프로그래밍 언어 문제 (0) | 2024.04.07 |
[정보처리기사] 2019년 Java 프로그래밍 언어 문제 (2) | 2024.04.04 |
[정보처리기사] 2018년 Java 프로그래밍 언어 문제 (0) | 2024.04.04 |
[정보처리기사] 2017년 Java 프로그래밍 언어 문제 (0) | 2024.04.04 |