관리 메뉴

나만의공간

자바 초보자가 자주 하는 실수 10가지와 해결법 본문

IT/JAVA

자바 초보자가 자주 하는 실수 10가지와 해결법

밥알이 2025. 6. 21. 11:42

자바(Java)는 강력한 객체지향 언어지만, 문법이 엄격하고 구조가 복잡한 만큼 입문자들이 처음 접할 때 혼란스러운 부분이 많습니다. 이 글에서는 자바를 처음 배우는 초보자들이 자주 저지르는 실수 10가지를 소개하고, 각각에 대한 원인과 해결법을 쉽게 설명합니다.

이 글을 통해 자바 공부의 시행착오를 줄이고, 한층 빠르게 성장하는 개발자가 되세요!


1. 클래스 이름과 파일 이름이 다른 경우

실수 예: 파일명은 Main.java인데, 클래스 이름은 public class Hello {}

원인: 자바는 public class 이름과 파일명이 반드시 같아야 합니다.

해결법: 클래스 이름을 Main으로 바꾸거나, 파일 이름을 Hello.java로 수정하세요.


2. main 메서드 선언 오류

실수 예: public void main(String[] args)

원인: main 메서드는 반드시 static이어야 하고, 오타가 없어야 합니다.

정확한 선언:

public static void main(String[] args)

팁: IDE에서 main을 입력하고 tab 키를 누르면 자동 완성됩니다.


 

3. 세미콜론(;) 빠뜨리기

실수 예:

System.out.println("Hello World")

원인: 자바는 문장 끝에 세미콜론을 반드시 붙여야 합니다.

해결법: System.out.println("Hello World"); 와 같이 끝에 ; 붙이기

오류 메시지: ";" expected


4. 자료형 불일치 (타입 에러)

실수 예:

int x = "10";

원인: int 타입에는 문자열을 직접 넣을 수 없습니다.

해결법: int x = Integer.parseInt("10"); 또는 String s = "10";처럼 자료형을 일치시켜야 합니다.

자주 발생하는 상황: 사용자 입력값 처리 시


5. NullPointerException (널 포인터 예외)

실수 예:

String name = null;
System.out.println(name.length());

원인: null 상태인 객체의 메서드를 호출할 경우 발생합니다.

해결법: 객체를 생성한 후 사용하거나, null 체크 코드를 추가하세요.

if (name != null) {
    System.out.println(name.length());
}

6. 비교 연산자(==)와 equals() 혼용

실수 예: if (str1 == str2)

원인: ==은 객체의 주소값을 비교하고, equals()는 문자열의 내용을 비교합니다.

해결법: 문자열 비교 시에는 반드시 str1.equals(str2)를 사용하세요.


7. 배열 인덱스 범위 초과

실수 예:

int[] nums = new int[3];
nums[3] = 100;

원인: 자바 배열의 인덱스는 0부터 시작하며, 길이보다 하나 작아야 합니다.

해결법: nums[0] ~ nums[2]까지만 접근 가능

오류 메시지: ArrayIndexOutOfBoundsException


8. 객체 생성 없이 인스턴스 사용

실수 예:

Dog d;
d.bark();

원인: 객체를 선언만 하고 생성하지 않아서 null 상태입니다.

해결법: Dog d = new Dog(); 로 인스턴스를 생성한 후 메서드 호출


9. Scanner 사용 후 nextLine() 오작동

실수 예:


Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
String name = sc.nextLine(); // 이름 입력이 안 됨

원인: nextInt() 다음에 남은 개행 문자가 nextLine()에 소비됩니다.

해결법: 중간에 sc.nextLine(); 한 줄 추가해 버퍼를 비워주세요.


int age = sc.nextInt();
sc.nextLine(); // 버퍼 비우기
String name = sc.nextLine();

10. static 개념 이해 부족

실수 예:

public void hello() {
    System.out.println("Hi");
}

public static void main(String[] args) {
    hello(); // 오류 발생
}

원인: static 메서드에서 일반 인스턴스 메서드를 바로 호출할 수 없습니다.

해결법: 메서드를 static으로 선언하거나, 객체 생성 후 호출하세요.

MyClass mc = new MyClass();
mc.hello();

자바 실수는 자연스러운 성장의 과정입니다

자바를 배우는 과정에서 실수를 반복하는 건 매우 자연스러운 일입니다. 중요한 건 실수를 빨리 인식하고, 원인을 이해하며, 반복하지 않는 것입니다. 위에서 소개한 10가지는 자바 입문자라면 한 번쯤 꼭 겪게 되는 실수입니다.

이 글을 북마크 해두고, 코딩 중에 막혔을 때마다 다시 참고해 보세요. 더 나은 개발자로 성장하는 데 큰 도움이 될 것입니다.

Comments