[자바의 신] 정리해 봅시다 (Ch 01~09)

Eunbi Lee·2023년 4월 4일
2

Java

목록 보기
1/5
post-thumbnail

자바의 신

https://product.kyobobook.co.kr/detail/S000001624690

자바의 신 - 정리해 봅시다의 각 챕터별 정답

1장 프로그래밍이란 무엇인가?

1. 클래스가 뭔가요?

  • (p 25) 자바의 가장 작은 단위이자, 일반적으로 상태(state; 변수)와 행동(behavior; 메소드)를 가지고 있다.

2. 메소드가 뭔가요?

  • (p 22) 어떤 값을 주고 결과를 넘겨주는 특정한 작업을 수행하는 단위이다.

3. 메소드의 매개 변수는 어디에 적어주나요?

  • 메소드의 소괄호 안에 적어준다.
public boolean checkPassword(String password) {
}

4. 메소드 이름 앞에 꼭 적어 줘야 하는 건 뭐죠?

  • (p 22) 리턴타입
접근 제어자 리턴 타입 메소드 이름(매개 변수) {
}

5. 클래스가 갖고 있어야 한다고 한 두 가지가 뭐죠?

  • 상태(변수)와 행동(메소드)이다.

6. 메소드에서 결과를 돌려주려면 어떤 예약어를 사용해야 하나요?

  • return

2장 Hello God of Java

1. main() 메소드의 메소드 이름 앞에는 어떤 예약어들이 들어 가나요?

public static void

2. main() 메소드의 매개 변수에는 어떤 값이 들어가나요?

String [] args

3. 만약 여러분들이 만든 클래스에 main() 메소드가 없다면, java 명령어로 그 클래스를 수행할 수 있나요?

  • X

4. System.out.println() 메소드는 어떤 용도로 사용되나요?

  • 행(한 줄)을 바꾸며 메세지를 출력하는 용도로 사용된다.

5. System.out.print() 메소드는 System.out.println() 메소드와 어떤 차이가 있나요?

  • 행을 바꾸지 않고 출력한다.

6. //는 무엇을 하는 데 사용하는 기호인가요?

  • 주석처리 할 때 사용하는 기호이다. 즉, 메세지 출력을 하지 않는다.

7. /로 시작하고, /로 끝나는 사이에 있는 소스들은 어떻게 되나요?

  • 블럭 주석 처리 된다. 즉, 해당 부분 전체가 주석처리가 된다.

8. 메소드를 선언할 때 반드시 꼭 있어야 하는 세 가지는 무엇인가요?

  • 리턴 타입(예: void), 메소드 이름(예: main), 메소드 내용(예: { ~ })이다.

3장 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요

1. 클래스와 객체의 차이점을 말해 주세요.

  • (p 61) 클래스는 그 자체로 어떤 작업을 수행하지 않는 틀이며, 객체를 생성하여 구체적인 작업을 수행할 수 있다.

2. 객체를 생성하기 위해서 꼭 사용해야 하는 예약어는 뭐라고 했죠?

  • new

3. 객체를 생성하기 위해서 사용하는 메소드 같이 생긴 클래스 이름에 소괄호가 있는 것을 뭐라고 하나요?

  • 생성자
public class Car {
	public Car() { // 생성자
	}
}

4. 객체의 메소드를 사용하려면 어떤 기호를 객체 이름과 메소드 이름 사이에 넣어줘야 하나요?

  • .

5. 여러분들이 메소드를 사용하기 위해서는 어떤 것을 만들어야 하나요?

  • (p 66) 객체(인스턴스)

6. 5번 문제에서 만들어야 하는 것은 어떤 예약어를 사용하고, 클래스의 무엇을 사용해야 하나요?

  • new, 생성자

4장 정보를 어디에 넣고 싶은데

1. 네 가지 종류의 변수는 어떻게 구분할 수 있나요?

  • (p 75) 위치와 예약어로 구분한다.

    1) 지역 변수 : 중괄호 안에서 선언되는 변수
    2) 매개 변수 : 메소드에 넘겨주는 변수
    3) 인스턴스 변수 : 메소드 밖에, 클래스 안에 선언된 변수
    4) 클래스 변수 : 인스턴스 변수 중 static 예약어를 사용한 변수

