[JAVA 23.06.29] Exception, UpDownGame

홍선우·2023년 6월 29일
  1. throws 에 대하여 설명하시오.
  • 예외 처리에 사용됩니다. 메서드 선언부에서 throws 키워드를 사용하여 해당 메서드가 발생할 수 있는 예외를 명시할 수 있습니다. 이를 통해 해당 예외는 해당 메서드를 호출한 곳으로 전달되며, 호출한 곳에서 예외를 처리할 수 있도록 합니다.

2.checked 와 unckecked Excetpion 을 설명하시오.

  • Checked Exception:
    Checked Exception은 Exception 클래스를 상속받은 예외 클래스 중 RuntimeException을 제외한 모든 예외를 포함합니다. 이러한 예외는 컴파일러에 의해 확인되고, 해당 예외를 처리하는 코드가 필요합니다. 컴파일러는 Checked Exception을 처리하는 코드가 존재하지 않으면 컴파일 오류를 발생시킵니다. 대표적인 Checked Exception으로는 IOException, ClassNotFoundException 등이 있습니다. 파일 입출력, 네트워크 통신 등의 작업에서 발생할 수 있습니다.

  • Unchecked Exception:
    Unchecked Exception은 RuntimeException 클래스를 상속받은 예외 클래스들을 포함합니다. 이러한 예외는 컴파일러에 의해 확인되지 않으며, 명시적인 예외 처리 코드가 필요하지 않습니다. Unchecked Exception은 주로 프로그램의 버그나 오류에 의해 발생하는 경우가 많습니다. 대표적인 Unchecked Exception으로는 NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException 등이 있습니다.
    Unchecked Exception은 예외 처리 코드를 작성하지 않아도 되기 때문에 개발자에게 편의를 제공합니다. 그러나 Unchecked Exception을 무시하고 예외 처리를 생략하면 프로그램 실행 중 예외가 발생할 수 있으며, 이는 예기치 않은 동작을 야기할 수 있습니다. 따라서 Unchecked Exception에 대해서도 적절한 예외 처리를 고려하는 것이 좋습니다.


  1. 아래가 컴파일 에러가 나는 이유에 대하여 설명하시오.
    try {
    int num = 6 / 0;
    } catch (Exception e) {
    e.printStackTrace();
    } catch (InputMismatchException e) {
    e.printStackTrace();
    }

위의 코드에서 try 블록 내부에서 int num = 6 / 0;을 수행하면 ArithmeticException이 발생합니다. 이 예외는 Exception 클래스의 하위 클래스이므로, 먼저 catch (InputMismatchException e) 블록으로 처리하는 것은 적절하지 않습니다. 따라서 catch (Exception e) 블록이 먼저 실행되고, catch (InputMismatchException e) 블록은 동작하지 않게 됩니다.


4.아래의 의미는?
public static void main(String[] args) throws Exception {
}
위의 코드에서 throws Exception은 해당 메서드가 Exception 예외를 발생시킬 수 있음을 나타냅니다. 이 메서드를 호출하는 곳에서는 예외 처리를 해야 합니다. 호출자는 try-catch 블록을 사용하여 예외를 처리하거나, 호출한 곳으로 예외를 계속 전파할 수 있습니다.


  1. 아래를 프로그래밍 하시오.
    1~100 사이에 숫자를 맞춰보세요 :
    50
    Down
    1~100 사이에 숫자를 맞춰보세요 :
    25
    UP
    1~100 사이에 숫자를 맞춰보세요 :
    43
    Down
    1~100 사이에 숫자를 맞춰보세요 :
    30
    UP
    1~100 사이에 숫자를 맞춰보세요 :
    35
    정답입니다. 5회 만에 맞췄어요.

  1. 래퍼 클래스(Wrapper class)란 무엇인가?
  • wrapper class는 기본 데이터 타입(primitive data type)을 객체로 감싸는 역할을 합니다. 자바의 기본 데이터 타입은 int, double, boolean 등이 있으며, 이러한 기본 데이터 타입은 값을 저장하기 위한 공간만 할당되고 메서드나 속성을 가지지 않습니다.
    하지만 때로는 기본 데이터 타입을 객체로 다뤄야 하는 상황이 발생하는데, 이때 wrapper class를 사용합니다. wrapper class는 기본 데이터 타입의 값을 객체로 감싸서 저장하고, 객체로서의 다양한 기능을 제공합니다.
    예를 들어, int 타입의 값을 객체로 다루려면 Integer 클래스를 사용할 수 있습니다. Integer 클래스는 int 값을 저장하고, int 값을 문자열로 변환하거나, 다른 데이터 타입으로 변환하는 등의 기능을 제공합니다. 이렇게 기본 데이터 타입을 객체로 다룰 수 있게 해주는 것이 wrapper class입니다.

6.박싱 & 언박싱에 대하여 설명하시오.

  • boxing과 unboxing은 기본 데이터 타입(primitive data type)과 해당하는 wrapper class 객체 간의 변환을 자동으로 처리해주는 기능입니다.
  • Boxing은 기본 데이터 타입을 해당하는 wrapper class 객체로 변환하는 과정을 말합니다. 이 과정은 자동으로 이루어집니다. 예를 들어, int 값을 Integer 객체로 변환하는 것이 boxing입니다.
  • Unboxing은 wrapper class 객체를 기본 데이터 타입으로 변환하는 과정을 말합니다. 이 과정도 자동으로 이루어집니다. 예를 들어, Integer 객체를 int 값으로 변환하는 것이 unboxing입니다.

  1. auto unboxing 이란?
  • 일반적으로 기본 데이터 타입이 필요한 상황에서 wrapper class 객체를 사용할 때 자동으로 이루어집니다. 이렇게 하면 개발자가 명시적으로 unboxing을 수행하지 않아도 됩니다. ex) Integer를 int로 변환해준다.

8.아래의 함수는?

  • 10진수를 2진수를 바꿔 출력하는 함수: .toBinaryString();
  • 10진수를 8진수를 바꿔 출력하는 함수: .toOctalString();
  • 10진수를 16진수를 바꿔 출력하는 함수: .toHexString();

0개의 댓글