1. 자바의 정석 Chapter2.변수 - 연습문제
2-1. 8개의 기본형 primitive type
| 1 byte | 2 byte | 4 byte | 8 byte | |
| 논리형 | boolean | |||
| 문자형 | char | |||
| 정수형 | byte | short | int | long |
| 실수형 | float | double |
2-2. 주민등록번호를 숫자로 저장하고자 한다. 이 값을 저장하기 위해서는 어떤 자료형을 선택해야 할까? regNo 라는 이름의 변수를 선언하고 자신의 주민등록번호로 초기화 하는 한 줄의 코드를 적으시오.
long regNo = 2111080000000L;
☞ 정수형 타입으로는 보통 int형을 사용하지만, 주민등록번호는 13자리의 정수기이기 때문에 int형의 범위를 넘어서는 값이다. 그래서 long형을 사용해야 한다. 그리고 리터럴의 접미사 'L'을 잊어서는 안된다.
2-3. 다음의 문장에서 리터럴, 변수, 상수, 키워드를 적으시오.
int i = 100;
int l = 100L;
final float PI = 3.14f;
- 리터럴 : 100, 100L, 3.14f
- 변수 : i, l
- 상수 : PI
- 키워드 : int, final, float, long
2-4. 다음 중 기본형(primitive type)이 아닌 것은?
a. int
b. Byte
c. double
d. boolean
☞ 기본형은 boolean, byte, short, char, int, long, float, double 모두 8개이다. 그 외의 타입은 모두 참조형으로 byte는 기본형이지만 대문자 B를 쓴 Byte는 이후 wrapper class 에서 배우게 될 내용이다.
2-5. 다음 문장들의 출력결과를 적으세요. 오류가 있는 문장의 경우, '오류' 라고 적으시오.
① System.out.println( "1" + "2" ) → 12
② System.out.println( true + "" ) → true
③ System.out.println( 'A' + 'B' ) → 131
④ System.out.println( '1' + 2 ) → 51
⑤ System.out.println( '1' + '2' ) → 99
⑥ System.out.println( 'J' + "ava" ) → Java
⑦ System.out.println( true + null ) → 오류
☞
① "1"+"2" 는 문자열 1과 문자열 2가 합해지는 것으로 1+2가 아닌 1이라는 문자와 2라는 문자의 덧셈연산이기 때문에 12가 된다.
② true와 문자열 ""가 만나게 되었기 때문에 자료형이 맞지않아 내부적으로 true를 문자열로 바꿔 true+" " 는 "true"+" "가 된다. 이는 "true+ "가 되고 true가 문자열의 형태로 출력된다.
③ 문자형 char 자료형의 입력값은 'A', 'B' 처럼 ' ' 안에 입력한다. 이 때 문자열 " " 처럼 여러문자를 넣을 수 없으며 공백으로도 둬서는 안되고 반드시 한 개의 문자를 입력해줘야 한다.
[char]
'A'= 65, 'B'= 66, 'C'= 67, 'D'= 68, 'E'=69, 'F'=70, 'G'=71 . . .
'0'= 48, '1'=49, '2'= 50, '3'=51, '4'=52, '5'=53, '6'=54 . . . '16'=65
char 'A'는 65, 'B'는 66이기 때문에 'A'+'B'는 65+66이 되어 131의 값을 갖게 된다.
④ '1'+2 에서 '1'은 49의 값을 갖기 때문에 '1'+2는 49+2가 되고 51의 값을 갖게 된다.
⑤ '1'+'2' 에서 '1'은 49의 값을, '2'는 50의 값을 갖기 때문에 '1'+'2'는 49+50이 되어 99의 값을 갖게 된다.
⑥ 'J'+"ava"에서 'J'와 "ava"의 자료형이 맞지 않기 때문에 'J'는 내부적으로 문자열로 바꿔 "J"+"ava"가 되고 "Java"가 되어 Java가 출력된다.
2-6. 다음 중 키워드가 아닌 것은? (모두 고르시오)
a. if
b. True
c. NULL
d. Class
e. System
☞ Java에서는 대소문자를 구별하기 때문에 소문자 t가 사용된 true는 키워드지만 대문자 T가 사용된 True는 키워드가 아니다. 다음은 Java에서 사용하는 키워드이다.