2. 변수의 이름을 지을 때 대문자로 시작해도 되나요?

  • X

3. 자료형에는 기본 자료형과 어떤 자료형이 있나요?

  • 참조 자료형

4. 기본 자료형에는 몇 가지가 있나요?

  • 8가지

    byte, short, int, long, char, float, double, boolean

5. 기본 자료형 중 정수형에는 어떤 것들이 있나요?

  • 5가지

    byte, short, int, long, char

6. byte는 몇 비트(bit)로 되어 있나요?

  • 8

7. byte는 왜 만들었을까요?

  • 보다 효율적으로 메모리 공간을 사용하기 위해서이다.

8. int와 long 중 어떤 타입이 더 큰 숫자를 처리할 수 있나요?

  • long

9. 소수점을 처리하는 타입은 어떤 것이 있나요?

  • float, double

10. char은 정수형인가요?

  • O

11. a라는 것을 char로 정의할 때 어떤 기호로 감싸주어야 하나요?

  • ' '(홑 따옴표)

12. true와 false 두 개의 값만을 가지는 타입은 어떤 것인가요?

  • boolean

5장 계산을 하고 싶어요

1. 값을 할당할 때 사용하는 연산자의 기호는 무엇인가요?

  • =

2. 기본적인 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지를 계산할 때 사용하는 연산자의 기호는 무엇인가요?

  • 차례대로 +, -, *, /, %

3. +=는 무엇을 할 때 사용하는 연산자인가요?

  • 왼쪽 변수에 오른쪽 값을 더한 후 할당할 때 사용하는 복합대입연산자이다.
int a+=1; // int a=a+1;

4. 여러분들이 연산의 순서를 모르거나 확실히 하고 싶을 때에는 어떤 기호를 사용해야 하나요?

  • () - 소괄호

5. ==와 !=의 차이는 무엇인가요?

  • 값이 같은지, 값이 다른지 비교한다.

6. <와 <=의 차이는 무엇인가요?

  • 미만, 이하이다.

7. ! 연산자는 어떤 타입에 사용할 수 있나요?

  • (p 123) boolean

8. ? :로 표시하는 삼항 연산자의 ?와 : 뒤에 명시해 주는 값은 무엇을 의미하나요?

  • true일 때 값, false일 때 값
변수 = (boolean조건식) ? true일 때 값 : false일 때 값;

9. 자바는 형 변환을 한다고 했는데, short의 값을 long에 할당할 때에는 어떤 것을 해 주어야 하나요?

  • (p 120) (long)

10. 반대로 long 값을 short에 할당할 때에는 어떤 것을 해 주어야 하나요?

  • (short)

11. 9와 10의 경우 중 어떤 경우가 기존 값이 사라지고, 엉뚱한 값으로 바뀔 수 있나요?

  • 10번이다. 즉, 범위가 큰 타입에서 작은 타입으로 변환할 경우이다.

6장 제가 조건을 좀 따져요

1. if 문장의 소괄호 안에는 어떤 형태의 결과가 제공되어야 하나요?

  • (p 130) boolean 조건 값이다.

2. if 조건에 맞지 않는 모든 경우를 처리할 때 사용하는 예약어는 뭔가요?

  • else

3. switch를 사용할 수 있는 기본 자료형의 타입에는 어떤 것들이 있나요?

  • (p 139) long을 제외한 정수 및 Enum이 사용 가능하다. 또한 JDK 7부터는 String도 사용 가능하다.

4. switch 블록 안에서 비교 대상값 앞에 사용하는 예약어는 무엇인가요?

  • (p 139) case

5. switch 조건을 빠져나가도록 하는 예약어는 무엇인가요?

  • break

6. switch 조건들에 맞지 않을 때, 기본 처리를 하기 위한 예약어는 무엇인가요?

  • default

7. while문의 소괄호 안에는 어떤 형태의 결과가 제공되어야 하나요?

  • boolean

8. while문을 무조건 한 번은 실행하게 하려면 어떻게 해야 하나요?

  • do-while

