이론 정리

변수(variable)

  • 값을 저장할 수 있는 메모리의 공간
  • 첫 번째 글자는 문자 or ‘&’, ‘_’ → 숫자, 예약어 불가능

리터럴(literal)

  • 소스 코드 내에서 직접 입력된 값
  • 정수, 실수, 문자, 논리 리터럴

데이터 타입

  • 기본 타입(primitive) : 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입
    • 정수 타입(byte, char, short, int, long)
    • 실수 타입(float, double)
    • 논리 타입(boolean)

타입 변환

  • 자동(묵시적) 타입 변환
    • byte → char(음수X) : 불가능
  • 강제(명시적) 타입 변환 = 캐스팅(casting)
    • int → char : 불가능
    • 실수 → 정수 : 소수점이 버려진다.

연습문제

[2-1] 다음 표의 빈 칸에 8개의 기본형(primitive type)을 알맞은 자리에 넣으시오.

  • 풀이1byte2byte4byte8byte
    논리형 boolean      
    문자형   char    
    정수형 byte short int long
    실수형     float double

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

  • 풀이
    long regNo = 1234561234567L; 
    // long타입 컴파일러에게 4byte가 아닌 8byte를 알려주기 위해 L를 뒤에 붙여준다.
    
  • 예시) 123456-1234567 = 13자리

[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)이 아닌 것은?

  1. int
  2. Byte
  3. double
  4. 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] 다음 중 키워드가 아닌 것은?(모두 고르시오)

  1. if
  2. True
  3. NULL
  4. Class
  5. System
  • 풀이
    • True → true
    • NULL → null
    • Class → class

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

  1. $ystem
  2. channel#5
  3. 7eleven
  4. If
  5. 자바
  6. new
  7. $MAX_NUM
  8. hello@com
  • 풀이
    1. $ystem → 특수문자 $ 사용 가능
    2. channel#5 → 특수문자 # 불가능
    3. 7eleven → 앞에 숫자 불가능
    4. If → 가능
    5. 자바 → 한글 불가능
      • 이클립스에서는 한글 사용 가능!!!
    6. new → 예약어 불가능
    7. $MAX_NUM → 특수문자 $ 사용 가능
    8. hello@com → 특수문자 @ 불가능

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

  1. int
  2. long
  3. short
  4. float
  5. 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;
  • 풀이
    1. int(4) → byte(1) 크기가 작기 때문에 불가능
    2. byte(1) → char(2) 음수는 변환 불가능
    3. char(2) → short(2) 크기는 같지만, 음수 변환 불가능
    4. long(8) → float(4) 크기가 작아서 실수 생략 가능하므로 가능
    5. char(2) - int(4) 가능

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

  • 풀이
    • 0~65536 = 2^16-1

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

a. byte b = 256;
b. char c = '';
c. char answer = 'no';
d. float f = 3.14
e. double d = 1.4e3f;
  • 풀이
    1. byte : -128~127 불가능
    2. char : 한개의 문자가 아니라 불가능
    3. char : 두개의 문자 불가능
    4. 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)
  • 풀이
    • a, b, c, e

[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 생략되어 있어서 불가능

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 스택 프레임(Stack Frame)  (0) 2022.06.28
[자바의 정석] 연습문제 2. 연산자  (0) 2022.06.23
[JAVA] 자바 메모리 구조 - Heap, Stack, JVM, GC  (0) 2022.06.23
Ch06. 클래스  (0) 2022.01.02
Ch05. 참조 타입  (0) 2022.01.01

+ Recent posts