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
기본적인 내용이지만 헷갈리고 모르는 것들이 많네요,,ㅎㅎ
역시 가장 중요한건 기초겠죠? 여러번 반복해서 학습해서 이런 오류가 발생하지 않도록 해야겠어요!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > Java' 카테고리의 다른 글
[java] 자바의 정석 ch4 연습문제 풀이 (0) | 2022.12.19 |
---|---|
[java] 자바의 정석 ch3 연습문제 풀이 (0) | 2022.12.18 |
[java] 클래스(class)를 이용한 메서드(method) (0) | 2022.12.13 |
[java] 자바의 클래스(class)란? (0) | 2022.12.13 |
[java] 22.12.12 심화 문제 풀이 (0) | 2022.12.13 |