9. while문을 마음대로 빠져나가게 하려면 어떤 예약어를 사용하면 되나요?

  • break

10. while문의 중간에 while문의 소괄호 점검 구문으로 건너뛰도록 할 때 사용하는 예약어는 무엇인가요?

  • continue

11. for 루프의 소괄호 안의 가장 첫 구문(첫 세미 콜론 앞의 문장)은 for 루프가 수행되는 동안 몇 번 수행되나요?

  • 1번
for(int i=1; ~ )

12. for 루프의 소괄호 안의 중간에 있는 구문은 어떤 타입의 결과가 제공되어야 하나요?

  • boolean

13. for 루프의 소괄호 안의 마지막에 있는 구문에서는 어떤 작업을 수행하나요?

  • index를 증가하거나 감소하는 작업을 수행한다.

7장 여러 데이터를 하나에 넣을 수는 없을까요?

1. 배열을 선언할 때 어떤 키워드를 타입 앞이나 뒤에 사용해야 하나요?

  • [ ]
int [] lottoNumbers;

2. 배열의 첫 번째 위치는 0인가요? 1인가요?

  • 0

3. 배열을 선언할 때 boolean 배열의 크기만 지정했다면 boolean 배열의 [0] 위치에 있는 값은 무엇인가요?

  • (p 165) false

4. ArrayIndexOutOfBoundsException이라는 것은 언제 발생하나요?

  • Array/Index/Out/Of/Bounds/Exception
    즉, 선언한 배열(Array)의 크기(Index)를 벗어나는(Out Of Bounds) 인덱스(Index)에 접근하려고 했을 때 발생하는 예외(Exception)이다.

5. 중괄호를 이용하여 배열을 초기화할 때 중괄호 끝에 반드시 어떤 것을 입력해 주어야 하나요?

  • ;

6. 2차원 배열을 정의할 때에는 대괄호를 몇 개 지정해야 하나요?

  • 2개
int [][] twoDim={{1,2,3},{4,5,6}};

7. 배열을 쉽게 처리해주는 for문의 문법은 어떻게 되나요?

  • (p 178)
for(타입이름 임시변수명 : 반복대상객체) {
}

8. 자바 프로그램에 데이터를 전달해 주려면 클래스 이름 뒤에 어떻게 구분하여 나열하면 되나요?

  • (p 181) 공백으로 구분하면 된다.
java ArrayMain a b c d e

9. 자바 프로그램이 시작할 때 전달 받는 내용은 어떤 타입의 배열인가요?

String []

8장 참조 자료형에 대해서 더 자세히 알아봅시다

1. 생성자는 반드시 만들어야 하나요?

  • X

2. 만약 매개 변수가 있는 생성자를 만들고, 매개 변수가 없는 기본 생성자를 호출하면 어떻게 될까요?

  • 기본 생성자가 아닌 다른 생성자를 만든 후에는, 기본 생성자가 자동으로 생성되지 않으므로 컴파일 에러가 발생한다.

3. 생성자의 개수는 제한이 있나요?

  • X

4. 인스턴스의 변수와 매개 변수나 메소드 내에서 생성한 변수와 구분하기 위해서 사용하는 키워드는 무엇인가요?

  • (p 195) this
