1.참 또는 거짓
만약 거짓이면 이유를 설명하여라.
a.만약 x가 int 형이고 y가 float형이라면, y=x의 대입은 올바르다.
= 참.
b.하나의 문장으로 변수를 선언하고 초기화할 수 있다.
= 참.
c. 문장 x = 2*y = z;는 오류가 발생한다.
= 참.
d. 문장 x = y = 2 * z;는 오류가 발생한다.
= 거짓. z가 선언이 되어있다면 오류가 발생하지 않는다.
e. 문장 int byte = 350;은 오류가 발생한다.
= 참.
f. 문장 int byt= 350;은 오류가 발생한다.
= 거짓. int형은 -2,147,483,468에서 2,147,483,467까지 표현 가능하다.
g. byte x = 350; 은 오류가 발생한다.
= 참.
h. double 형의 변수는 32비트를 사용하여 저장된다.
= 거짓. 64비트를 사용하여 저장된다.
I.두 표현식 3*5/4 와 3.0* 5/4 는 같은 값을 갖는다.
=거짓. 첫 번째 표현식은 3의 값을 갖고 두 번째 표현식은 3.75의 값을 갖는다.
j.두 표현식 3*5/5와 3.0*5/5는 같은 값을 갖는다.
=참.
3.컴파일러실행
다음 각 문장에 대하여 구문 오류가 있다면 찾아보아라. 자바 컴파일러에 의해 발생되는 오류 메시지는 무엇인가?
a. int wives = sacks = cats = 7;
= 구문오류. sacks,cats의 선언이 되지 않았다.
b.int total; total += total=7;
= 구문오류. total의 값이 초기화 되어있지 않으므로 total+=total의 값을 구할 수 없다. 실행을위해선 int total=7; total+=total;이 적절하다.
c. int total = 7; total+= total+=7;
= 구문오류x.
d. int wives, cats, sacks; wives= sacks= cats=7;
= 구문오류x.
e. wives + 1 = wives;
= 구문오류. 우측에서 좌측으로 저장되기 때문에 wives = wives+1;로 고쳐 사용해야한다.
f. int x=7.3;
= 구문오류. int형의 선언이 아닌 double형을 선언해야한다.
g.System.out.println("Wives; "+ wives);
= 구문오류x.
h.System.out.println("Sacks";+sacks);
= 구문오류. 세미콜론의 경우 문장이 끝나는 경우만 사용해야 한다.
i.System.out.println(“Man, + wives, + sack, cats and kits: " +total+7);
= 구문오류x.
j.System.out.println(Man, + wives, + sack, cats and kits: " +total+"7");
= 구문오류x.
4.출력 계산
다음의 코드 일부분에 대한 출력을 구하거나 오류를 지적하여라.
a. int num=5;
num = num++;
System.out.println(num);
출력=5
b. int num = 5;
num = ++num;
System.out.println(num);
출력=6
c. int num = 5;
num = num++ = ++num;
System.out.println(num);
오류. num++와 ++num은 같이 선언될 수 없다.
d. int num = 5;
num /=3;
System.out.println(num);
출력=1
e. int num=5;
System.out.println(num+=5);
출력=10
f. int num=5:
System.out.println(++num + num ++);
오류. num=5;로 고쳐써야한다.
7. 컴파일러 실행
다음 대입문 중 올바르게 작성된 것은 어느 것인가?
a. long number = 145;
= 참
b. long number = 145.0;
= 거짓
c. float pi = 3.14;
= 거짓
d. float pi = 314e-2;
= 거짓
e. short number = (byte) 120;
= 참
f. short number = (byte) 150;
= 참
g.byte number = 150;
= 거짓
h.short number= 150;
= 참
i.char letter = 123;
= 참
j. int a; int b = a = 5;
= 참
k. int a; int b=a=5; boolean c= a==b;
= 참
9.표현식
만약 a,b,c가 int 형이라면, a*b/c와 a*(b/c)의 값은 같은 값인가? 그렇지않다면, 어느부분에서 서로 다른지 예제를 제시하여라.
= 다른 값이다. a*b/c는 연산자 우선순위에 근거하여 순서대로 a*b/c를 계산하는 반면에 a*(b/c) 는 b/c를 우선적으로 계산 후 a를 곱하기 때문에 값이 다르다.
ex)
public class a{
public static void main(String[] args){
int a=10;
int b=4;
int c=3;
System.out.println(a*b/c);
System.out.println(a*(b/c));
}
}
출력 = 13
10
11.데이터 유형과 표현식
byte 형의 변수는 -128에서 127까지의 값을 저장할 수 있다는 사실을 상기하여라. 다음문장
byte x= 127;
x++;
은 ‘바이트 오버플로우(byte overflow)’를 발생시킨다. 어ᄄᅠᆫ 언어에서는 이것을 오류로 간주하지만 자바는 ‘래핑 어라운드(wrapping around)’에 의한 음수로 x++;를 계산한다. 예를들어, 127 + 1은 -128이 된다.
다음의 프로그램 일부분에 대한 출력을 구하여라.
1.byte x = 127;
2. int y = x;
3. x++;
4. y++;
5.System.out.println(x);
6.System.out.println(y);
출력 = -128
128
3행을 x=x+1;로 변경하면 구문오류가 발생하는가? 만약 그렇지 않다면 출력은 무엇인가? 4행을 y=y+1;로 변경하면 구문 오류가 발생하는가? 만약 그렇지 않다면 출력은 무엇인가?
=3행을 x=x+1;로 변경하면 구문오류O
4행을 y=y+1;로 변경하면 구문오류X
출력 = -128
128
'솔루션모음 > 자바 기초부터 하나씩' 카테고리의 다른 글
[자바 기초부터 하나씩/10장 연습문제 솔루션 답지 해답] 상속 (0) | 2020.04.01 |
---|---|
[자바 기초부터 하나씩/9장 연습문제 솔루션 답지 해답] 객체와 클래스 (0) | 2020.04.01 |
[자바 기초부터 하나씩/7장 연습문제 솔루션 답지 해답] 배열 (0) | 2020.03.31 |
[자바 기초부터 하나씩/3장 연습문제 솔루션] 반복문 (0) | 2020.03.31 |
[자바 기초부터 하나씩/1장 연습문제 솔루션] 자바소개 (0) | 2020.03.31 |
댓글