Do it! 자바 완전 정복

[Do it! 자바 완전 정복] 5장 연습문제 + 이론 복습

가은(JANE) 2025. 2. 20. 17:40

Q1. 배열의 2가지 특징을 기술하시오.

- 동일한 타입만 묶을 수 있다.

- 객체 생성시 반드시 크기를 지정해야 하며 이후 변경이 불가하다.

Q2. 다음은 int[ ] 자료형에 3개의 정숫값 3, 4, 5를 저장하는 코드다. 각 코드상에서 메모리의 모양을 그리시오 ( 이때 객체가 생성되는 위칫값은 100번지라 가정).

그리기가 너무 헬이다...

Q3. 다음 코드의 출력 결과를 쓰시오.

double[] a = {1.2, 3.4, 5.6};
double[] b = a;
b[0] = 7.8;
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));

[7.8, 3.4, 5.6]

[7.8, 3.4, 5.6]

 

- 참조 자료형:

스택 메모리에 실제 데이터값이 아닌 힙 메모리에 저장된 객체의 위치를 저장하고 있다. 따라서 참조 자료형 변수를 복사하면 실제 데이터가 복사되는 것이 아니라 실제 데이터의 위칫값이 복사된다. 따라서 하나의 참조 변수를 이요해 데이터를 수정하면 다른 참조 변수가 가리키는 데이터도 변하게 되는 것이다.

 

자 그림으로 그려보자...

Q4. 다음과 같이 5개의 원소가 있는 1차원 배열의 모든 원소를 순서대로 출력하는 코드를 for - each문을 이용해 작성하시오.

int[][] a = new int[]{1, 2, 3, 4, 5};

 

for(int k : a){
	System.out.println(k);
}

Q5 ~ Q6. 다음과 같이 참조 변수 a의 이름으로 2차원 배열 객체를 생성하고자 한다. 다음 물음에 답하시오.

1 3 5
7 9  

Q5. 2차원 배열 객체를 생성하고 각 위치에 다음과 같이 값을 초기화하는 코드를 작성하시오.

int[][] a = new int[2][];
// 방법 1
a[0] = new int[]{1,3,5};
a[1] = new int[]{7,9};

// 방법 2
a[0] = new int[3];
a[0][0] = 1;
a[0][1] = 3;
a[0][2] = 5;
a[1] = new int[2];
a[1][0] = 7;
a[1][1] = 9;

Q6. 이중 for문을 이용해 위의 2차원 배열 a의 모든 원소를 출력하는 코드를 작성하시오.(단, 2개의 for 문에 들어갈 조건식에는 반드시 .length를 사용해야 함).

for (int i = 0; i<a.length ; i++){
	for (int j = 0; j<a[i].length; j++){
    	System.out.println(a[i][j]);
    }
}