1. 세미콜론을 잊어버림

야심 찬 Java 프로그래머가 저지르는 가장 일반적인 실수는 세미콜론과 관련이 있습니다. 또는 오히려 있어야 할 곳에 부재합니다.

메서드 내의 모든 문은 세미콜론으로 끝나야 합니다. 세미콜론은 명령문이나 명령을 구분하는 것입니다. 이것은 하나의 명령이 끝나고 다음 명령이 시작되는 위치를 Java 컴파일러에 알리는 방법입니다.

오류의 예:

잘못된 코드입니다 올바른 코드
int a
int b = 5
int c = a + b
int a;
int b = 5;
int c = a + b;
System.out.println("Hello")
System.out.println("Hello");
if (2 > 3)
   System.out.println("Are we in Australia?")
if (2 > 3)
   System.out.println("Are we in Australia?");


2. 따옴표를 닫는 것을 잊음

Java를 처음 접하는 사람들이 저지르는 두 번째로 흔한 실수는 코드에 문자열을 작성한 다음 따옴표를 닫는 것을 잊는 것입니다.

코드의 모든 문자열 리터럴은 양쪽을 큰따옴표(")로 묶어야 합니다. 초보 프로그래머는 종종 텍스트 시작 부분에 따옴표를 넣지만 끝에서 닫는 것을 잊습니다.

여기 몇 가지 예가 있어요.

잘못된 코드입니다 올바른 코드
String s = "Hello;
String s = "Hello";
System.out.println("Hello);
System.out.println("Hello");
String s = "Hello";
String message = s + " and by. ;
String s = "Hello";
String message = s + " and bye.";


3. 문자열을 함께 붙일 때 더하기 기호를 포함하는 것을 잊음

문자열로 작업할 때 또 다른 일반적인 실수는 문자열을 함께 붙일 때 더하기 기호를 쓰는 것을 잊는 것입니다. 이 오류는 텍스트와 변수가 코드의 긴 식에 연결된 경우 특히 많이 발생합니다.

여기 몇 가지 예가 있어요.

잘못된 코드입니다 올바른 코드
String s = "Hello";
String message = s  " and bye.";
String s = "Hello";
String message = s + " and bye.";
int age = 35;
System.out.println("Age=" age);
int age = 35;
System.out.println("Age=" + age);
int age = 35;
System.out.println("Age=", age);
int age = 35;
System.out.println("Age=" + age);


4. 중괄호를 닫는 것을 잊어버림

이것은 매우 흔한 실수입니다. 이것이 일반적인 두 가지 상황이 있습니다.

첫 번째 상황: 어딘가에서 코드를 복사하기로 결정했고 실수로 일부 중괄호를 놓쳤습니다. 두 번째 상황: 모든 여는 괄호가 닫는 괄호와 일치하는지 확인하기 위해 자신을 괴롭히는 것이 아닙니다.

이러한 오류를 방지하려면 일반적으로 초보자 프로그래머가 여는 중괄호 아래에 닫는 중괄호를 작성하는 것이 좋습니다.

예:

잘못된 코드입니다 올바른 코드
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
}
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Mathematics!");
      }
   }
{
   if (2 < 3)
   {
      if (3 < 4)
      {
         System.out.println("Mathematics!");
      }
   }
}


5. 괄호를 추가하는 것을 잊어버림

대부분의 경우 이러한 실수는 비슷한 상황에서 괄호가 필요하지 않은 프로그래밍 언어를 알고 있는 개발자가 저지르는 실수입니다.

한 가지 가능성은 메서드 호출 끝에 괄호를 넣는 것을 잊어버리는 것입니다.

또 다른 가능성은 명령문의 조건을 괄호로 묶는 것을 잊었다는 것입니다 if-else.

예:

잘못된 코드입니다 올바른 코드
System.out.println("Hello!");
System.out.println;
System.out.println("And bye!");
System.out.println("Hello!");
System.out.println();
System.out.println("And bye!");
if 2 < 3
{
   if 3 < 4
   {
      System.out.println("Mathematics!");
   }
}
if (2 < 3)
{
   if (3 < 4)
   {
      System.out.println("Mathematics!");
   }
}


6. main메서드 선언을 잘못 작성

