본문 바로가기

오답노트/Java

변수 연습문제

▶문제1

 

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

 

 

[정답]

1
2
3
4
5
6
7
public class Practice {
 
    public static void main(String[] args) {
        int regNo = 9502038593029;
        long regNo = 9504030293019L;
    }
}
cs

 

[풀이]

-. int는 4byte로 대략 10억까지의 값만 담을 수 있기에 주민번호같은 큰 수는 long으로 변수를 선언한다.

-. int를 콘솔에 출력시키면 type int is out of range라는 오류가 발생한다.

 

 

 

▶문제2

 

다음의 문장에서 리터럴, 변수, 상수, 키워드를 구분해서 적으시오.
int i = 100;
long l =100L;
final float PI = 3.14f;

 

[정답]

-. 리터럴: 100/ 100L/ 3.14f

-. 변수: i/l

-. 상수: Pl

-. 키워드: int/ long/ final float

 

 

[풀이]

-. 키워드는 미리 예약해놓은 단어를 뜻한다. 특별한 의미를 가지고 있는 명령어로 if, switch, void, byte, public, package, null....등등 java에서 어떠한 의미가 있는 단어는 모두 키워드이다.

 

 

▶문제3

 

다음 중 기본형(primitive type)이 아닌 것은?
a. int
b. Byte 
c. double
d. boolean

 

 

[정답]

b. Byte 

 

[풀이]

-. Java는 대소문자 구별을 정확하게 하는 프로그램이다.

-. Byte => byte가 되어야한다.

-. 반드시 첫문자를 대문자로 표기해야하는 경우 

    a) Class 선언할 때

    b) 카멜표기법 사용할 때

 

 

▶문제4

 

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

 

[정답]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Practice {
 
     public static void main(String[] args) {
 
      1) System.out.println("1" + "2"); //→ ( 12 )
 
      2) System.out.println(""+ true);// → ( true )
        
      3) int A= 65, B= 66;
        System.out.println(A + B);// → ( 131 )
 
      4) int i = 49;
        System.out.println(i + 2);// → ( 51 )
 
     5)int k = 49, j = 50;
        System.out.println(k + j);// → ( 99 )
 
      6)System.out.println('J' + "ava");// → ( Java )
        
      7)System.out.println(true + null);// → ( 오류 )
              
     }
 }
 
cs

 

[풀이]

-. 1) 문자열 + 문자열

-. 2) "" 사용방법: 변수 초기화 시킬 때, 문자 형변환 할 때

-. 6) Char과 String의 만남으로 문자열 + 문자열

-. 7) null은 값이 없다로 0조차 아니다라는 의미이다. 값자체가 없기에 출력이 불가하다.

만약 true + "4"였다면 true4로 정상출력 가능함

 

 

▶문제5

다음 중 키워드가 아닌 것은?(모두 고르시오)
a. if
b. True
c. NULL
d. Class
e. system

 

[정답]

a,b,c,e

 

[풀이]

자바는 대소문자를 구분하는 프로그램이다. b는 true, c는 null d는 calss 가 되어야 키워드가 될 수 있으며, e system은 아무런 의미가 없는 단어로 키워드가 아니다.

 

▶문제6

 

다음 중 변수의 이름으로 사용할 수 있는 것은?
a. $ystem.
b. channel#5
c. 7eleven
d. if
e. 자바
f. new
g. $MAX_NUM
h. hello@com

 

[정답]

a, e

 

 

[풀이]

b. 사용할 수 없는 특수문자

c. 숫자로 시작 불가능

d. 예약어 사용 불가능

e. 한글사용은 가능하나 권장하지 않음

f. 예약어 사용 불가능

g. 자바 대문자는 카멜표기법을 위해 소문자로 사용한다

h. 사용할 수 없는 특수문자

 

 

 

▶문제7

 

참조형변수(reference type)과 같은 크기의 기본형(primitive type)은?
a. int
b. long
c. short
d. float
e. double

 

 

[정답]

a. d (4byte)

b. e (8byte)

 

-. 풀이(https://velog.io/@doli0913/%EA%B8%B0%EB%B3%B8%ED%98%95%EA%B3%BC-%EC%B0%B8%EC%A1%B0%ED%98%95)

 

 

기본형과 참조형

자바의 값의 종류(데이터의 타입)은 크게 "기본형" 과 "참조형"으로 나눌 수 있다. 참조형은 우리가 작성하는 "클래스" 타입으로, 참조 변수에 저장된다. 참조변수는 4byte 또는 8byte 의 데이터를 저

velog.io

RAM 내부의 논리적 메모리공간은 각 1byte 로 구성되며 양수를 인덱스로 가진다.
참조변수는 "메모리주소"를 저장하는 변수이므로, 참조변수의 크기가 4byte 라는 것은 양수로 2^32.
즉, 약 40억가지의 값을 표현할 수 있는 것인데, 메모리주소로 보았을때에, 약 40억개의 인덱스, 40억 byte 의 메모리공간[4GB]분량의 메모리주소를 저장할 수 있게 된다
-> OS 와 JVM 의 사용 메모리를 제외한 자바 프로그램 사용메모리는 2G도 안된다.

 

최근에는 64bit(8byte) OS 나 64bit(8byte) JVM 을 사용하므로, 참조변수는 8byte 의 크기를 가지며, 표현할 수 있는 값의 범위는 2^64 이다.
그러므로 참조 변수가 다룰 수 있는 메모리공간은 160경 byte, 1600만 TB 만큼의 메모리공간이다. 하지만 실제로 사용할 수 있는 메모리공간은 TB 정도이다.

 

 

▶문제9

 

다음중 변수를 잘못 초기화 한 것은? (모두 고르시오)
a. byte b = 256; 
b. char c = '';
c. char answer = 'no'; 
d. float f = 3.14 
e. double d = 1.4e3;

 

 [정답]

a

 

[풀이]

a) byte는 2byte로 범위를 넘는 값으론 초기화 불가능

b) char은 공백 포함 한개 이상의 문자를 지정해야한다

c) char 은 문자 하나 'n'만 저장 가능

d) 3.14f 필요

e) double은 실수형으로 문자 e 저장 불가능

 

 

 

▶문제10

 

다음 중 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)

[정답]

d

 

[풀이]

void는 반드시 main 앞에 있어야한다.

 

 

▶문제11

 

다음 중 타입과 기본값이 잘못 연결된 것은? (모두 고르시오)
a. boolean - false
b. char - '\u0000'
c. float - 0.0 
d. int - 0
e. long - 0 
f. String - ""

 

[정답]

b,c,e

 

[풀이]

b) 문자 하나만 들어가야함

c) 0.0f

e) longL

 

 

 

출처

https://blog.naver.com/study_d_b/222078607741