
Java Application을 개발하면서 equals()와 hashCode()를 같이 재정의 해야 한다는 말을 들어보신 적 있으신가요?대부분의 IDE(=Ecilpse, Intellij 등)에서도 equals()와 hashCode()를 같이 재정의 하도록 되어있으며, Lombok에서도 @EqualsAndHashCode을 지원하고 있습니다. 그렇다면, 왜 equals()와 hashCode()는 같이 정의해야 할까요? 천천히 알아보겠습니다.equals()만 재정의 하는 경우public class Car { private final String name; public Car(String name) { this.name = name; } // intellij Generate ..

Optional을 설명드리기 이전에 NPE(=NullPointerException)에 대해 간략히 말씀드리고 넘어가겠습니다.NPE는 Java Application을 개발하면서 자주 접하는 Exception 중 하나입니다. 이 NPE를 피하기 위해서 Null 값을 검사하는 로직을 아래와 같이 구성해야 합니다.List names = getNames();// NPE를 방지하기 위해 null 검사를 해야함if(names != null){ names.sort();} 하지만, 변수가 많아질 경우, Null을 검사해야 할 요소가 많아지기 때문에 꽤나 번거로워집니다. 이러한 불편한 점을 개선하고자 등장한 것이 Optional 클래스입니다.Optional 클래스Java8 버전 이후부터 Optional 클래스를 이용..

JDK(Java Development Kit)란?Java Application을 개발하기 위해 필요한 도구들의 모음입니다.이는 개발자가 Java 코드를 작성하고 컴파일하여 Byte Code로 변환하는데 사용됩니다.JDK는 Java Compiler, JRE, Java Development Tools로 구성되어 있습니다.JDK는 Oracle Corporation에서 출시한 아래 Java 플랫폼들 중 하나를 구현한 것입니다.Java 플랫폼Java SE: Java Platform, Standard Edition표준 자바 플랫폼으로 표준적인 컴퓨팅 환경을 지원하기 위한 자바 가상머신 규격 및 API 집합을 포함합니다.Java EE, Java ME는 구체적인 목적에 따라서 이 Java SE를 기반으로 API 추가하..

JVM(Java Virtual Machine)OS(=운영체제)에 구애 받지 않고 CPU가 자바를 인식, 실행할 수 있게 하는 일종의 가상 컴퓨터입니다.따라서, Java는 JVM으로 인해 "운영체제에 독립적이다."는 장점이 있습니다. 컴파일 과정 원시 코드(=*.java)는 CPU가 인식하지 못하기 때문에 반드시 기계어로 컴파일 해야 합니다.Java는 JVM을 거쳐 OS에 도달하기 때문에 곧바로 OS가 인식할 수 있는 기계어로 컴파일 되지 않고, JVM이 인식할 수 있는 Byte Code(=*.class)로 변환됩니다. Java compiler를 통해 변환된 Byte Code는 기계어가 아니기 때문에 OS가 해석할 수 없습니다.따라서, JVM을 통해 Byte Code를 OS가 해석할 수 있는 기계어로 변..
- Total
- Today
- Yesterday