-
[문제해설] 객체 지향언어인 자바(java) 프로그램이다. 출력되는 값은?전자계산기조직응용기사/필기 기출문제 해설 2021. 9. 24. 18:09반응형
전자계산기조직응용기사 필기 기출문제 (1과목 전자계산기프로그래밍-객체지향 언어) - 2019년3회
객체 지향언어인 자바(java) 프로그램이다. 출력되는 값은?
public class StringDemo14 {
public static void main(String args[]) {
String s = "red";
boolean[ ] b = new boolean[1];
if(b[0]) s = "blue";
System.out.println(s);
}
}① null ② red
③ blue ④ 오류발생
- 문제 해설 -
자바(java)의 데이터 타입(data type)에 대한 기본적인 지식을 묻는 문제입니다.
자바에는 기본형 타입(primitive type)과 참조형 타입(reference type)이 있습니다.
이번 문제에서 다루는 기본형 타입의 자료형을 살펴보겠습니다.
분류 자료형 메모리 크기 기본값 논리형 boolean 1 byte false 정수형 byte 1 byte 0 short 2 byte 0 int 4 byte 0 long 8 byte 0L 실수형 float 4 byte 0.0F double 8 byte 0.0 문자형 char 2 byte(유니코드) '\u0000' 위의 표에서 기본값을 잘 기억해야 됩니다. 표준 C언어에서처럼 선언 후 초기값을 넣지 않으면 쓰레기 값을 가지는 언어도 있는 반면 자바는 위 표와 같이 선언 후 기본값을 가집니다.
그리고, 위의 기본형 타입의 자료형이 아닌 것들은 모두 참조형 타입으로 대부분 초기값은 널(NULL) 값입니다. 하지만, 배열의 경우 엄밀히 말해 기본형 타입이 아니고, 참조형 타입으로 분류되지만 기본형 타입의 초기값과 동일합니다. 예를 들어 int 배열은 초기값들이 기본형 타입처럼 0으로 채워집니다.
그럼 문제에서의 코드를 살펴보겠습니다.
01 public class StringDemo14 { 02 public static void main(String args[]) { 03 String s = "red"; 04 boolean[ ] b = new boolean[1]; 05 if(b[0]) s = "blue"; 06 System.out.println(s); 07 } 08 }
03 라인 : string 클래스를 s라는 이름으로 선언하여 초기값을 "red"로 입력하였습니다. 객체지향 언어에서는 string을 자주 사용하다 보니, 기본 자료형으로 착각을 하지만 기본 자료형이 아닌 클래스입니다. 클래스는 참조형 타입입니다.
04 라인 : boolean을 크기 1의 배열로 선언하였습니다. 별다른 초기값을 입력하지 않았으므로, 배열 b[0]의 초기값은 false입니다.
05 라인 : if() 문의 조건이 b[0]입니다. b[0]의 값이 true이면 문자열 s에 "blue" 값을 입력합니다. 하지만, b[0]는 false이므로 아무 작업도 실행되지 않습니다.
06 라인 : 문자열 s를 출력합니다. 출력되는 값은 03 라인에 입력된 "red"가 출력됩니다.
이 문제의 함정은, 자바를 조금 공부하신 분은 배열은 참조형 타입이라고 배웠을 것이고, 참조형 타입의 초기값은 NULL값으로 생각해서 4번 오류 발생으로 선택할 수도 있는 것입니다.(조건문의 조건값이 NULL이면 오류가 발생합니다.)
하지만, 기본형 타입들의 배열은 앞서 설명한 데로 초기값을 가지며, boolean 배열의 초기값은 false이기에 이 문제의 정답은 2번 red 가 됩니다.
https://youtube.com/playlist?list=PLboXycXmAIDuukQ2A6EvMZI-x1IMy3Xc-
반응형'전자계산기조직응용기사 > 필기 기출문제 해설' 카테고리의 다른 글
[문제해설] 시프트 레지스터(shift register)의 내용을 오른쪽으로 한 번 시프트하면 데이터는 어떻게 변하는가? (0) 2021.10.24 [문제해설] 스택 S에서 B, A, D, C를 순서대로 입력시킬 때, 출력을 A, B, C, D 순으로 하기 위한 push와 pop의 횟수는? (0) 2021.10.23 [문제해설] 500[KHz] 클록을 사용하는 시스템의 클록 사이클 시간은? (2) 2021.08.31 [문제해설] FIF0 스케줄링에서 3개의 작업 도착시간과 CPU 사용시간(burst time)이 다음 표와 같다. 이 때 모든 작업들의 평균 반환시간(turn around time)은? (0) 2021.08.29 [문제해설] C 언어에서 x의 연산 결과는? (0) 2021.08.21