자바 완전 정복 5장 연습문제 풀이
Q1. 배열의 2가지 특징을 기술하시오.
1. 동일한 자료형을 순차적으로 메모리에 확보할 수 있다.
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)); //[7.8, 3.4, 5.6]
System.out.println(Arrays.toString(b)); //[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차원 배열 객체를 생성하고자 한다. 다음 물음에 답하시오.
Q5. 2차원 배열 객체를 생성하고 각 위치에 다음과 같이 값을 초기화하는 코드를 작성하시오.
int [][]a = new int[2][];
//1
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;
//2
a[0] = new int[]{1, 3, 5};
a[1] = new int[]{7, 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]);
}
}
Q7. 다음의 코드의 실행 결과를 쓰시오.
String a = "방가";
String b = new String("방가");
String c = "방가";
String d = new String("방가");
String e = "방가";
String f = new String("방가");
System.out.println(a==b); //false
System.out.println(a==c); //true
System.out.println(a==d); //false
System.out.println(a==e); //true
System.out.println(a==f); //false
System.out.println();
System.out.println(b==c); //false
System.out.println(b==d); //false
System.out.println(b==e); //false
System.out.println(b==f); //false
Q8. String str = "내 이름은 [홍길동]입니다. 나이는 [15]살 입니다"라는 문자열이 있을 때 String 클래스의 메서드를 이용해 String name → "홍길동", int age → 15가 저장되도록 코드를 작성하시오(단, String 클래스의 indexOf(), lastIndexOf(), substring() 메서드는 반드시 한 번 이상 사용해야 함).
String str = "내 이름은 [홍길동]입니다. 나이는[15]살 입니다";
String name;
int age;
int srt1 = str.indexOf("[");
int end1 = str.indexOf("]");
name = str.substring(srt1+1, end1);
int srt2 = str.lastIndexOf("[");
int end2 = str.lastIndexOf("]");
age = str.substring(srt2+1, end2);
System.out.println(name); //홍길동
System.out.println(age); //15