1장. 프로그래밍이란 무엇인가?
- 클래스가 뭔가요?
- 클래스는 객체를 만들기 위한 설계도, 틀이라 할 수 있으며 객체를 생성하는 데 사용합니다.
- 객체란?
- 객체는 클래스에 의해 생성되며 고유의 이름, 상태, 행동을 갖습니다.
- 여기서 상태는 필드, 행동은 메서드로 표현합니다.
- 클래스는 객체를 만들기 위한 설계도, 틀이라 할 수 있으며 객체를 생성하는 데 사용합니다.
- 메서드가 뭔가요?
- 메서드는 클래스 내의 행동을 제공하는 역할을 수행합니다.
- 메서드의 매개 변수는 어디에 적어주나요?
- 메서드의 매개 변수는 메서드 선언 시 사용하는 소괄호 안에 타입과 변수명 순으로 적어주어야 합니다. 두 개 이상의 매개변수가 있을 경우 콤마로 구분합니다.
- 메서드 이름 앞에 꼭 적어줘야 하는 건 뭐죠?
- 메서드 이름 앞에는 항상 리턴타입을 적어주어야 합니다.
- 클래스가 갖고 있어야 한다고 한 두 가지가 뭐죠?
- 클래스는 상태(state)와 행동(behavior)을 가지고 있어야 합니다.
- 메서드에서 결과를 돌려주려면 어떤 예약어를 사용해야 하나요?
- return이라는 예약어를 사용하여 결과를 돌려준다는 것을 명시해야 합니다.
2장. Hello God Of Java
- main() 메서드의 메소드 이름 앞에는 어떤 예약어들이 들어가나요? (순서대로 쓰세요)
- public static void
- public (접근 제한이 없다. 같은 프로젝트 내에 어떤 클래스에서든 접근 가능하다)
- static (객체를 생성하지 않아도 접근 가능한 메서드이다.)
- void (리턴 타입이 없다)
- public static void
- main() 메서드의 매개변수에는 어떤 값이 들어가나요?
- String [] args (스프링문자열의 배열이 들어간다.)
- 만약 여러분들이 만든 클래스에 main() 메서드가 없다면, java 명령어로 그 클래스를 수행할 수 있나요?
- 사용할 수 없다. public static void main(String [] args)로 선언되어 있는 메서드가 클래스 내의 없으면, 해당 클래스는 실행되지 않는다.
- System.out.println() 메서드는 어떤 용도로 사용하나요?
- 내용을 출력하는 데 사용한다.
- System.out.print() 메서드는 System.out.println() 메서드와 어떤 차이가 있나요?
- 출력문 마지막에 줄 바꿈 유무에 차이가 있다.
- System.out.print() 은 줄 바꿈을 하지 않아, 이 메서드 호출 후에 출력 메서드를 호출하면 같은 줄에 출력된다.
- System.out.println()의 경우 메서드 내용을 출력한 다음에 줄 바꿈을 제공한다.
- // 는 무엇을 하는 데 사용하는 기호인가요?
- // 은 한 줄 주석을 의미하며 해당 코드에 // 이후에 모든 내용은 무시된다.
- /* 로 시작하고, */로 끝나는 사이에 있는 소스들을 어떻게 되나요?
- 블록 주석 처리가 된다. 해당 블록 내의 있는 모든 내용들은 무시된다.
- 메서드를 선언할 때 반드시 꼭 있어야 하는 세 가지는 무엇인가요?
- 메서드를 선언할 때는 리턴타입, 메서드 이름, 메서드 내용이 반드시 있어야 합니다.
3장. 자바를 제대로 알려면 객체가 무엇인지 알아야 해요
- 클래스와 객체의 차이점을 말해 주세요
- 클래스는 객체를 만들기 위한 틀이고
- 객체는 클래스의 의해 만들어진 것입니다.
- 즉, 하나의 클래스를 만들면 그 클래스의 모습을 갖는 여러 객체를 생성할 수 있습니다,
- 그러므로, 일반적인 경우 클래스의 메서드나 변수를 사용하려면 객체를 생성해서 사용하여야 합니다.
- 객체를 생성하기 위해서 꼭 사용해야 하는 예약어는 뭐라고 했죠?
- new 키워드를 사용하여 클래스의 객체를 생성합니다,
- 객체를 생성하기 위해서 사용하는 메서드 같이 생긴 클래스 이름에 소괄호가 있는 것을 뭐라고 하나요?
- 객체를 생성하기 위해 생성자가 필요합니다.
- 생성자는 클래스와 같은 이름으로 명시적으로 선언하지 않아도 default로 만들어집니다.
- 생성자는 파라미터를 다르게 오버로딩하여 사용할 수 있으며, 객체 생성 시 자동으로 호출되는 메서드입니다.
- 객체의 메서드를 사용하려면 어떤 기호를 객체이름과 메소드 이름 사이에 넣어주어야 하나요?
- 객체이름. 변수, 객체이름. 메서드이름()과 같은 형태로 메서드를 사용합니다,
- 여러분들이 메서드를 사용하기 위해서는 어떤 것을 만들어야 하나요?
- 클래스의 객체를 생성해야만 메서드를 사용할 수 있습니다.
- 위의 문제에서 만들어야 하는 것은 어떤 예약어를 사용하고, 클래스의 무엇을 사용해야 하나요?
- new 키워드를 사용해 객체를 만들고, 객체가 생성될 때 생성자가 호출됩니다.
4장. 정보를 어디에 넣고 싶은데
- 네 가지 종류 변수는 어떻게 구분할 수 있나요?
- 변수의 종류는 변수를 선언한 위치 및 static 선언 여부로 구분합니다.
- 지역변수: 중괄호 내에서 선언된 변수
- 매개변수: 메서드에 넘겨주는 변수
- 인스턴스변수: 메소드 밖에, 클래스 안에 선언된 변수이며 static이라는 예약어가 없는 변수
- 클래스변수: 메서드밖에, 클래스 안에 선언된 변수 중 타입선언 앞에 static이라는 예약어가 있는 변수
- 변수의 종류는 변수를 선언한 위치 및 static 선언 여부로 구분합니다.
- 일반 변수의 이름을 지을 때 대문자로 시작하는 것은 일반적인 명명규칙이다.
- 일반 변수의 이름 명명규칙은 소문자로 시작하는 것이 일반적입니다.
- 상수는 모두 대문자로 표현합니다.
- 자료형에는 기본 자료형과 어떤 자료형이 있나요?
- 자바의 타입에는 기본자료형과 참조자료형이 있습니다.
- 기본 자료형에는 몇 가지가 있나요?
- 정수형 : byte, short, int, long, char
- 실수형 : float, double
- 논리형: boolean
- 총 8가지의 기본자료형이 있습니다.
- byte는 몇 비트(bit)로 되어 있나요?
- 1 byte = 8bit로 되어있습니다.
- int와 long 중 어떤 타입이 더 큰 숫자를 처리할 수 있나요?
- long형이 더 큰 타입의 숫자를 처리할 수 있습니다.
- 정수형 타입의 공간은 byte < short < ing < long 순이며, 공간이 넓을수록 더 큰 숫자를 표현할 수 있습니다.
- 소수점을 처리하는 타입은 어떤 것이 있나요?
- float, double 타입이 실수형을 처리하는 자료형입니다.
- char는 정수형인가요?
- char 도 정수형입니다.
- a라는 값을 char로 정의할 때 어떤 기호로 감싸주어야 하나요? (기호를 입력하세요)
- 'a'
- true와 false 두 개의 값만을 가지는 타입은 어떤 것인가요
- boolean 타입은 true, false 만이 존재합니다.
5장. 계산을 하고 싶어요.
- 값을 할당할 때 사용하는 연산자의 기호는 무엇인가요?
- 할당연산자는 = 이며, 우측에는 할당할 값, 좌측에는 할당받을 변수를 위치시켜야 합니다.
- 기본적인 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지를 계산할 때 사용하는 연산자의 기호는 순서대로 각각 무엇인가요?
- 사칙연산은 +-*/이며 나머지는 % 연산자로 사용하면 됩니다.
- += 는 무엇을 할 때 사용하는 연산자인가요?
- 기존값에 우측 항의 값을 더할 때 사용하는 연산자입니다.
- 연산의 순서를 모르거나 확실히 하고 싶을 때에는 어떤 기호를 사용해야 하나요?
- 연산자의 우선순위가 혼동될 경우 소괄호()를 이용해 계산의 가독성을 높일 수 있다.
- ==와!=의 차이는 무엇인가요?
- == 은 값이 동등한 지를!= 은 서로 다른 값인지 확인하는 연산자입니다.
- <와 <=의 차이는 무엇인가요?
- 두 연산자의 값은 우측항의 값의 포함여부이다. = 이 있는 연산자는 우측항의 갑을 포함합니다.
- ! 연산자는 어떤 타입에 사용할 수 있나요?
- boolean 타입에만 사용가능하며 해당 결과의 항상 반대로 변환합니다.
- true를 false로 false를 true로 변경해 줍니다.
- ? : 로 표시하는 삼항 연산자의? 와 : 뒤에 명시해 주는 값은 무엇을 의미하나요?
- "? :" 연산자는 값을 간편하게 할당할 때 사용한다.
- 조건 연산식이 true 일 때? 뒤에는 있는 값을, false 일 때는 : 뒤에 값을 지정합니다.
- 자바는 형변환을 한다고 했는데, short의 값을 long에 할당할 때에는 어떤 것을 해 주어야 하나요?
- 작은 범위에서 큰 범위로 형변환 하는 것이기 때문에 자동형 변환이 된다.
- 따로 캐스팅해 줄 필요가 없다.
- 반대로 long값을 short에 할당할 때에는 어떤 것을 해 주어야 하나요?
- long 형에서 short 값으로 범위가 큰 범위에서 작은 범위로 변환되는 것이기 때문에 캐스팅을 해줘야 한다.
- 위의 두 문제에서 어떤 경우가 기존 값이 사라지고, 엉뚱한 값으로 바뀔 수 있나요?
- 큰 범위에서 작은 범위로 변환할 때는 범위가 더 작아지기 때문에 값이 달라질 확률이 매우 높습니다.
6장. 제가 조건을 좀 따져요.
- if 문장의 소괄호 안에는 어떤 타입의 결과가 제공되어야 하나요?
- if 문 소괄호 안에는 boolean 타입의 결과만 올 수 있습니다
- if 조건에 맞지 않는 모든 경우를 처리할 때 사용하는 예약어는 뭔가요?
- "else"라는 예약어를 사용하여 if문 조건에 맞지 않는 모든 경우를 처리합니다.
- switch를 사용할 수 있는 기본 자료형의 타입에는 어떤 것들이 있나요?
- Java6까지는 switch 문에서는 long 형을 제외한 Enum과 몇몇 참조자료형
- Java7부터는 String 도 사용가능하다.
- switch블록 안에서 비교 대상값 앞에 사용하는 예약어는 무엇인가요?
- swithc문에서 각 경우에 대해 처리할 경우 "case"를 사용합니다.
- switch 조건을 빠져나가도록 하는 예약어는 무엇인가요?
- "break" 문을 사용하며 대부분 중괄호 묶여 있는 문장을 빠져나갑니다.
- switch 조건들에 맞지 않을 때 기본 처리를 하기 위한 예약어는 무엇인가요?
- switch의 기본 값은 "default"를 사용합니다.
- while 문의 소괄호 안에는 어떤 형태의 결과가 제공되어야 하나요?
- boolean 타입의 결과만 올 수 있습니다
- while 문을 무조건 한 번은 실행하게 하려면 어떻게 해야 하나요?
- do-while 문을 사용하여 무조건 한번 실행할 수 있게 합니다.
- while문을 마음대로 빠져나가게 하려면 어떤 예약어를 사용하면 되나요?
- break 문을 사용하여 중괄호를 빠져나갑니다.
- while문의 중간에 while문의 소괄호 점검 구문으로 건너뛰도록 할 때 사용하는 예약어는 무엇인가요?
- "continue"라는 예약어를 사용하면 while 문에 조건 확인 부분으로 돌아갑니다.
- for루프의 소괄호 안의 가장 첫 구문(첫 세미 콜론 앞의 문장)은 for루프가 수행되는 동안 몇 번 수행되나요?
- for루프의 세미콜론 구문 중 가장 앞에 있는 구문은 오직 한 번만 수행된다
- for루프의 소괄호 안의 중간에 있는 구문은 어떤 타입의 결과가 제공되어야 하나요?
- for루프의 세미콜론 구문 중 중간에 있는 구문은 boolean 타입의 값이 제공되어야만 합니다.
- for루프의 소괄호 안의 마지막에 있는 구문에서는 어떤 작업을 수행하나요?
- for루프의 세미콜론 구문 중 가장 마지막에 있는 구문은 값을 증가시키거나 감소시키는 등의 반복적인 작업을 수행합니다.
7장. 여러 데이터를 하나에 넣을 수는 없을까요? (Array)
- 배열을 선언할 때 어떤 기호를 변수명의 앞이나 뒤에 사용해야 하나요?
- 대괄호[]를 사용하여 배열을 선언합니다,
- 배열의 첫 번째 위치는 0인가요? 1인가요?
- 배열의 위치는 0부터 시작합니다.
- 배열을 선언할 때 boolean 배열의 크기만 지정했다면 boolean 배열의 [0] 위치에 있는 값은 무엇인가요?
- 숫자 배열의 초기 값은 0, boolean 배열의 초기 값은 false이다.
- ArrayIndexOutOfBoundsException이라는 것은 언제 발생하나요?
- 배열의 범위를 벗어난 값을 참조하려고 할 때 발생합니다.
- 중괄호를 이용하여 배열을 초기화할 때 중괄호 끝에 반드시 어떤 것을 입력해 주어야 하나요?
- 중괄호를 이용하여 배열을 선언할 때, 중괄호를 닫은 다음에 반드시 세미콜론 ; 을 입력해야만 한다.
- 2차원 배열을 정의할 때에는 대괄호를 몇 개 지정해야 하나요?
- 2차원 배열을 지정할 때에는 대괄호를 2개 지정한다.
- 배열을 쉽게 처리해 주는 for 문의 문법은 어떻게 되나요?
- for(타입이름 임시변수명: 반복대상객체){}
- 와 같이 콜론을 사용하여 사용합니다.
- 자바 프로그램에 데이터를 전달해 주려면 클래스 이름 뒤에 어떻게 구분하여 나열하면 되나요?
- main() 메서드의 String [] args 매개변수는 java 명령 실행 시 클래스 이름 뒤에 나열된 값을 취합니다.
- 스페이스로 구분하여 나열됩니다.
- 자바 프로그램이 시작할 때 전달받는 내용은 어떤 타입의 배열인가요?
- String 1차원배열로 값이 전달됩니다.
8장. 참조 자료형에 대해서 더 자세히 알아봅시다
- 생성자는 반드시 만들어야 하나요?
- 다른 생성자가 없을 경우 컴파일 시 기본생성자가 생성됩니다.
- 반드시 생성할 필요는 없으나, 만드는 습관을 가지는 게 좋다.
- 만약 매개변수가 있는 생성자를 만들고, 매개변수가 없는 기본 생성자를 호출하면 어떻게 될까요?
- 컴파일 오류가 발생합니다. 매개변수가 없는 기본 생성자도 오버로딩하여 사용하여야 합니다.
- 생성자의 개수는 제한이 있나요?
- 생성자의 개수는 제한이 없다.
- 인스턴스의 변수와 매개변수나 메서드 내에서 생성한 변수와 구분하기 위해서 사용하는 키워드는 무엇인가요?
- this라는 예약어는 해당 객체를 의미합니다. 따라서 this를 사용하면 인스턴스 변수임을 명시할 수 있습니다.
- 메서드 선언 시 리턴 타입으로 지정한 데이터를 넘겨줄 때 사용하는 키워드는 무엇인가요?
- return이라는 예약어를 사용하여 데이터를 넘겨줍니다.
- 메서드 선언 시 아무 데이터도 리턴 타입으로 넘겨주지 않겠다는 것을 지정하는 키워드는 무엇인가요?
- void 예약어를 사용하여 해당 메서드의 리턴값이 없다는 것을 의미합니다.
- 메소드 선언에 static 이 있는 것과 없는 것의 차이는 무엇인가요?
- static 메서드는 객체생성 없이 클래스 이름만으로 참조할 수 있다.
- 필자가 엄청나게 중요하다고 한 것 중 메서드의 이름은 같으나 매개변수를 다르게 하는 것의 명칭은 무엇인가요?
- 오버로딩은 같은 이름의 메서드를 매개변수나 타입을 다르게 하여 여러 개 정의한 것을 말합니다.
- 기본 자료형을 매개변수로 넘겨줄 때 Pass by value인가요? 아니면 Pass by reference인가요?
- 모든 기본 자료형과 참조 자료형이 매개변수로 넘어갈 때 값이 넘어가는 Pass By Value입니다.
- 참조 자료형을 매개변수로 넘겨줄 때 Pass by value인가요? 아니면 Pass by reference인가요?
- 모든 기본 자료형과 참조 자료형이 매개변수로 넘어갈 때 값이 넘어가는 Pass By Value입니다.
- 단 , 참조 자료형 안에 있는 변수들은 매개변수로 넘어갈 때 참조가 넘어가는 Pass By Reference입니다.
- 매개변수의 수가 가변적일 때 메서드 선언 시 타입과 변수 이름 사이에 어떤 것을 적어줘야 하나요?
- 가변 매개변수를 지정할 때는 "변수타입... 변수명"으로 선언하면 됩니다. 이 선언을 할 때 행당 변수는 매개변수 선의 가장 마지막에 위치해야만 합니다.
- ex) int...arr
9장. 자바를 배우면 패키지와 접근 제어자는 꼭 알아야 해요
- 패키지를 선언할 때 사용하는 예약어는 무엇인가요?
- 패키지 선언 시 package라는 예약어를 사용합니다.
- 패키지 선언은 클래스 소스 중 어디에 위치해야 하나요?
- 패키지 선언은 소스의 가장 위에 위치해야만 합니다.
- 패키지를 선언할 때 가장 상위 패키지의 이름으로 절대 사용하면 안 되는 단어는 무엇인가요?
- 패키지의 이름은 java로 시작하면 안 된다.
- 패키지 이름에 예약어가 포함되어도 되나요?
- 중간에라도 예약어가 패키지의 이름으로 선언되어도 안된다.
- import는 클래스 내에 선언해도 되나요?
- import는 클래스 선언 전에 명시되어 있어야만 한다.
- 같은 패키지에 있는 클래스를 사용할 때 import를 해야 하나요?
- 같은 패키지에 있는 클래스와 java.lang 패키지에 있는 클래스들은 별도로 import 할 필요가 없습니다.
- 특정 패키지에 있는 클래스들을 모두 import 할 때 사용하는 기호는 무엇인가요?
- * 기호로 사용하면 해당 패키지에 있는 모든 클래스를 import 합니다.
- 클래스에 선언되어 있는 static 한 메서드나 변수를 import 하려면 어떻게 선언해야 하나요?
- import static을 사용하여 static 한 메서드나 변수를 쉽게 import 합니다.
- 접근 제어자 중 가장 접근 권한이 넓은 (어떤 클래스에서도 접근할 수 있는) 것은 무엇인가요?
- public 접근제어자는 접근권한이 없어 어떤 클래스에서도 접근할 수 있습니다.
- 접근 제어자 중 가장 접근 권한이 좁은 (다른 클래스에서는 접근할 수 없는) 것은 무엇인가요?
- private 접근제어자는 해당 클래스 내에서만 접근 가능합니다.
- 접근 제어자 중 같은 패키지와 상속관계에 있는 클래스만 접근할 수 있도록 제한하는 것은 무엇인가요?
- protected-private 제어자는 같은 패키지와 상속관계받은 클래스만 접근할 수 있습니다.
- Calculate.java라는 자바 소스가 있을 경우, 그 소스 내에는 Calculate라는 클래스 외에는 ( )으로 선언된 클래스가 있으면 안 된다. 여기서 괄호 안에 들어가야 하는 것은 무엇인가요?
- 자바 소스에는 파일명과 동일한 public으로 선언한 클래스가 존재해야만 합니다.
10장. 자바는 상속이라는 것이 있어요
- 상속을 받는 클래스의 선언문에 사용하는 예약어는 무엇인가요?
- extends 예약어를 사용하여 클래스의 상속받아 확장한다.
- 상속을 받은 클래스의 생성자를 수행하면 부모의 생성자도 자동으로 수행된다.
- 확장을 한 클래스가 생성자를 호출하면, 자동으로 부모클래스의 "기본 생성자"가 호출됩니다.
- 부모 클래스의 생성자를 자식 클래스에서 직접 선택하려고 할 때 사용하는 예약어는 무엇인가요?
- super라는 예약어를 사용하면 부모 클래스를 의미합니다. 이 super를 메서드처럼 super()로 사용하면 부모 클래스의 생성자를 호출할 수 있습니다.
- 메서드 Overriding과 Overloading을 정확하게 설명해 보세요
- 오버로딩은 같은 이름의 메서드를 타입이나 개수를 달리하여 여러 개 정의한 것입니다.
- 오버라이딩은 상위 타입의 메서드를 하위 타입에서 재정의한 것입니다.
- A가 부모, B가 자식 클래스라면 A a=new B(); 의 형태로 객체 생성이 가능한가요?
- 부모 변수명 = new 자식()과 같이 부모타입으로 자식클래스의 객체 생성이 가능합니다.
- 왜냐하면 자식클래스는 부모클래스의 모든 내용을 상속받아 사용하기 때문입니다.
- 자식 변수명 = new 부모()인 경우 부모는 자식이 갖고 있는 모든 것을 가질 수 없기 때문에 불가능합니다.
- 명시적으로 형변환을 하기 전에 타입을 확인하려면 어떤 예약어를 사용해야 하나요?
- 실행 시 형변환 관련 에러가 발생하지 않게 하려면 instanceof 예약어를 사용하여 검증 작업을 해야만 합니다.
- 위의 문제에서 사용한 예약어의 좌측에는 어떤 값이, 우측에는 어떤 값이 들어가나요?
- instanceof의 좌측에는 확인하고자 하는 변수를 , 우측에는 클래스이름이 위치합니다.
- instanceof 예약어의 수행 결과는 어떤 타입으로 제공되나요?
- instanceof 예약어 통해 검증한 결과는 boolean 타입의 결과를 제공됩니다.
- Polymorphism이라는 것은 뭔가요?
- 자식 클래스는 자신만의 "행위"를 가질 수 있지만, 부모 클래스에 선언된 메서드들도 공유 가능하다는 것을 의미합니다.
- 즉 부모 클래스의 타입으로 변수를 선언하고, 자식 클래스의 생성자를 사용할 경우 오버라이딩 된 메서드를 호출하면 자식 클래스에 선언된 메서드가 호출되고, 부모 클래스의 메서드도 공유 가능하다는 것을 의미합니다.
'JAVA' 카테고리의 다른 글
[JAVA] staic 과 final (1) | 2024.10.29 |
---|---|
== 와 equals 차이 , hashcode (0) | 2024.10.24 |
[Java] Call by Value 와 Call by Reference (6) | 2024.10.21 |
[JAVA] ORM 이란? MyBatis 와 JPA 차이 (4) | 2024.10.11 |
[JAVA] 자바 버전과 특징 8 ,11 (0) | 2024.10.10 |