관리 메뉴

나구리의 개발공부기록

chapter1 - 자바시작하기 확인문제 (일부만), chapter2 - 변수와 타입 확인문제 / 이것이 자바다(개정판) 본문

책 공부/이것이자바다 개정판(도서)

chapter1 - 자바시작하기 확인문제 (일부만), chapter2 - 변수와 타입 확인문제 / 이것이 자바다(개정판)

소소한나구리 2024. 2. 7. 16:07

이것이 자바다 개정판(신용권, 임경균 지음) - java 8 ~ 17대응


챕터1 - 자바시작하기

 

Q1.자바 언어의 특징을 잘못 설명한 것은? - 4번

  1. 안드로이드 애플리케이션뿐만 아니라  사이트를 개발할  사용하는 언어이다
  2. 한 번 작성으로 다양한 운영체제에서 실행할 수 있다.
  3. 객체 지향 프로그래밍 언어이다
  4. 개발자가 코드로 메모리를 관리해야 한다
자바는 OS의 메모리 영역에 직접 접근하지 않고 JVM(Java Virtual Machine)을 통해 간접적으로 접근
JVM의 GC(Gabage Collectior)는 필요하지 않는(사용하지 않는) 오브젝트들을 자동으로 삭제하여 메모리를 관리

 

Q2. 생략

 

Q3. 환경 변수에 대해 잘못 설명한 것은? - 4번

  1. 프로그램에서 사용할 수 있도록 운영체제가 관리한다.
  2. JAVA_HOME은 JDK가 설치된 디렉토리 경로를 가지고 있다.
  3. PATH는 명령 프롬프트 또는 터미널에서 명령어 파일을 찾을 때 이용된다.
  4. 환경 변수를 수정하면 기존 명령 프롬프트 또는 터미널에서 바로 적용된다.
환경 변수를 수정한 후에는 사용중인 명령프롬프트(cmd, 터미널) 또는 파워셀을 닫고 재시작 해야 함

 

Q4. 자바 가상 머신(JVM)에 대해 잘못 설명한 것은? - 3번

  1. java.exe 명령어에 의해 구동된다
  2. 바이트코드를 기계어로 변환하고 실행시킨다
  3. 운영체제에 독립적이다(운영체제별로 동일한 JVM이 사용된다.)
  4. 바이트코드는 어떤 JVM에서도 실행 가능한 독립적 코드이다.
JVM은 운영체제에서 이해하는 기계어로 번역해야 하므로 운영체제별로 다르게 설치됨

 

Q5. 자바 프로그램 개발 과정을 순서대로 작성 - 3 -> 1 -> 2-> 4

  1. javac.exe로 바이트코드 파일(~.class)을 생성한다.
  2. java.exe로 JVM을 구동시킨다.
  3. 자바 소스파일(~.java)을 작성한다
  4. JVM은 main() 메소드를 찾아 메소드 블록을 실행시킨다

Q6. 자바 소스파일을 작성할 때 잘못된 것은? - 4번

  1. 자바 소스 파일명과 클래스명은 대소문자가 동일해야 한다.
  2. 클래스 블록과 메소드 블록은 반드시 중괄호 { } 로 감싸야 한다.
  3. 실행문 뒤에는 반드시 세미콜론(;)을 붙여야 한다.
  4. 주석은 문자열 안에도 작성할 수 있다.
문자열 사이에 주석을 입력하면 주속 기호는 주석문이 아니라 문자열 데이터로 인식 됨

 


챕터2 변수와 타입

 

Q1.변수에 대해 잘못 설명한 것은? - 4번

  1. 변수는 하나의 값만 저장할 수 있다
  2. 변수는 선언 시에 사용한 타입의 값만 저장할 수 있다.
  3. 변수는 변수가 선언된 중괄호 { } 안에서만 사용 가능하다.
  4. 변수는 초기값이 저장되지 않은 상태에서 읽을 수 있다.
초기화 되지 않은 변수를 연산식등에 사용할 경우 컴파일 에러가 발생

 

Q2. 변수 이름으로 사용할 수 없는 것을 모두 선택 - 2,3,6,7번

  1. modelName
  2. class
  3. 6hour
  4. &value
  5. _age
  6. #name
  7. int
자바어(class, int 등)은 변수 이름으로 사용할 수 없음
특수문자는 $와 _만 사용 가능
변수의 첫 글자는 문자와 특수문자($,_)여야 하고 중간부터는 숫자도 가능

 

Q3. 다음 표에 자바의 기본 타입 8개를 작성

타입 \ 크기 1byte 2byte 4byte 8byte
정수타입 byte short
char
int long
실수타입     float double
논리타입 boolean      

 

Q4. 다음 코드에서 타입, 변수 이름, 리터럴에 해당하는 것을 작성

int age;
age = 10;
double price = 3.14;
  • 타입 : int, double
  • 변수 이름 : age, price
  • 리터럴 : 10, 3.14

Q5. 다음 자동 타입 변환에서 컴파일 에러가 발생하는 것을 선택 - 3번

byte byteValue = 10;
char charValue = 'A';
  1. int intValue = byteValue;
  2. int intValue = charValue;
  3. short shortValue = charValue;
  4. double doubleValue = byteValue;
자동 타입 변환은 작은 허용 범위 타입에서 큰 허용 범위 타입에서 대입 될 때 발생
short타입 = char타입 이므로 자동 형변환이 되어야 할 것 같지만,
char타입의 저장범위는 0 ~ 65535이고 short타입의 저장범위는 -32,768 ~ 32,767 이므로 자동형변환이 불가능

 

Q6. 다음 강제 타입 변환에서 컴파일 에러가 발생하는 것을 선택 - 4번

int intValue = 10;
char charValue = 'A';
double doubleValue = 5.7;
String strValue = "A";
  1. double var = (double)intValue;
  2. byte var = (byte)intValue;
  3. int var = (int)doubleValue;
  4. char var = (char)strValue;
String타입을 문자로 형변환 하는 방식은 charAt()를 사용해야한다
"A" -> 'A' // "A".charAt(0)

 

Q7. 변수를 잘못 초기화한 것은? - 3번

  1. int var1 = 10;
  2. long var2 = 10000000000L;
  3. char var3 = '';
  4. float var4 = 10;
  5. String var5 = "abcWndef"
  6. String var6 = """ 
    abc
    def
    """;
문자는 ''(작은따옴표 연속)으로 초기화 할 수 없고 ' '(공백 = 유니코드:32)으로 초기화해야 가능

 

 Q8. 콘솔에 값을 입출력하는 방법에 대해 잘못 설명한 것을 선택 - 3번

  1. System.out.print(변수)는 변수값을 출력시키고 행을 바꾸지 않는다.
  2. System.out.println(변수)는 변수값을 출력시키고 행을 바꾼다.
  3. System.out.printf("형식", 변수)는 주어진 형식대로 변수값을 바꾼다
  4. Scanner의 nextLine() 메소드는 콘솔에 입력된 내용을 문자열로 읽는다.
printf()는 형식 문자열에 맞추어 뒤(변수)의 값을 출력하라는 뜻

 

Q9. 연산식의 타입 변환 중에서 컴파일 에러가 발생하는 것을 선택 - 1번

byte byteValue = 10;
float floatValue = 2.5F;
double doubleValue = 2.5;
  1. byte result = byteValue + byteValue;
  2. int result = 5 + byteValue;
  3. float result = 5 + floatValue;
  4. double result = 5 + doubleValue;
정수 리터럴이 아닌 변수가 피연산자로 사용되면 실행 시 연산을 수행
이때 int타입보다 작은 byte, short타입 변수는 int타입으로 자동 타입 변환되어 연산을 수행
결국 연산 결과를 담을 변수의 타입은 int 타입이여야 함
가급적 타입 변환이 발생하지 않도록 최초의 변수 선언을 int타입이나 더 큰숫자 이면 long타입으로 선언하는 것이 성능에 좋음

 

Q10. 문자열을 기본 타입으로 변환하는 코드로 틀린것 - 2번

String str = "5";
  1. byte var1 = Byte.parseByte(str);
  2. int var2 = Int.parseInt(str);
  3. float var3 = Float.parseFloat(str);
  4. double var4 = Double.parseDouble(str);
int는 Integer.parseInt(str); 로 해야함

Q11. 다음 코드에서 컴파일 에러가 발생하는 라인을 모두 작성 - 13,16

1. int v1 = 1;
2. System.out.prinln("v1: " +v1 );
3. if(ture) {
4.    int v2 = 2;
5.    if(ture) {
6.        int v3 = 2;
7.        System.out.println("v1: " + v1);
8.        System.out.println("v2: " + v2);
9.        System.out.println("v3: " + v3);
10.        }
11.    System.out.print("v1: " + v1);
12.    System.out.print("v2: " + v2);
13.    System.out.print("v3: " + v3);
14.    }
15. System.out.println("v1: " + v1);
16. System.out.println("v2: " + v2);
메소드 블록 {}(중괄호)내에서 선언된 변수는 해당 중괄호 블록 내에서만 사용이 가능하고 밖에서는 사용이 불가능