2021. 12. 8. 17:28ㆍSolution`/Java
[6장 1번]
import에 대한 다음 질문에 답하라.
(1) import 문은 언제 사용하며, import 문이 의미하는 바는 무엇인가?
- 다른 패키지의 클래스를 사용할 때, 컴파일러에게 그 클래스의 경로명을 알려줄 때 사용한다
(2) import java.util.Random;과 import java.util.*;의 의미는 각각 무엇인가?
- import java.util.Random; : util패키지의 Random클래스를 사용
- import java.util.*; : util패키지의 모든 클래스를 사용
(3) import 문을 사용하지 않고도 자바 프로그램을 작성할 수 있는가?
- java.util.Scanner sc = new java.util.Scanner(System.in)과 같이 완전 경로명으로 사용할 수 있다
- 완전 경로명으로 사용하면 번거롭고 불편하기 때문에 import java.util.Scanner;을 선언하고
Scanner sc = new Scanner(System.in);으로 간단하게 사용한다
(4) 어떤 패키지에 속한 클래스는 import문 없이도 사용할 수 있는가?
- Object, String, Math, System등이 있다
[6장 2번]
패키지에 대한 설명 중 잘못된 것은?
1. package 키워드를 이용하여 패키지를 선언한다.
2. 서로 관련된 클래스와 인터페이스들을 하나의 디렉터리에 묶어 놓은 것이다.
3. 패키지는 컴파일된 클래스 파일들을 저장하는 위치를 지정한다.
4. 자바 JDK는 클래스들을 모두 하나의 패키지에 담아 제공한다.
- 4번, 자바 JDK는 패키지들을 모듈(module)이라는 단위로 묶어서 제공
[3~4] 다음은 코드와 실행 결과이다.
import java.util.StringTokenizer;
public class Example {
public static void main(String[] args) {
StringTokenizer st = new StringTokenizer("a=3,b=5,c=6",",");
while(st.hasMoreTokens())
System.out.println(st.nextToken());
}
}
a=3
b=5
c=6
[6장 3번]
import 문을 사용하지 않도록 Example 클래스를 다시 작성하라.
public class Example {
public static void main(String[] args) {
java.util.StringTokenizer st = new java.util.StringTokenizer("a=3,b=5,c=6",",");
while (st.hasMoreTokens())
System.out.println(st.nextToken());
}
}
[6장 4번]
다음과 같이 출력되도록 코드를 수정하라.
a
3
b
5
c
6
합은 14
≫ 풀이
public class Example {
public static void main(String[] args) {
java.util.StringTokenizer st = new java.util.StringTokenizer("a=3,b=5,c=6",",=");
int sum = 0;
while (st.hasMoreTokens()) {
String next = st.nextToken();
try {
sum += Integer.parseInt(next);
System.out.println(next);
}
catch(NumberFormatException e) {
System.out.println(next);
}
}
System.out.println("합은 "+sum);
}
}
[6장 5번]
다음 물음에 답하라.
(1) 다음 클래스를 device 패키지에 속하게 하고자 한다. 빈칸에 적합한 코드를 작성하라.
______________________;
public class TV {
private int size;
public TV(int size) { this.size = size; }
}
- package device;
(2) 앞에서 작성한 TV 클래스를 활용하는 Home 클래스를 작성한다. Home 클래스를 app 패키지에 저장하고자 할 때 빈칸에 적합한 코드를 작성하라.
______________________;
______________________;
public calss TV {
private int size;
public TV(int size) { this.size = size; }
}
- package app;
- import device.TV;
(3) TV 클래스와 Home 클래스를 컴파일한 TV.class 와 Home.class의 경로명은?
- device.TV.class, app.Home.class
[6장 6번]
Wrapper 클래스에 대한 질문이다. 다음 물음에 답하여라.
(1) 정수 20을 문자열 변수 s1에 "20"으로 저장하는 코드를 작성하라.
String s1 = Integer.toString(20);
(2) 문자열 "35.9"를 double 타입 변수 d에 실수 값 35.9로 저장하는 코드를 작성하라.
double d = Double.parseDouble("35.9");
(3) "ture" 문자열을 boolean 타입 변수 b에 불린 값 true로 저장하는 코드를 작성하라.
boolean b = Boolean.parseBoolean("true");
(4) 정수 30을 이진수의 문자열로 변환하여 s2에 저장하는 한 줄의 코드를 작성하라.
String s2 = Integer.toBinaryString(30);
(5) 문자 'c'를 문자열 "c"로 변환하여 변수 c에 저장하는 한 줄의 코드를 작성하라.
String c = Character.toString('c');
[6장 7번]
다음 코드의 실행 결과와 실행 결과의 이유를 말하라.
String a = "가나다라";
System.out.println(a == "가나다라");
String b = new String(a);
System.out.println(a == b);
true
false
- "가나다라"는 자바 내부에 리터럴 테이블에 저장되고, a는 해당 리터럴 테이블을 가리킨다. new String(a)에 의해 생성된 스트링 객체 b는 힙 메모리에 독립적으로 생성된다. 스트링 리터럴은 자바 내부에서 리터럴 테이블로 특별 관리해서, 동일한 리터럴을 공유하지만, new String()으로 생성된 객체는 힙 메모리에 생성되어서 독립적으로 관리된다.
따라서 a == "가나다라"는 true가 되고, a == b는 false가 된다
[6장 8번]
다음 코드가 실행된 후 a, b, c 문자열은 무엇인가?
String a = new String(" Oh, Happy ");
String b = a.trim();
String c = b.concat(" Day.");
- Oh, Happy Day.
[6장 9번]
다음 코드에 대해 물음에 답하여라.
String a = "Hello";
String b = "Hello";
String c = "Java";
String d = new String("Hello");
String e = new String("Java");
String f = new String("Java");
(1) a와 == 연산을 수행하였을 때 true가 되는 문자열을 b~f 중 모두 골라라.
- b
(2) f와 equals() 연산을 수행하였을 때 true가 되는 문자열을 a~e중 모두 골라라.
- c, e
[6장 10번]
다음 중 자동 박싱과 자동 언박싱이 있는 부분을 파악하라.
(1) Double PI = 3.14;
- Double PI = Double.valueOf(3.14); : 자동 박싱
(2) double pi = PI;
- double pi = PI.doubleValue(); : 자동 언박싱
(3) System.out.println(3 + Integer.valueOf(5));
- Integer.valueOf(5).intValue() : 자동 박싱
(4) if('c' == Character.valueOf('c');
- Character.valueOf('c').charValue() : 자동 박싱
[6장 11번]
100에서 255까지(255 포함)의 난수를 10개 발생시키는 코드이다.
for(int i=0; i<10; i++) {
System.out.println( );
System.out.println(" ");
}
192 207 131 249 204 120 132 207 194 236
(1) Math 클래스를 활용하여 빈칸에 적절한 코드를 작성하라.
for(int i=0; i<10; i++) {
System.out.println((int)(Math.random()*156+100));
System.out.println(" ");
}
(2) Random 클래스로 난수를 발생시키도록 코드 전체를 재작성하라.
import java.util.Random;
public class test {
public static void main(String[] args) {
Random r = new Random();
for(int i=0; i<10; i++) {
System.out.print(r.nextInt(156)+100);
System.out.print(" ");
}
}
}
[6장 12번]
다음은 2020년 12월 25일의 약속을 저장하기 위해 Calendar 클래스를 활용하는 코드이다. 주석문에 맞도록 코드를 작성하라.
Calendar date = ________________; //Calendar 객체 생성
date.________________; // 현재 Calendar 객체에 저장된 정보를 모두 지운다.
date.________________; // Calendar 객체에 2020년의 년도 저장
date.________________; // Calendar 객체에 12월의 달 저장 (0~11까지 저장가능)
date.________________; // Calendar 객체에 25일의 날짜 저장
System.out.println("약속 날짜는 "+date.________________+"년 "+
(date.________________+"월 "
+date________________+"일");
≫ 풀이
import java.util.Calendar;
public class test {
public static void main(String[] args) {
Calendar date = Calendar.getInstance(); //Calendar 객체 생성
date.clear(); // 현재 Calendar 객체에 저장된 정보를 모두 지운다.
date.set(Calendar.YEAR, 2020); // Calendar 객체에 2020년의 년도 저장
date.set(Calendar.MONTH, 11); // Calendar 객체에 12월의 달 저장 (0~11까지 저장가능)
date.set(Calendar.DAY_OF_MONTH, 25); // Calendar 객체에 25일의 날짜 저장
System.out.println("약속 날짜는 "+date.get(Calendar.YEAR)+"년 "+
(date.get(Calendar.MONTH)+1)+"월 "
+date.get(Calendar.DAY_OF_MONTH)+"일");
}
}