JavaRush /Java Blog /Random-KO /Java를 배우기 시작하는 사람들의 가장 일반적인 문제

Java를 배우기 시작하는 사람들의 가장 일반적인 문제

Random-KO 그룹에 게시되었습니다
기사를 이해하는 데 필요한 지식 수준: 초급. 당신은 Java 구문 퀘스트를 연구하는 중이며 초기 수준에 더 가깝습니다. Java를 배우기 시작하는 사람들의 가장 일반적인 문제 - 1이제 막 Java를 배우기 시작하셨습니다. 당신은 마치 풍요의 뿔에서 나온 것처럼 용어들로 가득 차 있습니다. 당신은 수많은 기술 정보로 가득 차 있으며 때로는 세 개의 소나무로 인해 혼란을 겪습니다. 저를 믿으십시오. 당신은 이미 프로그래밍에 참여했기 때문에 항상 그럴 것입니다. (이 순간 화면 밖에서 불길한 웃음 소리가 들리고 문장 중간에 끊긴 조용한 목소리가 속삭입니다. "달려... 전에 자신을 구하십시오. 너무 늦었어...”). 당신이 최고의 개발자라 할지라도 버그는 남은 프로그래밍 수명 동안 당신을 괴롭힐 것입니다. 그러나 이것은 들리는 것만큼 전혀 무섭지 않습니다.
이제 막 JavaRush를 배우기 시작했다면 이 기사에서 제기한 문제를 이미 접했을 가능성이 높습니다. 어떤 경우든, Java를 처음 배우면서 겪은 문제에 대해 설명하는 의견을 환영합니다.

레벨 0 문제: 비교 연산자(==)와 대입 연산자(=)에 대한 혼동이 있습니다.

이는 다른 프로그래밍 언어에서 전환하는 사람들에게 매우 일반적인 문제입니다. 그리고 일반적으로 초등학교 때부터 우리는 (=)이것이 등호라는 사실에 익숙해졌습니다. 기억하는 데 사용할 수 있는 간단한 트릭은 다음과 같습니다. 값 중 하나에만 관심이 있다는 것을 알고 있는 경우(하나를 다른 값에 할당) 단일 " =" 기호를 사용하고, 그렇지 않으면 모든 변수에 관심이 있는 경우 및 값(비교)에는 이중 " ==" 기호가 필요합니다.

문제: 비교 연산자(==)를 사용하여 문자열 동등성 테스트

해야 할 일: 이 연산자는 기본 유형의 동등성을 테스트하도록 설계되었으므로 을 사용하여 Java 객체의 동등성을 확인할 수 없다는 점(==) 을 기억하십시오 .
Java를 배우기 시작하는 사람들의 가장 일반적인 문제 - 2
객체의 경우 .equals(). 그리고 StringJava 언어에서는 객체(및 )에 지나지 않습니다 immutable.
로 표시된 객체는 Immutable 생성 후 상태를 변경할 수 없는 객체입니다. Java 에서 이는 클래스의 모든 인스턴스 필드가 로 표시되고 final기본 요소(또는 immutable)임을 의미합니다.

문제: 루프의 문자열 연결

직접 시도하지 마세요! 문자열이 연결될 때마다 새로운 객체가 생성됩니다 String(위에서 살펴본 것처럼 문자열은 immutable변경할 수 없습니다). 어떤 시점에서는 메모리가 부족해지거나 프로그램을 완료하는 데 너무 많은 시간이 걸리기 시작합니다. 해결책. 루프에서 콘텐츠를 연결할 때 StringBuilder대신 사용하세요 . String이 클래스는 StringBuilder문자열을 많이 변경해야 할 때 사용됩니다. 그리고 그러한 라인은 과 달리 String가 아닙니다 immutable.

문제: NullPointerException

null이런 종류의 예외는 실제로 실제 객체가 필요할 때 널 포인터를 사용하려고 할 때 발생합니다 .
모든 기본 유형에는 기본값이 있습니다. 그래서 y int는 이고 0, y boolean는 입니다 false. 모든 참조 유형, 즉 객체의 기본값은 입니다 null. 객체나 유형이 아니라 특별한 값입니다. 이는 본질적으로 "여기에는 아무것도 없습니다"를 의미합니다.
Java를 배우기 시작하는 사람들의 가장 일반적인 문제 - 3
해야 할 일: 어떤 시점에서 개체가 값을 허용할 수 있는 방식으로 코드가 작성된 경우 특히 개체를 직접 생성하지 않는 경우 null"확인"을 추가해야 합니다 . 또한 ' null의 집합보다 빈 컬렉션을 반환하는 것이 더 낫다는 점을 기억하세요 . nullgetter 및 setter에 대한 유효성 검사를 추가하는 것도 좋을 것입니다.

문제: 어떤 이유로 if / while / for 루프가 작동하지 않습니다.

if (something.equals («что-то еще»)); {// <---- корень зла!!!
     System.out.println («Почему я не работаю???»);
}
여기서 무슨 문제가 있습니까? 간단합니다. 추가 세미콜론이 수십만 명의 초보 Java 프로그래머의 피를 망쳤습니다. 글쎄요, . 이후에는 필요하지 않습니다 if (). 언어의 관점에서 볼 때 이러한 구문은 상당히 수용 가능하므로 컴파일러는 이에 대해 불평하지 않습니다. 그러나 이는 조건문을 종료하고 블록 내부의 코드는 {}위의 조건을 결코 만족하지 않습니다.
Java를 배우기 시작하는 사람들의 가장 일반적인 문제 - 4
해결책: 디자인 논리를 기억하세요. " ;" 표시는 특정 블록의 끝을 의미하지만 여기서는 모든 것이 이제 막 시작되었습니다.

문제: 정적 메서드(예: main)에서 비정적 멤버 변수에 액세스하려고 합니다.

해결책 . 이 문제는 개념 자체의 이해와 관련이 있습니다 static. 메소드에 이 단어가 표시되어 있으면 기본 메소드를 호출하기 위해 클래스를 인스턴스화할 필요가 없다는 의미입니다. 따라서 해결책은 "정적"을 잘 이해하고 그 본질을 이해하는 것입니다.

문제: 기존 라이브러리와 도구를 개발하여 바퀴를 재발명하려고 합니다.

해결책. 실제로는 그다지 문제가 되지 않습니다. 초보자에게 이것은 더 유용한 운동입니다. 그러나 결과에 집중하려는 경우(예: 편리한 가입자 데이터베이스 생성) 전화번호부에서 가입자를 검색하는 것은 애플리케이션 결과 중 하나일 뿐입니다. 이 경우 이진 검색 알고리즘을 작성할 필요가 없습니다. 기존 것을 사용하십시오. (누군가가 이미 작성했으며 표준 라이브러리에 있습니다.) 따라서 Oracle 문서에서 Java 표준 라이브러리를 연구하십시오. Google에 대해 배우고, Stack Overflow를 읽는 데 익숙해지고, JavaRush 도움말 에 대해 질문하세요 ! ...물론 이것이 초보자의 모든 문제는 아닙니다. 댓글로 여러분의 의견을 적어주세요! Java 관련 기사를 읽고 싶으십니까? Java 개발자 그룹에 가입하세요 . 여기에는 흥미로운 것들이 많이 있습니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION