자바칩

[자바의 신] 20장. 자바랭 패키지: 문제 풀이 본문

Study/Java

[자바의 신] 20장. 자바랭 패키지: 문제 풀이

아기제이 2024. 5. 13. 17:56
728x90

정리해 봅시다

 

1. 자바 패키지 중 같은 패키지에 있는 클래스를 제외하고, 별도로 import 하지 않아도 되는 패키지는 무엇인가요?

java.lang 패키지

 

 

2. 자바의 메모리가 부족해서 발생하는 에러는 무엇인가요?

OutOfMemoryError (OOME)

 

 

3. 메소드 호출 관계가 너무 많아서 발생하는 에러는 무엇인가요?

StackOverflowError

 

 

4. java.lang 패키지에 선언되어 있는 3개의 어노테이션에는 어떤 것들이 있고, 각각의 역할은 무엇인가요?

어노테이션 역할
@Override 부모 메소드를 Overriding 하는 것을 명시적으로 선언한다.
이 어노테이션을 선언하면 Overridng을 하기 위한 부모 메소드의 시그니처와 다르게 메소드를 선언했을 때 컴파일 에러를 발생시킨다.
@Deprecated 메소드를 더 이상 사용할 수 없다(Deprecated 되었다)는 것을 명시적으로 선언한다.
이 어노테이션을 선언하면 Deprecated된 메소드를 사용할 때 컴파일러에서 경고 메시지를 띄워준다.
@SuppressWarnings 경고를 무시할 것이라고 컴파일러에게 요청할 때 사용한다.
이 어노테이션을 사용하면 경고가 발생해도 컴파일러에서 경고 메시지를 띄워주지 않는다.

 

 

5. Double과 Integer 같은 숫자 타입에서 처리할 수 있는 최대, 최소값을 알 수 있는 상수의 이름은 무엇인가요?

MAX_VALUE, MIN_VALUE

 

 

6. Integer 값을 2진법으로 표현하려면 어떤 메소드를 사용해야 하나요?

Integer.toBinaryString(Integer 타입 변수)

 

 

7. Integer 값을 16진법으로 표현하려면 어떤 메소드를 사용해야 하나요?

Integer.toHexString(Integer 타입 변수)

 

 

8. 속성(Properties)과 환경(Environment) 값의 차이는 무엇인가요?

속성(Properties)은 직접 추가와 변경이 가능하지만, 
환경(Environment)은 추가와 변경이 불가능하고, 읽기만 가능하다.

 

 

9. System.out과 System.err에서 사용할 수 있는 메소드들을 확인하려면 어떤 클래스를 찾아봐야 하나요?

PrintStream 클래스

 

 

10. System 클래스에서 현재 시간을 조회하는 용도로 사용하는 메소드 이름은 무엇인가요?

System.currentTimeMillis()

 

 

11. System 클래스에서 시각 측정 용도로 사용하는 메소드 이름은 무엇인가요?

System.nanoTime()

 

 

12. System.out.print() 메소드와 System.out.println() 메소드의 차이는 무엇인가요?

System.out.print()은 매개변수에 있는 값을 출력 후 줄바꿈을 하지 않고,
System.out.println()은 매개변수에 있는 값을 출력 후 줄바꿈을 한다.

 

 

13. System.out.println() 메소드에 객체가 매개변수로 넘어 왔을 때 String의 어떤 메소드가 호출되어 결과를 출력하나요? 그리고, 그 메소드를 사용하는 이유는 무엇인가요?

String.valueOf(객체) 메소드가 호출되어 결과를 출력한다.
이 메소드를 사용하면 객체가 null인 매개변수가 들어와도 NullPointerException을 발생시키지 않고, "null" 이라는 String 문자열로 리턴하여 출력해주기 때문에 에러를 신경쓰지 않고 사용할 수 있다. 그래서 toString() 메소드를 사용하는 것 보다 static valueOf() 메소드를 사용하는 것이 더 좋다.

직접해 봅시다

package d.lang.practice;

public class NumberObjects {
    public static void main(String[] args) {
        NumberObjects numberObjects = new NumberObjects();
        System.out.println(numberObjects.parseLong("r1024"));   // 1번
        numberObjects.printOtherBase(1024);                    // 2번
    }

    // 1번
    public long parseLong(String data) {
        long number = 0;
        try {
            number = Long.parseLong(data);
        } catch (NumberFormatException e) {
            System.out.println(data + " is not a number.");
            number = -1;
        }
        return number;
    }

    // 2번
    public void printOtherBase(long value) {
        System.out.println("Original: " + value);
        System.out.println("Binary  : " + Long.toBinaryString(value));
        System.out.println("Hex     : " + Long.toHexString(value));
        System.out.println("Octal   : " + Long.toOctalString(value));
    }
}