자바 실전# 이론 연습문제: 프로그래밍 기초~상속

codePark·2020년 5월 15일
0

Java-실전편

목록 보기
2/3
  1. 자바에서는 클래스들을 용도나 목적별로 그룹을 묶어 관리한다.
    이에 소스파일 첫 줄에 기입해야 하는 그룹 생성 구문은?
    ex.ncs.text -> package ncs.text;

  2. 자바의 특징을 3개 이상 기술하라.

    1. 객체 지향 언어이다.
    2. OS로부터 독립적이다. (이식성)
    3. 자동적으로 메모리 관리가 이루어진다.(GC = Garbage Collection)
    4. Multi-Thread를 지원한다.
  3. 자바의 Namming Rule에 관해 기술하라.
    3-1. 대문자로 시작이 가능하다.
    (Method와 Variable, apckage: Camel Case 사용. Class 명은 대문자로 시작)
    3-2. 2개의 특수문자를 사용할 수 있다: $ _
    3-3. 숫자를 사용할 수 있으나 첫 글자에는 사용할 수 없다.
    3-4. 한글을 사용할 수 있으나 권장되지는 않는다.

  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이므로)

  5. import에 관해 기술하라.
    5-1. 서로 다른 패키지에 있는 클래스를 참조하기 위함
    5-2. 소스 파일에 여러번 선언이 가능하다.
    5-3. 클래스 선언 이전에 명시해야 한다.
    5-4. 패키지 선언 다음에 명시해야 한다.

  6. 다음 중 형변환을 생략할 수 있는 것은? (복수 답안)
    [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. 자바 소스 코드 컴파일시 명시적으로 코딩하지 않을 경우 자동으로 생성되는 코드는?
    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. 현재 클래스에서 다른 패키지의 클래스를 사용하려면 소스 파일에 어떠한 코드를 추가해야 하는가?
    8-1. import com.kh.java.Sample;

  9. 프로그램을 실행시키는 start up 스위치의 역할을 하는 메소드는?
    9-1. main Method.
    = public static void main(String[] args){}

  10. 변수 선언시 사용되는 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. 연산자의 종류와 우선 순위를 서술하라.
    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. 다음 연산자 중에서 가장 우선 순위가 높은 것은?
    12-1. 삼항 연산자 ( ? : ) (4)
    12-2. 일반 논리 연산자 && (3)
    12-3. 관계(비교) 연산자 >= (2)
    12-4. 쉬프트 연산자 >>> (1)

  13. 삼항 연산자를 사용하여 문자 ch가 가진 값이 대문자인지 물어보는 조건식을 작성하라.
    결과가 참이면 "대문자", 거짓이면 "대문자 아님"을 리턴하라.
    13-1. String result = ((ch >= 'A' && ch <= 'Z') ? "대문자" : "대문자 아님")

  14. 다음의 문장을 에러 없이 처리되도록 완성하라.
    byte b1 = 12;
    byte b2 = 15;
    (int) sum = b1 + b2;
    //정수형의 기본 단위가 int이기 때문에 값은 4byte 메모리에 저장된다. (=자동 형변환)
    //따라서 강제로 (int)형변환을 해 주어야 에러가 나지 않는다!

  15. 다음 실행의 결과값은?
    [byte b = 125; b+= 10;]
    15-1. -121이다.
    byte의 범위는 +128 ~ -128이기 때문에 125+10을 하면 135가 되고,
    Data Overflow가 발생하여 음수 -128로 변환된 후, 여기에 7을 더한 값이 결과가 된다.
    즉, 표현 가능 범위인 128까지는 -128로 변환, 남은 7은 +처리 된다.

  16. 다음 문장의 실행 값은?
    [int num = 10; System.out.println(12*num++);]
    16-1. 120이다. 괄호 안의 후위연산은 근처의 연산을 끝낸 다음 처리된다.
    즉 12*10(num)을 우선 처리하기 때문에 120이 출력되며,
    이후 num의 값을 구한다면 num = 11이 된다.

  17. 다음 문장에 대해 실행 속도를 향상시키기 위한 수정 구문은?
    [int k = 17; k = k << 3;]
    17-1. k <<=3; 이다. *이 부분은 강사님께 질문하여 정확한 이유를 알아내자.

  18. 패키지에 대해 기술하라.
    18-1. 서로 관련 있는 클래스들끼리 그룹으로 묶어 효율적으로 관리한다.
    18-2. 같은 이름의 클래스라도 다른 패키지에 각각 존재할 수 있다.
    18-3. 클래스의 실제 이름은 패키지 명을 포함하고 있다.

  19. 다음 문장을 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를 하지 않아도 된다.

  20. Sample 클래스의 public static void display(){} 메소드를 타 클래스에서 사용하려면?
    20-1. Sample.display();
    클래스명.메소드명();의 문법으로 코드를 작성하면 된다.

  21. 배열에 대해 기술하라.
    21-1. 단일 Type의 여러 Data를 하나의 이름으로 관리할 수 있다.
    21-2. 많은 양의 데이터를 저장하기 위해 사용된다.
    21-3. 배열의 사이즈를 선언하지 않으면 사용할 수 없다.
    21-4. 배열은 객체이며 Reference Type(자료형)이다.

  22. 배열을 선언하거나 초기화 한 것으로 잘못된 것을 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: 배열의 크기를 선언할 때는 배열명이 아닌 데이터 타입명에 선언해야 한다.

  23. 배열의 length를 구하는 방법을 몇 가지 예시를 들어 서술하라.
    23-1. 1차원 배열의 경우 행(row)를 센다. 즉 세로로 몇 줄이 있는지.
    23-2. 2차원 배열의 경우에도 행(row)를 세는 것은 같으나,
    arr[0][2]와 같은 경우에는 열에 몇 개의 값이 들어있는지를 센다.

  24. 접근제한자의 접근 가능 범위가 좁은 것부터 차례대로 접근 가능 범위를 기술하라.
    24-1. private(-): 해당 클래스 안
    24-2. default(~): 해당 패키지 안
    24-3. protected(#): 비상속시 패키지 안, 상속시 패키지 밖, 상속 받은 후속 클래스 안
    24-4. public(+): 패키지 밖에서 import 가능

  25. Overloading과 Overriding에 관해 기술하라.
    25-1. Overloading: 생성자를 중복해서 선언할 수 있다. 즉 기본 생성자와 파라미터 생성자를 같은 생성자 명으로 작성할 수 있는데, 이 때 파라미터의 종류와 값은 달라야 하며, 리턴 타입과 접근 제한자의 종류는 상관치 않는다.
    25-2. Overriding: 상속받은 자식 클래스가 부모 클래스의 메소드를 수정하여 사용할 수 있다. 이 때, 동적으로 명시된 수정 메소드가 우선적으로 실행된다. 또한 Override시 리턴 타입 및 접근 제한자, 파라미터의 종류와 갯수가 같아야 한다.

  26. 클래스에 공용으로 사용할 상수 필드 NUM을 선언하고 100으로 초기화하는 구문을 작성하라.
    26-1. public static final int NUM = 100;

  27. 클래스가 가진 인스턴스 변수가 메모리에 할당될 때의 초기화 순서를 나열하라.
    27-1. JVM이 정한 기본값(ex. String = null; int = 0;)
    27-2. 명시적 초기값. 즉 동적으로 선언한 초기값 (ex. int num = 1;)
    27-3. 초기화 블럭 { 이 안에 작성한 초기화 코드 }
    27-4. 매개변수(파라미터)가 존재하는 생성자

  28. 기본 자료형인 1차원 배열의 특징을 서술하라.
    28-1. 배열의 이름은 레퍼런스(참조 주소)이다.
    28-2. 자료형이 같은 변수들이 연속 나열된 묶음이다.
    28-3. 배열의 값은 Heap에 저장되며, Call Stack에서 참조 주소를 받아온다.
    28-4. 배열 할당시 기본값으로 자동 초기화 된다.

  29. 객체 배열에 대한 설명으로 옳은 것은?
    29-1. 객체 배열은 기본 자료형 2차원 배열과 유사한 레퍼런스 배열이다.
    29-2. 한 번의 할당으로 지정된 갯수만큼 자동 객체가 생성된다.
    // X. 객체 배열의 크기를 선언하고 모든 배열의 공간에 값을 대입하지 않으면 빈 공간에는 null이 선언된다. 이를 출력하면 Null Point Exception 에러가 발생한다.
    29-3. 생성된 객체의 인스턴스 변수에는 쓰레기 값이 들어간다. (X)
    29-4. 메모리에 객체들을 연속 나열한다. (X)
    //배열에 선언한 값들은 Heap에 저장되며, Call Stack에서 그 참조 주소값을 받아온다.

  30. 변수의 life cycle(생명 주기)을 기술하라.
    30-1. 지역 변수(local variable): 메소드 실행시~메소드 종료시
    30-2. 인스턴스 변수(instance variable): 객체 생성시~GC 구동시
    30-3. 정적 변수(static variable): 프로그램 실행시~프로그램 종료시

  31. this 레퍼런스에 관해 기술하라.
    31-1. 생성자와 일반 메소드 안에 기본으로 존재하는 레퍼런스(자료형) 변수이다.
    31-2. 메소드와 생성자 실행시 자동으로 주소를 전달받는다.
    31-3. 정적 메소드에서는 사용이 불가하다.
    31-4. 전달받은 주소로 인스턴스 변수에 접근하는 레퍼런스(자료형)이다.

  32. 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 구독 필요.

  33. Method에 관해 기술하라.
    33-1. 추상화된 대상의 행위(기능)을 담당한다.
    33-2. Method가 호출되면 수행에 필요한 메모리 영역을 할당 받는다.

  34. 식별자로 사용 가능한 것을 골라라:
    //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)

  35. OOP의 4대 특징을 서술하라.
    35-1. Encapsulation (캡슐화)
    35-2. Polymorphism (다형성)
    35-3. Inheritance (상속)
    35-4. Abstraction (추상화)

profile
아! 응애에요!

0개의 댓글