Java의 정석 : 3rd Edition, 2016을 개인 학습용으로 정리한 내용입니다.
"ppt 파일 자료, 연습문제"를 학습 용도로 배포할 수 있음을 고지하셨습니다.
저자님께 감사드립니다.
[2-1] 다음 표의 빈 칸에 8개의 기본형(primitive type)을 알맞은 자리에 넣으시오.
종류 / 크기 | 1 byte | 2 byte | 4 byte | 8 byte |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
[2-2] 주민등록번호를 숫자로 저장하고자 한다. 이 값을 저장하기 위해서는 어떤 자료형(data type)을 선택해야 할까? regNo라는 이름의 변수를 선언하고 자신의 주민등록번호로 초기화 하는 한 줄의 코드를 적으시오.
나의 답: String regNo = "980000-2000000";
문자열로 작성후 앞 6자리, 뒤 7자리를 추출하여 저장하려는 의도였으나, 문제의 핵심은 숫자로 저장이었다.
정답: long regNo = 9800002000000L;
주민등록번호는 13자리의 정수이다. 이는 int형의 범위를 넘어서는 값이므로 long형을 사용해야 한다.
(접미사 'L' 빠뜨리지 않도록 유의)
[2-3] 다음의 문장에서 리터럴, 변수, 상수, 키워드를 적으시오.
int i = 100;
long l = 100L;
final float PI = 3.14f;
- 리터럴 : 100, 100L, 3.14f
- 변수 : i, l
- 키워드 : final, int, long, float // 자료형은 키워드가 아닌 줄 알았다.
- 상수 : PI
[2-4] 다음 중 기본형(primitive type)이 아닌 것은?
a. int
b. Byte
c. double
d. boolean
[2-5] 다음 문장들의 출력결과를 적으세요. 오류가 있는 문장의 경우 괄호 안에 '오류‘ 라고 적으시오.
System.out.println(“1” + “2”) → ( 12 )
System.out.println(true + “”) → ( true ) // 오류: 빈 문자열을 사용할 수 없는 char 타입으로 생각.
System.out.println(‘A' + 'B') → ( 131 ) // 오류: char는 한 글자만 저장할 수 있으므로 오류로 생각.
System.out.println('1' + 2) → ( 51 ) // 오류: char + int 간 연산이 불가능하다고 생각.
System.out.println('1' + '2') → ( 99 ) // 12: 문자열처럼 결합으로 생각.
System.out.println('J' + “ava”) → ( Java )
System.out.println(true + null) → ( 오류 )
int 형보다 작은 타입(byte, char, short)들은 연산 시 int 타입으로 형변환된 후 연산이 수행된다.
'A' + 'B' → 65('A' 문자코드) + 66('B' 문자코드) → 131
'1' + 2 → 49('1' 문자코드) + 2 → 51
'1' + '2' → 49('1' 문자코드) + 50('2' 문자코드) → 99
// 문제를 풀 땐 생각나지 않았는데, 답안을 보니 생각났다.
[2-6] 다음 중 키워드가 아닌 것은? (모두 고르시오)
a. if
b. True
c. NULL
d. Class
e. System // Class, System도 if 처럼 예약어로 생각했다.
[2-7] 다음 중 변수의 이름으로 사용할 수 있는 것은? (모두 고르시오)
a. $ystem
b. channel#5
c. 7eleven
d. If
e. 자바
f. new
g. $MAX_NUM // 예약어 X, 첫 글자 숫자 X, 특수문자 $,_만 허용
h. hello@com
[2-8] 참조형 변수(reference type)와 같은 크기의 기본형(primitive type)은? (모두 고르시오)
a. int // 4byte
b. long
c. short
d. float // 4byte
e. double
[2-9] 다음 중 형변환을 생략할 수 있는 것은? (모두 고르시오)
byte b = 10;
char ch = 'A';
int i = 100;
long l = 1000L;
a. b = (byte)i;
b. ch = (char)b; // byte(1byte) 부호있는 정수, char(2byte) 부호없는 정수 : 범위가 다르므로 형변환 필요
c. short s = (short)ch;
d. float f = (float)l; // 실수형의 저장 방식으로 인해 float(4byte)의 저장 범위가 더 크므로 생략 가능.
e. i = (int)ch;
[2-10] char타입의 변수에 저장될 수 있는 정수 값의 범위는? (10진수로 적으시오)
0~65535
[2-11] 다음중 변수를 잘못 초기화 한 것은? (모두 고르시오)
a. byte b = 256;
b. char c = '';
c. char answer = 'no'; // no가 두 글자였지...
d. float f = 3.14
e. double d = 1.4e3f;
[2-12] 다음 중 main메서드의 선언부로 알맞은 것은? (모두 고르시오)
a. public static void main(String[] args)
b. public static void main(String args[])
c. public static void main(String[] arv)
d. public void static main(String[] args)
e. static public void main(String[] args) // public과 static은 위치가 바뀌어도 무방.
[2-13] 다음 중 타입과 기본값이 잘못 연결된 것은? (모두 고르시오)
a. boolean - false
b. char - '\u0000'
c. float - 0.0 // 접미사 누락 : 0.0이 아닌 0.0f
d. int - 0
e. long - 0
f. String - ""
'Java의 정석 : 3rd Edition' 카테고리의 다른 글
[Java의 정석 - 연습문제] Chapter07. 객체지향 프로그래밍 II(OOP) (2) | 2023.01.03 |
---|---|
[Java의 정석 - 연습문제] Chapter06. 객체지향 프로그래밍 I(OOP) (0) | 2022.12.01 |
[Java의 정석 - 연습문제] Chapter05. 배열(Array) (0) | 2022.11.23 |
[Java의 정석 - 연습문제] Chapter04. 조건문과 반복문(if, switch, for, while) (0) | 2022.11.13 |
[Java의 정석 - 연습문제] Chapter03. 연산자(Operator) (0) | 2022.11.01 |