관리 메뉴

애독자's 공부방

[혼공자] 6주차 _ 혼자 공부하는 자바(개정판) 본문

Java/혼공학습단 12기

[혼공자] 6주차 _ 혼자 공부하는 자바(개정판)

애독자 2024. 8. 11. 22:50
728x90

혼공단 - 혼공자, 혼자 공부하는 자바(개정판)

 

 

■ 공부한 내용

# 진도 기본 숙제(필수) 추가 숙제(선택)
6주차
(8/12 ~ 8/18)
Chapter 10 ~ 11 p.486 10-2 확인 문제 2번 문제 풀고 과정 설명하기 java.lang 패키지에 속하는 주요 클래스와 용도를 정리해서 포스팅하기

 

 

 

□ Chapter 10~11
▷ 10-1
 - 예외: 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
   . 발생하면 프로그램이 곧바로 종료되는 에러와 비슷하지만, 예외 처리를 통해 종료하지 않고 정상 실행 상태가 유지되는 것이 가능
 - 예외 클래스: 자바에서는 예외를 클래스로 관리 (모든 예외 클래스는 java.lang.Exception 클래스를 상속)
   . JVM은 프로그램을 실행하는 도중에 예외가 발생하면 해당 예외 클래스로 객체를 생성하고, 예외 처리 코드에서 예외 객체를 이용하도록 지원
 - 일반 예외: 컴파일러 체크 예외라고도 하며, 소스를 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사
 - 실행 예외: 컴파일러 넌 체크 예외라고도 하며, 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정에서는 미검사

▷ 10-2 
 - 예외 처리: 프로그램에서 예외가 발생했을 경우 프로그램의 갑작스런 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 것
 - try-catch-finally 블록: 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 진행
 - 다중 catch 블록: try 브록 내부에서 예외별로 예외 처리 코드를 다르게 할 때 사용
   . catch 블록이 여러 개라 할지라도 단 하나의 catch 블록만 실행 (하나의 예외가 발생하면 즉시 실행을 멈추고 해당 catch 블록으로 이동하기 떄문)
 - throws 키워드: 메소드 선언부 끝에 작성되어 메소드에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할
   . 해당 키워드 뒤에는 떠 넘길 예외 클래스를 쉼표로 구분해서 나열

▷ 11-1
 - Object 클래스: 자바의 최상위 부모 클래스 (해당 클래스의 메소드는 모든 자바 객체에서 사용 가능)
 - System 클래스: 운영체제의 일부 기능을 이용 가능 (프로그램 종료, 키보드로부터 입력, 모니터로 출력, 현재 시간 읽기 등)
   . 모든 필드와 메소드는 정적 필드와 정적 메소드로 구성됨
 - Class 클래스: 자바는 클래스와 인터페이스의 메타 데이터를 Class 클래스로 관리
   . 메타 데이터: 클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보
 - String 클래스: 문자열 리터럴은 String 객체로 자동 생성되지만, 다양한 생성자를 이용해서 직접 String 객체를 생성하는 것도 가능
   . 문자열 조작을 위한 많은 메소드 소유
 - Wrapper(포장) 클래스: 기본 타입의 값을 갖는 객체를 포장 객체라고 하며, 외부에서 변경 불가
   . 박싱: 기본 타입의 값을 포장 객체로 만드는 것 / 언박싱: 반대로 포장 객체로부터 기본 타입의 값을 얻는 것
 - Math 클래스: 수학 계산에 사용할 수 있는 메소드를 제공 (제공하는 메소드가 모두 정적 메소드라 Math 클래스로 바로 사용 가능)
 
▷ 11-2
 - Date 클래스: 날짜를 표현하는 클래스. 객체 간에 날짜를 주고받을 때 매개 변수나 리턴 타입으로 주로 사용
 - Calendar 클래스: 달력을 표현하는 클래스 (추상 클래스이므로 new 연산자를 사용해서 인스턴스 생성 불가)
   . 정적 메소드인 getInstance()를 이용하면 현재 운영체제에 설정되어 있는 시간대를 기준으로 한 하위 객체를 습득

 

 

■ 기본 숙제

  - p.486 10-2 확인 문제 2번 문제 풀고 과정 설명하기

