1.참 또는 거짓
만약 거짓이면, 이유를 설명하여라.
a. 배열에 저장된 값은 모두 같은 유형이어야 한다.
= 참.
b. 모든 자바 배열의 인덱스는 1로부터 시작된다.
= 거짓. 0부터 시작한다.
c. 자바 배열은 많아야 65,535항목을 저장할 수 있다.
= 거짓. 정수형이며 음수는 저장 불가능하다.
d. 2차원 배열은 배열들의 배열이다.
= 참.
e. 배열이 메소드로 전달될 때, 인수(argument) 배열의 값이 매개변수(parameter) 배열로 복사된다.
= 거짓. 배열의 값이 아닌 주소가 복사된다.
f. 일단 선언되면, 배열 참조의 값을 변경할 수 없다
=거짓. 변경 가능하다.
g. 일단 선언되면, 배열 요소의 값을 변경할 수 없다.
= 거짓. 변경가능하다.
h. 일단 선언되면, 배열의 크기를 변경할 수 없다.
= 참.
i. 자바에서는 3차원 배열을 금지한다.
= 거짓. 사용가능하다.
j. 자바 배열의 인덱스 값은 정수이어야 한다..
= 참.
2. 오류 설명
swap(a[0],a[1]) 문이 a[0]과 a[1]에 저장된 값을 교환하지 못하는 이유를 설명하여라.
public static swap(int x, int y){
int temp=x;
x=y;
y=temp;
}
= swap메소드가 호출될 때 배열의 값 (a[0],a[1])이 복사되어 전달되어지기 때문에 값을 바꿔도 배열에는 영향을 끼치지 못한다.
5. 값 추적
다음 코드를 실행한 후에 a배열에 저장된 값들은 무엇인가?
int []a = new int[10];
a[0]=0;
a[1]=1;
for(int i=2;i<a.length;i++)
a[i]=2*a[i]-1-a[i-2];
a[0] = 0, a[1] = 1, a[2] = 2 , a[3] = 3, a[4] = 4, a[5] = 5, a[6] = 6, a[7] = 7, a[8] = 8
a[9] = 9
6. 값 추적
각각의 iii, iv, v, vi, vii 행을 실행한 후에 a와 b의 배열에 저장된 값을 결정하여라.
i. int[] a=new int[10];
ii. int[] b=new int[10];
iii. for(int i=0;i<a.length;i++)
a[i]=2*i-1;
iv. for(int i=0;i<b.length;i++)
b[i]=2*i+1;
v. for(int i=0;i<a.length;i++)
a[i]=b[i]-1;
vi. a=b;
vii. b=a;
iii.
a = -1 1 3 5 7 9 11 13 15 17
b = 0 0 0 0 0 0 0 0 0 0
iv.
a = -1 1 3 5 7 9 11 13 15 17
b = 1 3 5 7 9 11 13 15 17 19
v.
a = 0 2 4 6 8 10 12 14 16 18
b = 1 3 5 7 9 11 13 15 17 19
vi.
a = 1 3 5 7 9 11 13 15 17 19
b = 1 3 5 7 9 11 13 15 17 19
vii.
a = 1 3 5 7 9 11 13 15 17 19
b = 1 3 5 7 9 11 13 15 17 19
7. 컴파일러 실행
다음 각 코드에서 오류(들)을 찾아라.
a. char[] a = new char[10];
a[10]='s';
a[9]=76;
= a[9]까지 존재하기 때문에 a[10]은 잘못되었다.
b. char[] a = new char[19];
char[9]='s';
= 배열에 접근할 때 이름[인덱스] 이기 때문에 a[9]='s'; 가 맞다.
c. char[] a= new int[10];
a[0]='s';
a[1]=80;
= 선언한 타입과 생성한 타입이 다르다.
d. int[] a;
a=new int[255];
a[0]='s'
a[a[0]]=35;
a[35]=12,345,654,321;
= int 값은 2,147,483,467까지 표현 가능한데 그 범위를 넘어가서 a[35]의 값을 새로 설정해야 한다.
e. int[] a;
a = new int[255];
a[0] = a.length;
a[0]--; a.length--;
a[a[0]] = 2;
= length 값은 수정이 불가능하다. a.length--;는 올바르지 않다.
f. int[] b = new int[9];
int[][] a;
a= new int[255][];
a[0]=b;
a[0][3]=9;
a[3][0]=9;
= a[3]이 가리키는 배열이 없기 때문에 a[3][0]에 값을 쓸 수 없다.
12. 출력 계산
다음 프로그램은 퍼즐에 대해 시작 퍼즐 배열의 해결 가능성을 계산하기 위한 좀 더 세련된 메소드를 보여준다. 손으로 프로그램을 추적해보고, length++와 numSwaps += length 문장이 얼마나 많이 진행되는지를 세어보아라 출력은 무엇인가?
출력 = 9
Unsolvable
실행 4회.
i. int[] a = { -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
출력 = 0
Solvable
실행 0회.
ii. int[] a = { -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 14 };
출력 = 1
Unsolvable
실행 1회.
(i)과 (ii)의 데이터를 사용하여, 이 메소드에 의해 수행되는 단계의 수와 7.10절의 사례연구에서 사용된 좀 더 직관적인 countInversions(...) 메소드에 의해 수행되는 단계의 수를 비교하여라. countInversions(...)에 의해 요구되는 단계의 수는 43-44행에 있는 if문의 실행횟수와 45행의 실행횟수를 더한 것이다.
'솔루션모음 > 자바 기초부터 하나씩' 카테고리의 다른 글
[자바 기초부터 하나씩/10장 연습문제 솔루션 답지 해답] 상속 (0) | 2020.04.01 |
---|---|
[자바 기초부터 하나씩/9장 연습문제 솔루션 답지 해답] 객체와 클래스 (0) | 2020.04.01 |
[자바 기초부터 하나씩/3장 연습문제 솔루션] 반복문 (0) | 2020.03.31 |
[자바 기초부터 하나씩/2장 연습문제 솔루션] true or false (0) | 2020.03.31 |
[자바 기초부터 하나씩/1장 연습문제 솔루션] 자바소개 (0) | 2020.03.31 |
댓글