부트캠프에서 처음으로 java수업을 받고 있기에 기록하는게 좋다고 생각했고, 수업이 있는 날이면 매일 글을 쓰려고 합니다. 쵀대한 몰랐거나 필요하다고 생각되는 내용 위주로 기록할 예정입니다. (제가 게을러서 이러한 시도를 성공한 적이 없기에 이번 부트캠프 목표 중 1가지입니다. 할 수 있도록 화이팅!!)
Java는 컴파일 언어이므로, 실행 전에 코드를 미리 컴파일하여 바이트코드로 변환해야 한다. 컴파일 과정에서는 코드가 문법적으로 올바른지 검사하고, 데이터 타입이 정확한지 확인한다. 이러한 특성 때문에, Java에서는 객체를 생성하기 전에 반드시 해당 객체의 클래스를 정의해야 한다.
이 과정에서 사용되는 것이 new
이다.
힙(Heap) 메모리는 Java Virtual Machine(JVM)의 런타임 데이터 영역 중 하나로, 동적으로 생성된 객체들이 저장되는 공간입니다. 힙 메모리는 프로그램이 실행되는 동안 필요한 객체들을 유연하게 관리할 수 있도록 해준다.
NullPointerException (NPE)은 가장 흔하게 발생하는 런타임 예외 중 하나이다. 이 예외는 객체 참조가 null인 상태에서 해당 객체의 필드 또는 메서드에 접근하려 할 때 발생한다.
String str = null;
int length = str.length(); // NullPointerException 발생
1. null 체크
String str = getSomeString(); // 외부에서 문자열을 받아오는 상황 가정
if (str != null) {
System.out.println("문자열 길이: " + str.length());
} else {
System.out.println("문자열이 null입니다.");
// null에 대한 적절한 처리 (예: 기본값 할당, 예외 처리 등)
}
public class MyClass {
private String name;
public MyClass(String name) {
this.name = name; // 생성자에서 초기화
}
public String getName() {
return name;
}
}
// 사용 예시
MyClass obj = new MyClass("John");
System.out.println(obj.getName());
public String processString(String str) {
if (str == null) {
return ""; // null 대신 빈 문자열 반환
}
return str.toUpperCase();
}
// 호출하는 쪽에서 null 체크
String result = processString(getSomeString());
if (result != null) {
System.out.println(result);
}
init block은 클래스의 인스턴스 변수 또는 정적 변수를 초기화하는 데 사용되는 코드 블록으로 초기화 블록은 클래스 내에 {}로 둘러싸여 정의되며, 생성자보다 먼저 실행됩니다.
public class MyClass {
static { // 정적 초기화 블록
System.out.println("정적 초기화 블록 실행");
}
{ // 인스턴스 초기화 블록
System.out.println("인스턴스 초기화 블록 실행");
}
public MyClass() {
System.out.println("생성자 실행");
}
}
/* 초기화 순서
* 인스턴스변수 : 기본값 -> 명시적초기값 -> 인스턴스초기화블럭 -> 생성자
* 클래스변수 : 기본값 -> 명시적초기값 -> 정적초기화블럭 -> 인스턴스초기화블럭 -> 생성자
* */