p.485 10-2 확인 문제

 

  . 문제: throws에 대한 설명으로 틀린 것은 무엇입니까? 

      1) 생성자나 메소드의 선언 끝 부분에 사용되어 내부에서 발생된 예외를 떠넘긴다.

      2) throws 뒤에는 떠넘겨야 할 예외를 쉼표(,)로 구분해서 기술한다.

      3) 모든 예외를 떠넘기기 위해 간단하게 throws Exception으로 작성할 수 있다.

      4) 새로운 예외를 발생시키기 위해 사용된다.

  . 풀이: throws 키워드는 이미 발생한 예외를 떠넘기는 역할만 수행합니다.

 

 

■ 추가 숙제(선택)

  - java.lang 패키지에 속하는 주요 클래스와 용도를 정리해서 포스팅하기

    . Package java.lang ( Java SE 22 & JDK 22 )

      https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/lang/package-summary.html

 

  - 자바의 기본 도구 상자: java.lang 패키지

    . 자바 프로그래밍을 처음 시작하는 사람들에게는 java.lang 패키지가 조금 어렵게 느껴질 수 있습니다. 하지만 걱정하지 마세요! 이 패키지는 마치 자바 프로그래머를 위한 만능 도구 상자와 같다고 생각하면 됩니다.
    . 왜 java.lang 패키지가 중요할까요?
      : 자바로 프로그램을 만들 때, 누구나 꼭 필요한 기본적인 도구들이 있죠? 예를 들어, 숫자를 계산하거나, 글자를 다루거나, 프로그램을 실행하거나 하는 일 입니다. 이런 기본적인 기능들을 담고 있는 것이 바로 java.lang 패키지입니다.
    . java.lang 패키지 안에는 어떤 도구들이 있을까요?

      1) String (문자열) 도구: 문자열을 자르고, 붙이고, 찾고, 비교하는 등 다양한 작업을 할 수 있는 도구입니다. 예를 들어, "안녕하세요"라는 문자열의 길이를 측정하거나, "안녕"이라는 단어가 포함되어 있는지 확인할 수 있습니다.

      2) Math (수학) 도구: 숫자를 가지고 계산을 할 때 사용하는 도구입니다. 덧셈, 뺄셈, 곱셈, 나눗셈뿐만 아니라, 제곱근, 삼각함수 등 복잡한 계산도 할 수 있습니다.

      3) System (시스템) 도구: 프로그램과 컴퓨터를 연결해주는 다리 역할을 하는 도구입니다. 화면에 글자를 출력하거나, 사용자에게 입력을 받는 등의 작업을 할 수 있습니다.

    . 마치 레고 블록과 같습니다!

      : java.lang 패키지에 있는 클래스들은 마치 레고 블록과 같습니다. 이 블록들을 가지고 다양한 모양의 건물을 만들 수 있듯이, java.lang 패키지에 있는 클래스들을 이용해서 복잡한 프로그램을 만들 수 있는 거죠.
    . 예를 들어볼까요?

      : 지금까지의 내용을 종합해서 사용자의 이름을 입력받아 맞춤형 인사를 출력하고, 사용자가 입력한 숫자의 제곱근을 계산하여 출력하는 프로그램을 만들어 보겠습니다.

import java.util.Scanner;

public class JavaLangTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 사용자 이름 입력받기
        System.out.print("이름을 입력하세요: ");
        String name = scanner.nextLine();

        // 사용자에게 숫자 입력 받기
        System.out.print("숫자를 입력하세요: ");
        int number = scanner.nextInt();

        // 입력받은 숫자의 제곱근 계산
        double sqrtResult = Math.sqrt(number);

        // 결과 출력
        System.out.println(name + "님, 안녕하세요!");
        System.out.println(number + "의 제곱근은 " + sqrtResult + "입니다.");
    }
}

 

  - 사용자의 입력을 받기 위해 java.util.Scanner를 사용했지만, 나머지 부분은 java.lang의 System, String, Math를 활용했습니다.

    . Scanner 클래스를 이용한 사용자 입력: Scanner 클래스를 사용하여 사용자로부터 이름과 숫자를 입력받습니다. nextLine() 메소드는 한 줄의 문자열을 입력받고, nextInt() 메소드는 정수를 입력받습니다.

    . Math 클래스를 이용한 제곱근 계산: Math.sqrt() 메소드를 사용하여 입력받은 숫자의 제곱근을 계산합니다.

    . 결과 출력: System.out.println() 메소드를 사용하여 사용자의 이름과 함께 맞춤형 인사를 출력하고, 계산된 제곱근 결과를 출력합니다.

 

지금까지 배운 내용을 바탕으로 프로그램을 작성했더니 뿌듯합니다!

 

728x90