1. JAVA/자바의 정석

자바의 정석 기초편 Chapter 2 < 연습문제 및 해설 >

yoons.Dev 2022. 4. 9. 19:52

☆ 각 문제의 정답은 [더보기] 를 눌러 확인 할 수 있다.


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

종류                      크기 1byte 2byte 4byte 8byte
논리형        
문자형        
정수형        
실수형        
더보기

[정답]

 

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

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

  1. if
  2. True
  3. NULL
  4. Class
  5. System
더보기

[정답] 2,3,4,5

[해설] 2번의 경우 Java에서는 대소문자를 구별하기에 true는 키워드이지만 True는 키워드가 아니다.

아래는 java에서 사용하는 키워드이다.

abstract default if package this
assert do goto private throw
boolean double implements protected throws
break else import public transient
byte enum instanceof return true
case extends int short try
catch false interface static void
char final long strictfp volatile
class finally native super while
const float new switch  
continue for null synchronized  

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

 

더보기

[정답] 0 ~ 65535

[해설] char는 2byte(2*8=16bit)이므로 '2의 16제곱' 개의 값을 표현할 수 있다.

2의 16제곱은 65536개이며, 0 을 포함해야하므로 0~65535(모두 65536개)가 char범위가 된다.


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

  1. byte b = 256; 
  2. char c='';
  3. char answer = 'no';
  4. float f = 3.14
  5. double d = 1.4e3f;
더보기

[정답] 1,2,3,4

[해설]

1. byte의 범위(-128 ~ 127)를 넘는 값으로 초기화 할 수 없다.

2. char는 반드시 한 개의 문자를 지정해야한다.

3. char에 두 개의 문자를 저장할 수 없다.

4. 3.14는 3.14d의 생략된 형태이다. 접미사 f 를 붙이거나 형변환이 필요하다.

5. double(8byte)에 float값(4byte)을 넣는 것이므로 가능하다.

=======

접미사가 있는 자료형은 long, float, double 모두 세 개의 자료형이며, 접미사는 대소문자를 구별하지 않는다. double은 접미사를 생략할 수 있으므로 float리터럴에는 반드시 접미사를 붙여야한다.


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

 

int i = 100;
long l = 100L;
final float PI = 3.14f;
-리터럴 : 
-키워드 : 
-변수 :
-상수 :
더보기

[정답]

-리터럴 : 100, 100L, 3.14f 
-키워드 : int, long, final, float 

-변수 : i, l

-상수 : PI 


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

 

1. int
2. Byte
3. double
4. boolean

 

더보기

[정답] 2

[해설] 기본형은 boolean, byte, short, char, int, long, float, double 모두 8개이다. 그 외의 타입은 모두 참조형이다.


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

 

System.out.println(“1” + “2”) → (      ) 
System.out.println(true + “”) → (      ) 
System.out.println(‘A' + 'B') → (      ) 
System.out.println('1' + 2) → (      ) 
System.out.println('1' + '2') → (     ) 
System.out.println('J' + “ava”) → (      ) 
System.out.println(true + null) → (      ) 

 

더보기

[정답] 

12

true

131

51

99

Java

오류 

 

[해설] 오류의 이유 =  true는 boolean type이고 null 은 null type이라 출력오류가 뜬다.

 

문자열과 덧셈연산을 하면 그 결과는 항상 문자열이 된다.

문자열 + any type → 문자열 + 문자열 → 문자열
any type + 문자열 → 문자열 + 문자열 → 문자열

하지만 문자와 문자의 덧셈연산의 결과는 int 형 정수값이 된다. 왜냐하면 int형보다 작은 타입 (byte, char, short)은 int형으로 변환된 후에 덧셈연산이 진행되기 때문이다.

'A' + 'B'의 경우, char + char → int + int → int의 과정을 통해 최종결과는 int형 정수값이 된다.

 

'A' + 'B' → 65 + 66 →  131 // 'A' 와 'B'의 문자 아스키코드 값은 각각 65 와 66이다.

'1' + 2 →  49 + 2 → 51   // '1' 의 아스키코드 값은 49이다.

'1' + '2' → 49 + 50 → 99  // '1' 과 '2' 의 아스키코드 값은 49 와 50 이다.


[2-8] 아래는 변수 x , y, z의 값을 서로 바꾸는 예제이다. 결과와 같이 출력되도록 (1)에 알맞은 코드를 넣으시오

 

public class Exercise2_8 {
	public static void main(String[] args) {
        int x = 1;
        int y = 2;
        int z = 3;

        /*===============================
        (1) 알맞은 코드를 넣어 완성하시오.
        ===============================*/

        System.out.println("x=" +x);
        System.out.println("y=" +y);
        System.out.println("z=" +z);
	}
}
[실행결과]
x=2
y=3
z=1
더보기

[정답]

int tmp = x;

x = y;

y = z;

z = tmp;