JAVA/자바 완전 정복

자바 완전 정복 7장 연습문제 풀이

GaeGim 2022. 7. 5. 00:16
반응형

Q1. 클래스 A가 다음과 같이 정의돼 있다.

class A {
	boolean a;
	int b;
	double c;
	String d;

	void abc() {
   		 System.out.println(b+c);
   		 System.out.println(c+d);
    	 	 System.out.println(d+a);
    }
}

 

다음 코드의 출력값을 쓰시오.

A a = new A();
System.out.println(a.a);	//false
System.out.println(a.b);	//0
System.out.println(a.c);	//0.0
System.out.println(a.d);	//null
System.out.println();

a.abc();	//0.0
	        //0null
               //nullfalse

 

 

 

 

Q2. 4가지 형태로 오버로딩된 print() 메서드의 실행 결과가 다음과 같이 출력되도록 클래스 A를 완성하시오.

class A {
    void print() {    
    	System.out.println("입력값이 없습니다.");
    }
    void print(int a) {
        System.out.println("정수 입력값 : "+a);
    }
    void print(double a) {
   	 System.out.println("실수 입력값 : "+a);
    }
    void print(String a) {
   	 System.out.println("문자열 입력값 : "+a);
    }
}

A a = new A();
a.print();
a.print(3);
a.print(5.6);
a.print("안녕");

 

실행 결과
입력값이 없습니다.
정수 입력값 : 3
실수 입력값 : 5.8
문자열 입력값 : 안녕

 

 

 

 

Q3. 다음의 클래스 A 내부에는 int[] 객체를 입력매개변수로 입력받아 배열의 모든 원소를 합한 후 리턴하는 arraySum() 메서드가 정의돼 있다.

class A {
	int arraySum(int[] array) {
	int sum = 0;
    	for(int i=0; i<array.length; i++) {
    		sum += array[i];
    	}
   	return sum;
    }
}

 

다음과 같이 4가지 방법으로 arraySum() 메서드를 호출할 때 오류가 발생하는 코드와 그 이유를 설명하시오.

A a = new A();
int []data1 = new int[]{1,2,3};
int []data2 = {1,2,3};
System.out.println(a.arraySum(data1));
System.out.println(a.arraySum(data2));
System.out.println(a.arraySum(new int[]{1,2,3}));
System.out.println(a.arraySum({1,2,3}));

마지막 행에서 오류가 발생할 것이다.

메서드에 매개변수를 넘겨줄 때 선언가 값 대입이 분리된다.

int[] a ={1,2,3};의 객체 생성 방법은 선언과 동시에만 사용 가능하다.

 

 

 

 

Q4. 클래스 A 내부에는 다음과 같이 기본 자료형과 참조 자료형을 입력매개변수로 하는 abc(), bcd() 메서드가 정의돼 있다. 

class A {
	void abc(int num) {
    		m = 8;
    }
	void bcd(int[] n) {
    		n[0]=4; n[1]=5; n[2]=6;
    }
}

 

이때 다음 코드의 출력값을 쓰시오.

A a = new A();

int m = 5;
int []n = {1,2,3};

a.abc(m);
a.bcd(n);

System.out.println(m);				//5
System.out.println(Arrays.toString(n));		//[4, 5, 6]

 

 

 

 

Q5. 가변 길이 자료형을 이용해 여러 개의 정수를 개수와 상관없이 입력받아 평균값을 출력하는 averageScore() 메서드를 클래스 A 안에 정의하시오.

class A {
	double averageScore(int... score) {
    	int sum=0;
        for(int i : score) {
        	sum+=i;
        }
	double average = (double)sum/score.length;
	System.out.println(average);
    }
}

A a = new A();

a.averageScore(1);
a.averageScore(1, 2);
a.averageScore(1, 2, 3);
a.averageScore(1, 2, 3, 4);
// ...

 

실행 결과
1.0
1.5
2.0
2.5

 

 

 

 

Q6. 클래스 A에 생성자가 2개 정의돼 있다. 각각의 생성자를 이용해 객체를 생성하시오(단, 입력값은 자유롭게 지정).

class A {
    A(int k) {
    }
    A(double a, double b) {
    }
}

A a1 = new A(1);		//첫 번째 생성자 이용
A a2 = new A(2.5, 4.4);		//두 번째 생성자 이용

 

 

 

 

 

Q7. 클래스  A를 다음과 같이 정의했을 때 다음 코드의 출력 결과를 쓰시오.

class A {
    int m = 3;
    int n = 5;
    void abc(int m, int n) {
   	 m = this m;
  	 n = n;
    }
}

A an = new A();
a.abc(7, 8);
System.out.println(a.m);	//3
System.out.println(a.n);	//5

 

 

 

 

Q8. 클래스 A 내부에는2개의 생성자가 정의돼 있다.

class A {
    int a, b, c, d;
    A() {
    	this(5);
    }
    A(int k) {
   	 a = k;
   	 b = k;
   	 c = k;
   	 d = k;
    }
}

 

다음과 같이 객체를 생성하고 각 필드값을 출력했을 때 모든 필드값으로 5가 출력되도록 A() 내부에 1줄의 코드를 추가하시오.

A a= new A();
System.out.println(a.a);
System.out.println(a.b);
System.out.println(a.c);
System.out.println(a.d);
실행 결과
5
5
5
5

 

반응형