본문 바로가기

BackEnd/Java

[java] 자바의 정석 ch2 연습문제 풀이

728x90
반응형

2-1) 8개의 기본형을 알맞게 정리하시오

 

풀이)

                 크기
 종류
1 byte 2 byte 4 byte 8 byte
논리형 boolean      
문자형   char String  
정수형 byte short int long
실수형     float double

 

▷ boolean은 0과 1만 받으므로 1비트로 충분하지만, 자바의 최소 단위는 1byte입니다.

 

 

 

2-2) 주민등록번호를 숫자로 저장하고자 한다. 이 값을 저장하기 위해서는 어떤 자료형(data type)을 선택해야 할까? regNo라는 이름의 변수를 선언하고 자신의 주민등록번호로 초기화하는 한 줄의 코드를 적으시오.

 

풀이) long regNo = 1234561234567L;

 

 13자리의 숫자이기 때문에 long 타입으로 정의합니다. long type에는 숫자 뒤에 L을 붙여야합니다.

 

 

 

2-3) 다음의 문장에서 리터럴, 변수, 상수, 키워드를 적으시오.

 

int i = 100;
long l = 100L;
final float PI = 3.14f;

리터럴(값) : 100, 100L, 3.14f

 변수 : i, l

키워드 : int, long, final, float

상수 : PI

 

 

2-4) 다음 중 기본형(primitive type)이 아닌 것은? 

a. int  b. Byte c. double d. boolean

풀이) b : Byte의 첫글자가 대문자이기 때문이네요,,ㅎㅎ

 

 

2-5) 다음 문장들의 출력 결과를 적으세요. 오류가 있는 문장의 경우, 괄호 안에 '오류'라고 적으시오. 

 

풀이)

System.out.println("1" + "2");    → ( 12 )  : 문자형으로 받습니다.
System.out.println(true + "");    → (true)  : 문자형으로 받습니다.
System.out.println('A' + 'B');    → (131 )  : A(65) + B(66)  => 아스키 코드
System.out.println('1' + 2);      → ( 51 )  : 1(49) + 2      => 아스키 코드
System.out.println('1' + '2');    → ( 99 )  : 1(49) + 2(50)  => 아스키 코드
System.out.println('J' + "ava");  → (Java)  : 문자형으로 받습니다.
System.out.println(true + null);  → (에러)  : null 값은 출력할 수 없습니다.

 

 

 

2-6) 다음 중 키워드가 아닌 것은? (모두 고르시오)

 

a. if b. True c. NULL d. Class e. System

 

풀이) b, c, d, e

 

▷ true, null, class는 소문자일때만 키워드입니다. 따라서, 해당사항이 없습니다.

말장난이네요,,ㅎㅎ

 

▷ 키워드 : 특정 용도로 사용하기 위해서 자바 프로그램에 미리 예약되어 있는 명령으로, 이미 선언된 명령, 즉 다른 변수나 클래스, 메소드명 등으로 사용할 수 없는 제한된 단어입니다.

 

 

 

2-7) 다음 중 변수의 이름으로 사용할 수 있는 것은?(모두 고르시오)

 

a. $ystem b. channel#5 c. 7eleven d. If
e. 자바 f. new g. $MAX_NUM h. hello@com

 

풀이) a, d, e, g

 

▷ 특수문자는 '_', '$' 외에는 사용할 수 없습니다.

▷ 숫자가 맨 앞에 올 수 없습니다.

▷ 예약어도 변수로 사용할 수 없습니다.

 

 

 

2-8) 참조형 변수(reference type)와 같은 크기의 기본형(primitive type)은? (모두 고르시오.)

 

a. int b. long c. short d. float e. double

 

풀이) a, d

 

▷ 참조형 변수는 4byte

 

 

 

2-9) 다음 중 형변환을 생략할 수 있는 것은? (모두 고르시오)

 

byte b = 10;
char ch = 'A';
int i = 100;
long l = 1000L;

b = (byte)i;           //int(4byte) → byte(1byte)이므로 반드시 형변환 필요합니다.
ch = (char)b;          //byte(1byte) → char(2byte)이지만 범위가 달라서 형변환 필요합니다.
short s = (short)ch;   //char, short(2byte)이지만 범위가 달라서 형변환 필요합니다.
float f = l;           //float(4byte) → long(8byte) 보다 범위가 커서 생략 가능합니다.
i = ch;                //char(2byte) → int(4byte)이므로 생략 가능합니다.

 

풀이) d, e

 

 

 

2-10) char 타입의 변수에 저장될 수 있는 정수 값의 범위는? (10진수로 적으시오)

 

풀이) char 타입은 2byte입니다. 즉 16비트이고 0~2^16까지 저장됩니다.

 

 

 

2-11) 다음 중 변수를 잘못 초기화 한 것은? (모두 고르시오)

 

a. byte b = 256;              // byte는 2^8(-128~127)까지이므로 잘못 초기화 했습니다. 
b. char c = '';               // char에는 빈 문자열을 입력할 수 없습니다.
c. char answer = 'no';        // char에는 문자열 하나만 입력할 수 있습니다.
d. float f = 3.14             // 마지막에 'f', ';'를 넣어줘야합니다.  3.14를 double로 인식하기때문.
e. double d = 1.4e3f;

 

풀이) a, b, c, d

 

 

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)

 

풀이) a, b, c, e

 

▷ public과 static 위치 변경 가능합니다.

▷ 배열이므로 대괄호 위치는 상관 없습니다

▷ args는 이름이 변경 가능합니다.

 

 

 

2-13) 다음 중 타입과 기본값이 잘못 연결된 것은? (모두 고르시오)

 

a. boolean - false
b. char - '\u0000'
c. float - 0.0              → 0.0f
d. int - 0
e. long - 0                 → 0.0(d)
f. String - ""              → null(반드시 소문자)

 

풀이) c, e, f

 

 

기본적인 내용이지만 헷갈리고 모르는 것들이 많네요,,ㅎㅎ

역시 가장 중요한건 기초겠죠? 여러번 반복해서 학습해서 이런 오류가 발생하지 않도록 해야겠어요!!

 

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형