피비린내 나는 main방법을 선언하자마자! 이 형편없는 방법만큼 초보자를 놀라게 하는 것은 없을 것입니다. 중요한 것은 그들이 항상 놀라고 프로그램이 시작되지 않는 이유를 궁금해한다는 것입니다.

그리고 물론 프로그래머가 책임을 져야 하는 것은 아니지만 프로그램, 컴파일러, 코드 유효성 검사기, Java 시스템 등이 책임이 있습니다. 희생양의 목록은 끝이 없습니다.

예:

잘못된 코드입니다 설명
static void main(String[] args)
public누락
public void main(String[] args)
static누락
public main(String[] args)
void누락
void main(String[] args)
public그리고 static누락되었습니다
public static void main(String args)
[]누락
public static void main()
String[] args누락
public static int main(String[] args)
우리는 int대신void


7. 파일명이 클래스명과 다른 경우

Java 표준에 따르면 모든 Java 클래스는 클래스 이름과 동일한 이름의 파일에 저장되어야 합니다. 그리고 앞서 언급한 것처럼 문자의 대소문자가 여기서 중요합니다.

파일 이름 클래스 이름 메모
Solution.java
Solution
다 괜찮아
Solutions.java
Solution
파일 이름에 불필요한 문자가 있습니다.s
solution.java
Solution
파일 이름은 소문자로 시작합니다.
Solution.txt
Solution
파일 확장자가 .txt대신.java
Solution.java
solution
클래스 이름은 소문자로 시작합니다.

실제로 .java 확장자를 가진 파일에서 여러 클래스를 선언할 수 있지만 그 중 하나만 public클래스 이름 앞에 단어를 가질 수 있습니다. 그리고 이것은 파일 이름과 일치해야 하는 이름입니다.

.java 파일에는 항상 이름이 파일 이름과 동일한 클래스가 있어야 하며 해당 클래스에는 수정자가 있어야 합니다 public. 예:

솔루션.자바
public class Solution
{
}

class Apple
{
}

class Pineapple
{
}

또한 Java 언어를 사용하면 클래스 내에 클래스를 작성할 수 있습니다. 이것은 위의 제한을 우회하는 또 다른 방법입니다. 공용 클래스( public수정자가 있는 클래스)가 파일에서 선언되고 파일 이름과 동일한 이름을 갖는 경우 이 공용 클래스 내에서 원하는 만큼 많은 클래스를 선언할 수 있습니다. 즉, 이들은 더 이상 일반 클래스가 아닙니다. 대신 내부 또는 중첩 클래스가 됩니다. 예:

솔루션.자바
public class Solution
{
   public class Apple
   {
   }

   public static class Pineapple
   {
   }
}


8. 쓰는 것을 잊는다package

프로그램에는 일반적으로 수천 개의 클래스가 있으므로 모든 클래스에 대한 간단하고 이해하기 쉬우며 고유한 이름을 찾기가 어려울 수 있습니다. 이것이 Java에서 package키워드를 사용하여 클래스를 패키지로 그룹화하는 것이 관례적인 이유입니다. 파일이 폴더로 그룹화되는 방식입니다.

그렇기 때문에 각 클래스는 자신이 속한 패키지의 표시로 시작해야 합니다. 예

패키지 없는 코드 수정된 예
public class Solution
{
}
package com.codegym.tasks.task0001;

public class Solution
{
}


9. 추가하는 것을 잊어버림import

프로그램에서 다른 사람의 클래스를 사용하려면 두 가지 옵션이 있습니다. 코드의 모든 곳에서 클래스 이름 앞에 패키지 이름을 써야 합니다. 또는 키워드를 한 번 사용하여 정규화된 클래스 이름을 작성할 수 있습니다 import.

예:

가져오기를 사용하지 않고 가져오기 사용
public class Solution
{
   java.util.Scanner scanner = new java.util.Scanner();
}
import java.util.Scanner;

public class Solution
{
   Scanner console = new Scanner();
}

두 옵션 모두 작동하지만 단순히 Scanner를 추가하지 않고 코드를 작성할 경우 import컴파일러는 클래스를 가져와야 하는 패키지를 이해할 수 없으며 Scanner프로그램이 컴파일되지 않습니다.