7.5 ⭐연습문제

jh·2022년 1월 31일
0

Do it! 자바 완전 정복

목록 보기
68/70

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.c);
System.out.println(a.d);
System.out.println();
a.abc();false
0
0.0
null

0.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.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}));


맨 마지막 코드. 메서드에 매개변수를 넘겨주면 선언(int[] array)과 값의 대입(array = {1, 2, 3})이 분리하여 실행됨. int[] a = {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};
 
System.out.println(m);
System.out.println(Arrays.toString(n));5
[4,5,6]

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

class A {

averageScore(int...scores){
void averageScore(int...scores){
int sum = 0;
for(int k : scores){
sum += k
}
double avg = (double)sum/scores.length;
System.out.println(avg);



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(1.0, 2.0);    //두 번째 생성자 이용

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

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
profile
코딩 공부 중...

0개의 댓글