GOORM-DEEP DIVE 백엔드 3회차 회고 DAY4

Cori1304·2025년 2월 28일
0

GOORM-DEEPDIVE

목록 보기
3/19

글을 쓰게된 배경

부트캠프에서 처음으로 java수업을 받고 있기에 기록하는게 좋다고 생각했고, 수업이 있는 날이면 매일 글을 쓰려고 합니다. 쵀대한 몰랐거나 필요하다고 생각되는 내용 위주로 기록할 예정입니다. (제가 게을러서 이러한 시도를 성공한 적이 없기에 이번 부트캠프 목표 중 1가지입니다. 할 수 있도록 화이팅!!)

chap3~4 수업 내용 정리

접근 제어자

  • 메서드는 주어진 입력을 처리하고, 결과를 반환하거나, 객체의 상태를 변경하는 등의 역할을 한다.
[접근 제어자] [반환형] 메서드명([매개변수]) {
    // 메서드의 실행 코드
    return 반환값; // 반환형이 void가 아닐 경우
}
public:  어디서나 접근 가능
protected: 같은 패키지 내에서는 접근할 수 있으며, 다른 패키지의 상속받은 클래스에서는 접근이 가능
default: 외부에서 접근할 수 없고 같은 패키지 내에서만 접근이 가능합니다.
private: 선언되 클래스 내에서만 접근이 가능, 다른 클래스에서는 접근 불가

static 메서드 (정적 메서드)

  • 객체 생성 없이 클래스명.메서드명() 형태로 호출
  • 인스턴스 변수나 메서드에 접근 불가
// static은 정적인 상황에 쓰는게 효율적
class Database {
    private static Database instance = new Database();

    private Database() {}

    public static Database getInstance() {
        return instance;
    }
}

// -----------------------------
class Config {
    static final String APP_NAME = "MyApp"; // 고정 데이터
    static final int MAX_USER = 100;        // 고정 데이터
}

Scanner

  • Scanner 클래스는 Java에서 사용자가 콘솔에서 입력한 데이터를 쉽게 읽을 수
    있도록 설계된 class
  • Scanner는 입력이 들어오면 버퍼에 저장한 후 데이터를 읽습니다.
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
        System.out.print("이름을 입력하세요: ");
        String name = scanner.nextLine(); // 문자열 입력
        System.out.println("입력된 이름: " + name);
        scanner.close(); // Scanner 종료
    }
}

scanner 사용시 주의 예시 (빈 문자열 반환 후 종료)

nextInt()가 정수를 읽은 후 입력 버퍼에 남아있는 개행 문자(\n)를 처리하지 않기 때문에 발생, nextLine()은 개행 문자를 만날 때까지 한 줄을 읽음, nextInt() 이후에 남아있는 개행 문자를 즉시 만나 빈 문자열을 반환하고 종료되는 문제 발생

import java.util.Scanner;

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

        System.out.print("숫자를 입력하세요: ");
        int number = scanner.nextInt();
        System.out.println("입력된 숫자: " + number);
        
        // 주석을 해제하면 문제없이 동작
        // scanner.nextLine(); // 개행 문자 제거로 문제 해결

        System.out.print("문자열을 입력하세요: ");
        String text = scanner.nextLine(); // 문제가 발생하는 부분
        System.out.println("입력된 문자열: " + text);

        scanner.close();
    }
}

배운 점

  • typescript에서는 default는 없고 [접근 제어자]를 안 쓰면 pubblic인데 java는 다른 다는 것에 흥미로웠습니다.
  • Scanner 사용시 있을 수 있는 에러 확인 ('\n') 때문에 일어날 수 있는 일이라고 알아두면 나중에 비슷한 문제가 발생시에도 대처가 가능할거라고 생각합니다.
profile
개발 공부 기록

0개의 댓글

관련 채용 정보