자바에서는 클래스들을 용도나 목적별로 그룹을 묶어 관리한다.
이에 소스파일 첫 줄에 기입해야 하는 그룹 생성 구문은?
ex.ncs.text -> package ncs.text;
자바의 특징을 3개 이상 기술하라.
자바의 Namming Rule에 관해 기술하라.
3-1. 대문자로 시작이 가능하다.
(Method와 Variable, apckage: Camel Case 사용. Class 명은 대문자로 시작)
3-2. 2개의 특수문자를 사용할 수 있다: $ _
3-3. 숫자를 사용할 수 있으나 첫 글자에는 사용할 수 없다.
3-4. 한글을 사용할 수 있으나 권장되지는 않는다.
다음 연산 문장에서의 result의 값을 각각 기술하라.
4-1. result = var++; (= 10 후위연산)
4-2. result = ++var; (= 11 전위연산)
4-3. result = var+var/var; (= 11 10(var)+1(10/10의 몫))
4-4. result = var + 1; (= 11 10(var)+1이므로)
import에 관해 기술하라.
5-1. 서로 다른 패키지에 있는 클래스를 참조하기 위함
5-2. 소스 파일에 여러번 선언이 가능하다.
5-3. 클래스 선언 이전에 명시해야 한다.
5-4. 패키지 선언 다음에 명시해야 한다.
다음 중 형변환을 생략할 수 있는 것은? (복수 답안)
[byte b= 10; float fl = 3; int i = 100; long l = 1000L;]
6-1. i = (int)b; (int -> int 이므로 형변환이 필요하지 않음)
6-2. fl = (float)b; (같은 형태(정수)이므로 형변환이 필요하지 않음)
6-3. fl = (float)3.14; (정수 -> 소수이므로 형변환 필요)
6-4. short s = (short)fl; (short ->float 이므로 형변환 필요)
자바 소스 코드 컴파일시 명시적으로 코딩하지 않을 경우 자동으로 생성되는 코드는?
7-1. import java.lang.*;
7-2. default constructor (기본 생성자)
7-3. 자동 upcasting
7-4. this
7-5. super()
7-6. return;
7-7. toString()
현재 클래스에서 다른 패키지의 클래스를 사용하려면 소스 파일에 어떠한 코드를 추가해야 하는가?
8-1. import com.kh.java.Sample;
프로그램을 실행시키는 start up 스위치의 역할을 하는 메소드는?
9-1. main Method.
= public static void main(String[] args){}
변수 선언시 사용되는 primitive 자료형에 관해 기술하라.
10-1. byte 정수형. 할당 메모리: 1byte
10-2. boolean 참/거짓 판별. 할당 메모리: 1byte
10-3. int 정수의 기본형. 할당 메모리: 4byte
10-4. float 소수형. 할당 메모리: 4byte
10-5. short 정수형. 할당 메모리: 2byte
10-6. char 문자형. 할당 메모리: 2byte
10-7. double 소수의 기본형. 할당 메모리: 8byte
10-8. long 정수형. 할당 메모리: 8byte
연산자의 종류와 우선 순위를 서술하라.
11-1. 최우선 연산자: () . []
11-2. 단항 연산자: + - ! (자료형) ++ -- ~
11-3. 산술 연산자: / %
11-4. 산술 연산자2: + -
11-4. 쉬프트 연산자: >> << >>>
11-5. 비교 연산자: > < >= <=
11-6. == !=
11-7. 비트 논리 연산자: & ^ |
11-8. 일반 논리 연산자: && ||
11-9. 삼항 연산자: ( ? : )
11-10. 순수대입 연산자: =
11-11. 산술 대입 연산자: += -= = /= %=
11-12. 쉬프트 대입 연산자: <<= >>= >>>=
11-13. 비트 논리 대입 연산자: &= ^= |=
11-14. 나열 연산자: ,
다음 연산자 중에서 가장 우선 순위가 높은 것은?
12-1. 삼항 연산자 ( ? : ) (4)
12-2. 일반 논리 연산자 && (3)
12-3. 관계(비교) 연산자 >= (2)
12-4. 쉬프트 연산자 >>> (1)
삼항 연산자를 사용하여 문자 ch가 가진 값이 대문자인지 물어보는 조건식을 작성하라.
결과가 참이면 "대문자", 거짓이면 "대문자 아님"을 리턴하라.
13-1. String result = ((ch >= 'A' && ch <= 'Z') ? "대문자" : "대문자 아님")
다음의 문장을 에러 없이 처리되도록 완성하라.
byte b1 = 12;
byte b2 = 15;
(int) sum = b1 + b2;
//정수형의 기본 단위가 int이기 때문에 값은 4byte 메모리에 저장된다. (=자동 형변환)
//따라서 강제로 (int)형변환을 해 주어야 에러가 나지 않는다!
다음 실행의 결과값은?
[byte b = 125; b+= 10;]
15-1. -121이다.
byte의 범위는 +128 ~ -128이기 때문에 125+10을 하면 135가 되고,
Data Overflow가 발생하여 음수 -128로 변환된 후, 여기에 7을 더한 값이 결과가 된다.
즉, 표현 가능 범위인 128까지는 -128로 변환, 남은 7은 +처리 된다.
다음 문장의 실행 값은?
[int num = 10; System.out.println(12*num++);]
16-1. 120이다. 괄호 안의 후위연산은 근처의 연산을 끝낸 다음 처리된다.
즉 12*10(num)을 우선 처리하기 때문에 120이 출력되며,
이후 num의 값을 구한다면 num = 11이 된다.
다음 문장에 대해 실행 속도를 향상시키기 위한 수정 구문은?
[int k = 17; k = k << 3;]
17-1. k <<=3; 이다. *이 부분은 강사님께 질문하여 정확한 이유를 알아내자.
패키지에 대해 기술하라.
18-1. 서로 관련 있는 클래스들끼리 그룹으로 묶어 효율적으로 관리한다.
18-2. 같은 이름의 클래스라도 다른 패키지에 각각 존재할 수 있다.
18-3. 클래스의 실제 이름은 패키지 명을 포함하고 있다.
다음 문장을 import 하지 않고 사용하려면?
[import java.util.Scanner; Scanner sc = new Scanner(System.in);]
19-1. java.util.Scanner sc = new java.util.Scanner(System.in);
즉 Scanner의 위치와 변수 선언을 동시에 함으로써 import를 하지 않아도 된다.
Sample 클래스의 public static void display(){} 메소드를 타 클래스에서 사용하려면?
20-1. Sample.display();
클래스명.메소드명();의 문법으로 코드를 작성하면 된다.
배열에 대해 기술하라.
21-1. 단일 Type의 여러 Data를 하나의 이름으로 관리할 수 있다.
21-2. 많은 양의 데이터를 저장하기 위해 사용된다.
21-3. 배열의 사이즈를 선언하지 않으면 사용할 수 없다.
21-4. 배열은 객체이며 Reference Type(자료형)이다.
배열을 선언하거나 초기화 한 것으로 잘못된 것을 2개 골라라.
22-1. int[] arr = {1, 2, 3};
22-2. int[] arr = new int[5];
22-3. int[] arr = new int[5] {1, 2, 3, 4, 5};
22-4. int arr[5];
//답은 3과 4이다.
//3: 중괄호{}안에 변수를 선언한다면 자동으로 배열의 크기가 설정되므로 에러가 난다.
//4: 배열의 크기를 선언할 때는 배열명이 아닌 데이터 타입명에 선언해야 한다.
배열의 length를 구하는 방법을 몇 가지 예시를 들어 서술하라.
23-1. 1차원 배열의 경우 행(row)를 센다. 즉 세로로 몇 줄이 있는지.
23-2. 2차원 배열의 경우에도 행(row)를 세는 것은 같으나,
arr[0][2]와 같은 경우에는 열에 몇 개의 값이 들어있는지를 센다.
접근제한자의 접근 가능 범위가 좁은 것부터 차례대로 접근 가능 범위를 기술하라.
24-1. private(-): 해당 클래스 안
24-2. default(~): 해당 패키지 안
24-3. protected(#): 비상속시 패키지 안, 상속시 패키지 밖, 상속 받은 후속 클래스 안
24-4. public(+): 패키지 밖에서 import 가능
Overloading과 Overriding에 관해 기술하라.
25-1. Overloading: 생성자를 중복해서 선언할 수 있다. 즉 기본 생성자와 파라미터 생성자를 같은 생성자 명으로 작성할 수 있는데, 이 때 파라미터의 종류와 값은 달라야 하며, 리턴 타입과 접근 제한자의 종류는 상관치 않는다.
25-2. Overriding: 상속받은 자식 클래스가 부모 클래스의 메소드를 수정하여 사용할 수 있다. 이 때, 동적으로 명시된 수정 메소드가 우선적으로 실행된다. 또한 Override시 리턴 타입 및 접근 제한자, 파라미터의 종류와 갯수가 같아야 한다.
클래스에 공용으로 사용할 상수 필드 NUM을 선언하고 100으로 초기화하는 구문을 작성하라.
26-1. public static final int NUM = 100;
클래스가 가진 인스턴스 변수가 메모리에 할당될 때의 초기화 순서를 나열하라.
27-1. JVM이 정한 기본값(ex. String = null; int = 0;)
27-2. 명시적 초기값. 즉 동적으로 선언한 초기값 (ex. int num = 1;)
27-3. 초기화 블럭 { 이 안에 작성한 초기화 코드 }
27-4. 매개변수(파라미터)가 존재하는 생성자
기본 자료형인 1차원 배열의 특징을 서술하라.
28-1. 배열의 이름은 레퍼런스(참조 주소)이다.
28-2. 자료형이 같은 변수들이 연속 나열된 묶음이다.
28-3. 배열의 값은 Heap에 저장되며, Call Stack에서 참조 주소를 받아온다.
28-4. 배열 할당시 기본값으로 자동 초기화 된다.
객체 배열에 대한 설명으로 옳은 것은?
29-1. 객체 배열은 기본 자료형 2차원 배열과 유사한 레퍼런스 배열이다.
29-2. 한 번의 할당으로 지정된 갯수만큼 자동 객체가 생성된다.
// X. 객체 배열의 크기를 선언하고 모든 배열의 공간에 값을 대입하지 않으면 빈 공간에는 null이 선언된다. 이를 출력하면 Null Point Exception 에러가 발생한다.
29-3. 생성된 객체의 인스턴스 변수에는 쓰레기 값이 들어간다. (X)
29-4. 메모리에 객체들을 연속 나열한다. (X)
//배열에 선언한 값들은 Heap에 저장되며, Call Stack에서 그 참조 주소값을 받아온다.
변수의 life cycle(생명 주기)을 기술하라.
30-1. 지역 변수(local variable): 메소드 실행시~메소드 종료시
30-2. 인스턴스 변수(instance variable): 객체 생성시~GC 구동시
30-3. 정적 변수(static variable): 프로그램 실행시~프로그램 종료시
this 레퍼런스에 관해 기술하라.
31-1. 생성자와 일반 메소드 안에 기본으로 존재하는 레퍼런스(자료형) 변수이다.
31-2. 메소드와 생성자 실행시 자동으로 주소를 전달받는다.
31-3. 정적 메소드에서는 사용이 불가하다.
31-4. 전달받은 주소로 인스턴스 변수에 접근하는 레퍼런스(자료형)이다.
Oracle 사에서 제공하는 JDK 플랫폼의 종료에 관해 기술하라.
32-1. Desktop(Native) Applicaton: JavaSE
32-2. Server Application: Java EE
32-3. Mobile Application: JavaME
32-4. (2020년 현재) 상업 코드 기반: Oracle JDK
32-5. 오픈 소스 기반의 무료 JDK: Open JDK
32-6. 유료 버전인 Oracle JDK를 사용하려면 java SE Subscription 구독 필요.
Method에 관해 기술하라.
33-1. 추상화된 대상의 행위(기능)을 담당한다.
33-2. Method가 호출되면 수행에 필요한 메모리 영역을 할당 받는다.
식별자로 사용 가능한 것을 골라라:
//Java의 Naming Rule에 의거한다.
34-1. %fred (X)
34-2. #Fred (X)
34-3. _public (O)
34-4. 2fred (X)
34-5. Fred2 (O)
34-6. My$Tom (O)
34-7.나이 (O)
OOP의 4대 특징을 서술하라.
35-1. Encapsulation (캡슐화)
35-2. Polymorphism (다형성)
35-3. Inheritance (상속)
35-4. Abstraction (추상화)