IT 면접족보/자바 면접족보

자바 면접 족보 정리(8일 차 )

낙산암 2020. 12. 6. 13:12

1.생성자란 무엇인가?

- 생성자 이름은 **클래스의 이름과 동일해야 한다.

- 생성자는 **값을 반환하지 않고(return 안함) return type도 표시하지 않는다.

- 리턴값이 없다는 것은 용도를 제한함을 의미 (연산 등의 용도가 아님)

 

, 생성자의 용도는 값들에 대한 초기화이다.

2.디폴트 생성자란 무엇인가?

생성자를 만들지 않았지만 객체를 생성할 때 호출하면 **컴파일러에 의해 자동으로 생성**되는 것이 디폴트 생성자 이다. (용도는 초기화)

 

직접 생성자 함수를 만들지 않았어도, 객체 생성 시 생성자 함수를 호출하게 되어있다.

 

어떻게 만들지 않은 생성자 함수를 사용할 수 있을까?

모든 클래스의 인스턴스 생성은 생성자 호출을 동반한다. 생성자 함수를 만들지 않으면 컴파일러에 의해 디폴트 생성자가 자동으로 생성된다. 그래서 생성자 함수를 만들지 않아도 호출해서 사용할 수 있는것.

3.생성자의 용도에 대하여 설명하시오.

1번에서 설명한 것 처럼, 생성자의 용도는 값들의 초기화이다.

4.null 에 대하여 설명하시오.

null은 참조 변수에 대입 했을 때 비어 있음을 의미한다.

참조 변수에는 주소값이 들어가는데 그곳이 비어 있다는 의미는 아무 곳도 가리키고 있지 않음을 의미한다. (ref가 참조하는 객체가 있었다면 그 관계를 끊는 것을 의미함) 참조 변수를 **초기화** 할 때 사용한다.

또한 JVM 으로 하여금 해당 객체가 GC에 의한 메모리 해제 되상이 됨을 알리는 역할을 한다.

 

5.금일 프로그래밍 했던 문제

 

6. 아래의 프로그램을 작성하시오.

- 화폐 매수 구하기

- 반드시 클래스로 작성할것

---------------------------------

136000

오만원 : 2

만원 : 3

오천원 : 1

천원 : 1

오백원 : 0

백원 : 0

계속 하시겠습니까

y

1456000

오만원 : 29

만원 : 0

오천원 : 1

천원 : 1

오백원 : 0

백원 : 0

계속 하시겠습니까

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Money {
    int cash, temp;
    int m500, m100, m50, m10, m5, m1;
    
    public Money(int cash) {
        this.cash = cash;
    }
 
    public void countMoney() {    
        m500 = cash / 50_000;
        temp = cash-(m500*50_000);
        
        m100 = temp / 10_000;
        temp = temp-(m100*10_000);
        
        m50 = temp / 5_000;
        temp = temp-(m50*5_000);
        
        m10 = temp / 1_000;
        temp = temp-(m10*1_000);
        
        m5 = temp / 500;
        temp = temp-(m5*500);
        
        m1 = temp / 100;
        
        System.out.println("오만원: "+ m500);
        System.out.println("만원: "+ m100);
        System.out.println("오천원: "+ m50);
        System.out.println("천원: "+ m10);
        System.out.println("오백원: "+ m5);
        System.out.println("백원: "+ m1);
    }
    
}
 
 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.util.Scanner;
 
public class TestMain {
 
    public static void main(String[] args) {
 
        Scanner scanner = null;
        
        while(true) {
            scanner = new Scanner(System.in);
            int cash;
            System.out.print("금액을 입력하세요.");
            cash = scanner.nextInt();
            
            Money myMoney = new Money(cash); 
            myMoney.countMoney();
            
            System.out.println("계속 하시겠습니까?(Y/N)");
            String yesOrNo = scanner.next();
            
            if(yesOrNo.equals("Y")|| yesOrNo.equals("y")) {
                continue;
            }else {                
                break;
            }
        }
        System.out.println("프로그램을 종료합니다.");
        scanner.close();
    }
}
 

7.자바의 명명 규칙에 대하여 설명하시오.

-클래스

-메소드와 변수

-상수

-camel case

-snake case

 

클래스

 

- 첫 문자는 대문자!CirclePoint

- 합성어는 주로 Camel Case를 사용한다.

CirclePoint (Camel Case) 더 많이씀 / Circle_point (snake case)

 

메소드와 변수

 

- 첫 문자 소문자로 시작!!!!

- 합성어는 주로 Camel Case를 사용한다. (addYourMoney)

 

상수

 

- 상수는 전체 대문자

- 합성어에 snake case사용 : 전체가 대문자 이기 때문에 둘 이상의 단어로 쓸 때 구분해서 보여주기 위해 언더바로 표현(final COLOR_RAINBOW)

 

camel case

 

- 둘 이상의 문자가 결합된 합성어를 이름으로 사용 시에 두 번째 단어부터 첫 글자를 대문자로 사용한다.

- 낙타의 등처럼 생겼다고 해서 camel case라고 부른다.

- 클래스, 메소드, 변수명은 주로 camel case를 사용한다.

 

 

메소드,변수의 cammel case: addYourMoney, yesOrNo, countMoney

클래스의 cammel case: CircleArea, RectangleArea, StarPoint

 

snake case

 

- 둘 이상의 문자가 결합된 합성어를 이름으로 사용 시에 문자와 문자 사이를 _(언더바)로 이어준다.

- 상수는 전체를 대문자로 작성하기 때문에 합성어로 이름 지을 경우 sanke case를 사용한다.

 

 

메소드, 변수의 snake case: add_your_money, yes_or_no, count_money

클래스의 snake case: Circle_area, Rectangle_area, Star_point

상수의 snake case: final COLOR_RAINBOW