public class MemberDTO {
	public String name;
    public MemberDTO(String name) {
    this.name = name; // 앞에 있는 name : 인스턴스 변수, 뒤에 있는 name : 매개 변수

5. 메소드 선언 시 리턴 타입으로 지정한 데이터를 넘겨줄 때 필요한 키워드는 무엇인가요?

  • (p 199) return

6. 메소드 선언 시 아무 데이터도 리턴 타입으로 넘겨주지 않겠다는 것을 지정하는 키워드는 무엇인가요?

  • (p 198) void

7. 메소드 선언에 static이 있는 것과 없는 것의 차이는 무엇인가요?

  • (p 202) 객체 생성 없이 메소드 호출이 가능하다. 이때, static 블록과는 다르다.

8. 필자가 엄청나게 중요하다고 한 것 중 메소드의 이름은 같으나 매개 변수를 다르게 하는 것의 명칭은 무엇인가요?

  • 오버로딩

    오버라이딩 : 상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니쳐를 갖는 메소드로 다시 정의하는 것

9. 기본 자료형을 매개 변수로 넘겨 줄 때 Pass by Value인가요? 아니면 Pass by reference인가요?

  • Pass by Value

10. 참조 자료형을 매개 변수로 넘겨 줄 때 Pass by value인가요? Pass by reference인가요?

  • Pass by reference

11. 매개 변수의 수가 가변적일 때 메소드 선언 시 타입과 변수 이름 사이에 어떤 것을 적어줘야 하나요?

  • ...
public void arbitrary(String message, int ... numbers) {
}

9장 자바를 배우면 패키지와 접근 제어자는 꼭 알아야 해요

1. 패키지를 선언할 때 사용하는 예약어는 무엇인가요?

  • package

2. 패키지 선언은 클래스 소스 중 어디에 위치해야 하나요?

  • 맨 윗 줄

3. 패키지를 선언할 때 가장 상위 패키지의 이름으로 절대 사용하면 안 되는 단어는 무엇인가요?

  • java

4. 패키지 이름에 예약어가 포함되어도 되나요?

  • X

5. import는 클래스 내에 선언해도 되나요?

  • X

6. 같은 패키지에 있는 클래스를 사용할 때 import를 해야 하나요?

  • X, 같은 패키지의 클래스 및 java.lang 패키지에 있는 클래스는 import를 할 필요가 없다.

7. 특정 패키지에 있는 클래스들을 모두 import할 때 사용하는 기호는 무엇인가요?

  • 애스터리스크(Asterisk; *)

8. 클래스에 선언되어 있는 static한 메소드나 변수를 import하려면 어떻게 선언해야 하나요?

  • import static

ex. c.javapackage.sub(패키지)에 있는 Substatic(클래스)의 subStaticMethod(메소드)를 import 하기

import static c.javapackage.sub.Substatic.subStaticMethod;

9. 접근 제어자 중 가장 접근 권한이 넓은 (어떤 클래스에서도 접근할 수 있는) 것은 무엇인가요?

  • public

10. 접근 제어자 중 가장 접근 권한이 좁은 (다른 클래스에서는 접근할 수 없는) 것은 무엇인가요?

  • private

11. 접근 제어자 중 같은 패키지와 상속관계에 있는 클래스만 접근할 수 있도록 제한하는 것은 무엇인가요?

  • protected

접근 제어자
1) public : 누구나 접근 가능
2) protected : 같은 패키지에 있거나 상속받은 클래스의 경우에만 접근 가능
3) package-private(default) : 같은 패키지 내에 있을 때만 접근 가능
4) private : 해당 클래스 내에서만 접근 가능

12. "Calculate.java라는 자바 소스가 있을 경우, 그 소스 내에는 Calculate라는 클래스 외에는 ()으로 선언된 클래스가 있으면 안 된다." 여기서 괄호 안에 들어가야 하는 것은 무엇인가요?

  • public

후기

자바 공부를 위해 자바의 신이라는 기본서를 정독하기 시작했다.
1권의 내용 대부분이 학부 때 배운 내용이라, 빠르게 읽을 수 있을 줄 알았지만 예상외로 시간이 좀 걸려 당황스러웠다.
하지만 오래 걸리더라도 꼼꼼히 내용을 읽어보고 싶었기에, 이 속도로 계속해서 읽어나갈 것 같다.
처음 마음가짐 잊지말고 계속 잘 읽어나가자. 😊

자바의 신 코드는 깃허브에 업로드 예정이다.

공식 사이트: https://sites.google.com/view/godofjavabook2nd

profile
B - B = 이은비

2개의 댓글

comment-user-thumbnail
2023년 7월 13일

자바의 신으로 자바공부 중인데, 올리신 글 덕분에 많이 도움받고 있습니다. 감사합니다. 홧팅입니다:)!

답글 달기
comment-user-thumbnail
2023년 11월 5일

궁금한게 하나 있는데 5장에서 9번문제에서는 굳이 형변환을 명시할 필요가없는데 왜 명시해주신건가요???

답글 달기