2-7. 다음 중 변수의 이름으로 사용할 수 있는 것은? (모두 고르시오)
a. $ystem
b. channel#5
c. 7eleven
d. If
e. 자바
f. new
g. $MAX_NUM
h. hello@com
☞
b. channel#5 에서 특수문자 #은 사용할 수 없다. 변수의 이름으로 사용 가능한 특수문자는 오직 $와 _ 2개이다.
c.7eleven 에서처럼 변수의 이름은 숫자로 시작할 수 없다.
d. If 에서 i가 아닌 대문자 I가 사용되었기 때문에 키워드로 사용되는 if와 다른 것으로 구별되기 때문에 가능하다.
f.new 는 Java에서 키워드로 사용되기 때문에 사용할 수 없다.
h.hello@com 에서 특수문자 @은 사용할 수 없다.
2-8. 참조형 변수(reference type)와 같은 크기의 기본형 (primitive type)은? (모두 고르시오)
a. int
b. long
c. short
d. float
e. double
☞ 참조형 변수의 크기는 4byte이다. int(4byte), long(8byte), short(2byte), float(4byte), double(8byte)
2-9. 다음 중 형변환을 생략할 수 있는 것은? (모두 고르시오)
byte b= 10;
char ch = 'A';
int i = 100;
long l = 1000L;
a. b = (byte)i;
b. ch = (char)b;
c. short s = (short)ch;
d. float f = (float)l;
e. i = (int)ch;
☞ 작은 자료형에서 더 큰 자료형으로는 자동 형변환이 가능하지만, 큰 자료형 더 작은 자료형으로는 자동 형변환이 불가능하다.
2-10. char 타입의 변수에 저장될 수 있는 정수 값의 범위는? (10진수로 적으시오)
0~65535
☞ char은 2byte의 자료형으로 8bit가 둘, 즉 16bit 이므로 2의 16제곱개를 표현할 수 있다. 2의 16제곱은 65536이며 0을 포함해야 하므로 0~65535 범위의 수를 저장할 수 있다.
2-11. 다음 중 변수를 잘못 초기화 한 것은? (모두 고르시오)
a. byte b = 256;
b. char c = ' ' ;
c. char answer = 'no' ;
d. float f = 3.14
e. double d = 1.4e3f;
☞
a. byte의 범위는 -128~127으로 256을 담을 수가 없다.
b. char은 반드시 한 개의 문자를 ' ' 안에 포함해야 한다.
c. char은 반드시 한 개의 문자만 ' ' 안에 포함해야 한다.
d. 실수는 기본 자료형을 double로 가지기 때문에 float에 담기 위해서는 접미사 f를 붙이거나 형변환이 필요하다.
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)
☞
b. 배열을 의미하는 [] 는 String의 뒤에 붙어도 되고 변수명 args 뒤에 붙어도 된다.
(String[] args는 String args[]와 의미가 같다.)
c. args는 변수명이기 때문에 args가 아닌 arv로 사용해도 된다.
e. void는 항상 main 앞에 사용되어야 하지만 static과 public은 위치가 바껴도 상관이 없다.
2-13. 다음 중 타입과 기본값이 잘못 연결된 것은? (모두 고르시오)
a. boolean - false
b. char - '\u0000'
c. float - 0.0
d. int - 0
e. long - 0
f. String - " "
☞
d. float 0.0 : 실수의 기본 자료형은 double이기 때문에 float에 값을 담으려면 0.0f로
e. long 0 : 정수의 기본 자료형은 int이기 때문에 0L이 기본값이다.
f. String " " : String은 참조형 타입으로 모든 참조형 타입의 기본값은 null이다.
'Java > Day8' 카테고리의 다른 글
| [Java] 아스키 코드 ASCII & 유니 코드 (0) | 2021.11.12 |
|---|---|
| [Java] Package 패키지 & import java.lang (0) | 2021.11.12 |
| [Java] Java API 도큐먼트 & next와 nextLine (0) | 2021.11.12 |
| [Java] 싱글턴 패턴 Singleton Pattern (0) | 2021.11.11 |
| [Java] 자바의 정석 Chapter3.연산자 - 연습문제 (0) | 2021.11.10 |