이론 정리
변수(variable)
- 값을 저장할 수 있는 메모리의 공간
- 첫 번째 글자는 문자 or ‘&’, ‘_’ → 숫자, 예약어 불가능
리터럴(literal)
- 소스 코드 내에서 직접 입력된 값
- 정수, 실수, 문자, 논리 리터럴
데이터 타입
- 기본 타입(primitive) : 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입
- 정수 타입(byte, char, short, int, long)
- 실수 타입(float, double)
- 논리 타입(boolean)
타입 변환
- 자동(묵시적) 타입 변환
- 강제(명시적) 타입 변환 = 캐스팅(casting)
- int → char : 불가능
- 실수 → 정수 : 소수점이 버려진다.
연습문제
[2-1] 다음 표의 빈 칸에 8개의 기본형(primitive type)을 알맞은 자리에 넣으시오.
- 풀이1byte2byte4byte8byte
논리형 |
boolean |
|
|
|
문자형 |
|
char |
|
|
정수형 |
byte |
short |
int |
long |
실수형 |
|
|
float |
double |
[2-2] 주민등록번호를 숫자로 저장하고자 한다. 이 값을 저장하기 위해서는 어떤 자료형(data type)을 선택해야 할까? regNo라는 이름의 변수를 선언하고 자신의 주민등록번호로 초기화 하는 한 줄의 코드를 적으시오.
[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)이 아닌 것은?
- int
- Byte
- double
- boolean
- 풀이
- 기본형X : b(Byte) → byte
- 기본형 : a(int), c(double), d(boolean)
[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” = 12
- ‘A’ + ‘B’ = 65 + 66 = 131
- ‘1’ + ‘2’ = 49 + 50 = 99
- true + null = 오류
- 문자와 숫자가 같이 쓰일 때, 자동으로 아스키코드로 변환되서 사용된다.
- ‘J’ + “ava” = Java
- ‘1’ + 2 = 49 + 2 = 51
- true + “” = true
-
[2-6] 다음 중 키워드가 아닌 것은?(모두 고르시오)
- if
- True
- NULL
- Class
- System
- 풀이
- True → true
- NULL → null
- Class → class
[2-7] 다음 중 변수의 이름으로 사용할 수 있는 것은? (모두 고르시오)
- $ystem
- channel#5
- 7eleven
- If
- 자바
- new
- $MAX_NUM
- hello@com
- 풀이
- $ystem → 특수문자 $ 사용 가능
- channel#5 → 특수문자 # 불가능
- 7eleven → 앞에 숫자 불가능
- If → 가능
자바 → 한글 불가능
- new → 예약어 불가능
- $MAX_NUM → 특수문자 $ 사용 가능
- hello@com → 특수문자 @ 불가능
[2-8] 참조형 변수(reference type)와 같은 크기의 기본형(primitive type)은? (모두 고르시오)
- int
- long
- short
- float
- double
- 풀이
- 참조형 변수는 64bit JVM을 사용하면 8byte : double
- 32bit JVM을 사용하면 4byte : int, float
[2-9] 다음 중 형 변환을 생략할 수 있는 것은? (모두 고르시오)
byte b = 10;
char ch = 'A;
int i = 100;
long l = 1000L;
a. b = (byte)i;
b. ch = (char)b;
c. shrot s = (short)ch;
d. float f = (flaot)l;
e. i = (int)ch;
- 풀이
- int(4) → byte(1) 크기가 작기 때문에 불가능
- byte(1) → char(2) 음수는 변환 불가능
- char(2) → short(2) 크기는 같지만, 음수 변환 불가능
- long(8) → float(4) 크기가 작아서 실수 생략 가능하므로 가능
- char(2) - int(4) 가능
[2-10] char 타입의 변수에 저장될 수 있는 정수 값의 범위는? (10진수로 적으시오)
[2-11] 다음 중 변수를 잘못 초기화 한 것은? (모두 고르시오)
a. byte b = 256;
b. char c = '';
c. char answer = 'no';
d. float f = 3.14
e. double d = 1.4e3f;
- 풀이
- byte : -128~127 불가능
- char : 한개의 문자가 아니라 불가능
- char : 두개의 문자 불가능
- 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)
[2-13] 다음 중 타입과 기본값이 잘못 연결된 것은? (모두 고르시오)
a. boolean - false
b. char - '\\u0000' // 16진수 저장
c. float - 0.0
d. int - 0
e. long - 0
f. String - ""
- 풀이e. 리터럴 뒤에 L 생략되어 있어서 불가능
- f. String의 기본 값은 null
- c. 리터럴 뒤에 f 생략되어 있어서 불가능