Do it! 자바 완전 정복

[Do it! 자바 완전 정복] 7장 연습문제

가은(JANE) 2025. 2. 18. 17:11

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);
System.out.println(a.b);
System.out.println(a.d);
System.out.println();
	
a.abc();

false

0

0.0

null

 

0.0

0.0nll

nullfalse

 

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

 

class A{

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

A a  new A();
a.print();
a.print(3);
a.print(5.8);
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}));

System.out.println(a.arraySum({1,2,3}));

 

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

class A{
	void abc(int m) {
		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);
System.out.println(Arrays.toString(n));

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

5

[4,5,6]

  • int m은 기본형(primitive)이므로 메서드에서 변경해도 원본에 영향 ❌
  • int[] n은 참조형(reference type)이므로 메서드에서 변경하면 원본에 영향 ✅

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

 

class A{

	void averageScore(int... scores) {

	if (scores.length == 0) {
		System.out.println(0.0);
		return;
	}

	int sum = 0;

	for (int score : scores) {
		sum += score;
	}

	double average = (double) sum / scores.length;

	System.out.println(average);

}

A a = new A();

a.averageScore(1);			// 1.0
a.averageScore(1,2);		// 1.5
a.averageScore(1,2,3);		// 2.0
a.averageScore(1,2,3,4);	// 2.5

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

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

A a1 = new A(3);
A a2 = new A(0.1, 0.2);

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

class A{
	int m = 3;
    int n = 5;
    void abc(int m, int n){
    	m = this.m;
        n = n;
    }
 }
 
 A a = new A();
 a.abc(7,8);
 System.out.println(a.m);
 System.out.println(a.n);

// 3

// 5