럿고의 개발 노트

[자바의 정석 3rd Edition] Chapter02. 변수 연습문제 풀이 본문

Java Note/자바의 정석 3rd Edition

[자바의 정석 3rd Edition] Chapter02. 변수 연습문제 풀이

KimSeYun 2020. 1. 29. 15:31

Chapter02. 연습문제

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

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

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

long regNo = 9308231234567;
  • int는 최대 10자리까지만 저장할 수 있는 데, 주민등록번호는 총 13자리이기 때문에 10자리보다 더 큰 long타입으로 저장하여야 한다.
    (long타입은 최대 19자리 까지 저장 가능)

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

답 : 2

  • byte가 기본형이며, Byte는 객체(참조형)이다. 대소문자를 구분하자!

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

System.out.println("1" + "2"); // 12(String)
System.out.println(true + ""); // true(String)
System.out.println('A' + 'B'); // 65 + 66 = 131
System.out.println('1' + 2); // 49 + 2 =51
System.out.println('1' + '2'); // 49 + 50 = 99
System.out.println('J' + "ava"); // Java(String)
System.out.println(true + null); // 오류(boolean은 문자열을 제외한 나머지와는 연산 불가능

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

  1. if // 조건문
  2. True // true가 키워드로, 대소문자를 구분한다.
  3. NULL // null이 키워드로, 대소문자를 구분한다.
  4. Class // class가 키워드며, 대문자는 키워드가 이님
  5. System // 키워드가 아님
  • 대문자로 시작하면 웬만해서 키워드가 아니다.

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

  1. $ystem
  2. channel#5 // 특수문자는 $, _만 사용가능
  3. 7eleven // 첫 글자 숫자 불가능
  4. If
  5. 자바
  6. new // 키워드 사용 불가
  7. $MAX_NUM
  8. hello@com // 특수문자는 $, _만 사용가능
  • 식별자 규칙
    1. 대소문자 구분, 길이 제한 없음
    2. 예약어(키워드) 사용 불가
    3. 숫자로 시작 안됨
    4. 특수문자는 _, $만 허용
    5. 한글도 사용이 가능하지만, 사용하지 않는 것이 좋음

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

  1. int // 4byte
  2. long // 8byte
  3. short // 2byte
  4. float // 4byte
  5. double // 8byte
  • 참조형은 4byte로 주소체계이다.

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

byte b = 10;
char ch = 'A';
int i = 100;
long l = 1000L;
  1. b = (byte)i; // 큰타입을 저장하는 것이기 때문에 생략 불가능
  2. ch = (char)b; // 범위가 달라서 형변환 필요
  3. short s = (short)ch; // 범위가 달라서 형변환 필요
  4. float f = (float)l; // float범위가 long범위보다 더 크기 떄문에 생략 가능
  5. i = (int)ch; // 더 작은 타입을 저장하는 것이 때문에 생략 가능

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

216 = 65536(0 ~ 65535)

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

  1. byte b = 256; // 값이 더 크기 때문에 초기화가 되지 않음.
  2. char c = ''; // 반드시 한 개의 문자를 지정해줘야 함.
  3. char answer = 'no'; // char타입은 한문자만 저장 가능하기 때문에 초기화 되지 않음
  4. float f = 3.14; // 접미사를 붙여줘야 하기 때문에 형변환 필요.
  5. double d = 1.4e3f; // 자동 형변환이 되어서 초기화 됨

2-12. 다음 중 main메서드의 선언부로 알맞은 것은?(모두 고르시오)

  1. public static void main(String[] args)
  2. public static void main(String args[])
  3. public static void main(String[] arv)
  4. public void static main(String[] args)
  5. static public void main(String[] args) // public과 static은 위치가 바뀌어도 됨.
  • 1, 2, 3, 5

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

  1. boolean = false
  2. char = \u0000
  3. float = 0.0 // 기본값은 0.0f임.(0.0은 0.0d에서 d가 생략된 것으로 double의 기본값이다.)
  4. int = 0
  5. long = 0 // 기본값은 0L이다. 0은 int형의 기본값
  6. String = "" // 모든 참조형의 타입의 기본값은 null

출처

Comments