부트캠프에서 처음으로 java수업을 받고 있기에 기록하는게 좋다고 생각했고, 수업이 있는 날이면 매일 글을 쓰려고 합니다. 쵀대한 몰랐거나 필요하다고 생각되는 내용 위주로 기록할 예정입니다. (제가 게을러서 이러한 시도를 성공한 적이 없기에 이번 부트캠프 목표 중 1가지입니다. 할 수 있도록 화이팅!!)
[접근 제어자] [반환형] 메서드명([매개변수]) {
// 메서드의 실행 코드
return 반환값; // 반환형이 void가 아닐 경우
}
public: 어디서나 접근 가능
protected: 같은 패키지 내에서는 접근할 수 있으며, 다른 패키지의 상속받은 클래스에서는 접근이 가능
default: 외부에서 접근할 수 없고 같은 패키지 내에서만 접근이 가능합니다.
private: 선언되 클래스 내에서만 접근이 가능, 다른 클래스에서는 접근 불가
// 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; // 고정 데이터
}
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 종료
}
}
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();
}
}