티스토리 뷰
[2-1] 다음 표의 빈 칸에 8개의 기본형(primitive type)을 알맞은 자리에 넣으시오.
크 기 종 류 |
1 byte |
2 byte |
4 byte |
8 byte |
논리형 |
boolean |
|
|
|
문자형 |
|
char |
|
|
정수형 |
bit |
short |
int |
long |
실수형 |
|
|
float |
double |
[2-2] 주민등록번호를 숫자로 저장하고자 한다. 이 값을 저장하기 위해서는 어떤 자료형 (data type)을 선택해야 할까? regNo라는 이름의 변수를 선언하고 자신의 주민등록번호로 초기화 하는 한 줄의 코드를 적으시오.
작성 답안: int regNo = 1234569876543;
정답: long regNo = 1234569876543L;
※ 숫자 범위가 int 범위를 넘음
[2-3] 다음의 문장에서 리터럴, 변수, 상수, 키워드를 적으시오.
int i = 100; long l =100L; final float PI = 3.14f;
작성 답안
- 리터럴 : int, long, float
- 변수 : i, l, PI
- 키워드 : final
- 상수 : 3.14f
정답
- 리터럴 : 100, 100L, 3.14f
- 변수 : i, l
- 키워드 : int, long, final, float
- 상수 : PI
[2-4] 다음 중 기본형(primitive type)이 아닌 것은?
a. int b. Byte c. double d. boolean
작성 답안: b
정답: b
※ 기본형: boolean, byte, short, char, int, long, float, double 총 8개
[2-5] 다음 문장들의 출력결과를 적으세요. 오류가 있는 문장의 경우, 괄호 안에 ‘오류’라고 적으시오.
작성 답안
System.out.println(“1” + “2”) → ( 12 ) System.out.println(true + “”) → ( true )
System.out.println(‘A' + 'B') → ( AB ) System.out.println('1' + 2) → ( 오류 )
System.out.println('1' + '2') → ( 오류 ) System.out.println('J' + “ava”) → ( Java )
System.out.println(true + null) → ( 오류 )
정답
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) → ( 오류 )
[해설] 문자열과 덧셈연산을 하면 그 결과는 항상 문자열이 된다.
문자열 + any type → 문자열 + 문자열 → 문자열
any type + 문자열 → 문자열 + 문자열 → 문자열
"" + 7 → "" + "7" → "7" // 빈 문자열을 더해서 숫자를 문자열로 변환한다. 7 + "" → "7" + "" → "7"
7 + " " → "7" + " " → "7 " " " + 7 → " " + "7" → " 7"
7 + "7" → "7" + "7" → "77"
7 + 7 + "" → 14 + "" → "14" + "" → "14" "" + 7 + 7 → "7" + 7 → "7" + "7" → "77"
true + "" → "true" + "" → "true" null + "" → "null" + "" → "null"
※ 문자(char)와 문자(char)의 덧셈은 int형으로 변환된 후에 연산이 진행됨
※ ‘A’ = 65, ‘B’ = 66, ‘1’ = 49, ‘2’ = 50
[2-6] 다음 중 키워드가 아닌 것은?(모두 고르시오)
a. if b. True c. NULL d. Class e. System
작성 답안: a, b
정답: b, c, d, e
[해설] 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-7] 다음 중 변수의 이름으로 사용할 수 있는 것은? (모두 고르시오)
a. $ystem b. channel#5 c. 7eleven d. If
e. 자바 f. new g. $MAX_NUM h. hello@com
작성 답안: a, d, g
정답: a, d, e, g
[해설] 변수의 이름(identifier)은 다음과 같은 규칙이 있다.
1. 대소문자가 구분되며 길이에 제한이 없다.
- True와 true는 서로 다른 것으로 간주된다.
2. 예약어를 사용해서는 안 된다.
- true는 예약어라서 사용할 수 없지만, True는 가능하다.
3. 숫자로 시작해서는 안 된다.
- top10은 허용하지만, 7up는 허용되지 않는다.
4. 특수문자는 '_'와 '$'만을 허용한다.
- $harp은 허용되지만, S#arp은 허용되지 않는다.
[2-8] 참조형 변수(reference type)와 같은 크기의 기본형(primitive type)은? (모두 고르시오)
a. int b. long c. short d. float e. double
작성 답안: a, d
정답: a, d
[해설] 모든 참조형 변수는 4 byte이므로, 크기가 4 byte인 기본형 타입을 고르면 된다.
[2-9] 다음 중 형변환을 생략할 수 있는 것은? (모두 고르시오)
byte b = 10;
char ch = 'A';
int i = 100;
long l = 1000L;
a. b = (byte)i; b. ch = (char)b; c. short s = (short)ch;
d. float f = (float)l; e. i = (int)ch;
작성 답안: c, e
정답: d, e
[해설]
a. b = (byte)i; // int(4byte) → byte(1byte)이므로 반드시 형변환 필요
b. ch = (char)b; // byte(1byte) → char(2byte)이지만 범위가 달라서 형변환 필요
c. short s = (short)ch; // char,short은 2byte이지만 범위가 달라서 형변환 필요
d. float f = (float)l; // float(4byte)의 범위가 long(8byte)보다 커서 생략가능
e. i = (int)ch; // char(2 byte) → int(4byte)이므로 생략가능
[2-10] char타입의 변수에 저장될 수 있는 정수 값의 범위는? (10진수로 적으시오)
작성 답안: 0 ~ 127
정답: 0 ~ 65535
[해설] char는 2 byte(2*8=16bit)이므로 ‘2의 16제곱’개의 값을 표현할 수 있다.
2의 16제곱은 65536개이며, 0을 포함해야 하므로 0~65535(모두 65536개)가 char범위가 된다.
[2-11] 다음중 변수를 잘못 초기화 한 것은? (모두 고르시오)
a. byte b = 256; b. char c = ''; c. char answer = 'no';
d. float f = 3.14 e. double d = 1.4e3f;
작성 답안: a(범위 초과), c(글자수 초과), d(f 생략. double만 생략 가능)
정답: a, b, c, d
[해설]
a. byte b = 256; // byte의 범위(-128~127)를 넘는 값으로 초기화 할 수 없음.
b. char c = ''; // char는 반드시 한 개의 문자를 지정해야함
c. char answer = 'no'; // char에 두 개의 문자를 저장할 수 없음.
d. float f = 3.14 // 3.14는 3.14d의 생략된 형태. 접미사f를 붙이거나 형변환필요
e. double d = 1.4e3f; // double(8byte)에 float값(4byte)을 넣는 것이므로 OK
[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
정답: a, b, c, e
[해설]
a. public static void main(String[] args)
b. public static void main(String args[])
c. public static void main(String[] arv) // 매개변수 args의 이름은 달라도 됨
d. public void static main(String[] args) // void는 반드시 main앞에 와야 한다.
e. static public void main(String[] args) // public과 static은 위치가 바뀌어도 됨
※ 배열을 의미하는 기호인 ‘[]’는 타입 뒤에 붙여도 되고 변수명 뒤에 붙여도 되기 때문에 'String[] args'와 ‘String args[]'는 같은 뜻이다.
[2-13] 다음 중 타입과 기본값이 잘못 연결된 것은? (모두 고르시오)
a. boolean – false b. char - '\u0000' c. float - 0.0
d. int – 0 e. long – 0 f. String - ""
작성 답안: 없음
정답: c, e, f
[해설]
c. float - 0.0 // float는 0.0f가 기본값. 0.0은 0.0d에서 접미사 d가 생략된 것
e. long - 0 // long은 0L이 기본값.
f. String - "" // String은 참조형 타입. 모든 참조형 타입의 기본값은 null
'프로그래밍 언어 > Java(연습 문제)' 카테고리의 다른 글
[자바의 정석 연습문제] 3. 연산자 (0) | 2016.10.06 |
---|
- Total
- Today
- Yesterday
- java
- Pte
- 설명
- 스택
- System
- ADODB
- 왕초보 영어회화 100일의 기적
- 교육센터
- tdataset
- RA
- 작문
- 정렬
- 독해
- Reference
- SysUtils
- SWT
- 알고리즘
- Delphi
- VCL
- 상황
- wfd
- 일기
- 문법
- 영어
- 말하기
- 대상
- 여행영어 100일의 기적
- 자료구조
- 계산기
- 응용
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
26 | 27 | 28 | 29 | 30 | 31 |