JAVA

· JAVA
우선 내가 여태 알고있던 Java의 실행 과정이다. 1. 개발자가 작성한 .java 파일을 컴파일러가 .class(바이트코드 파일)로 변경한다. 2. JVM의 클래스 로더가 .class를 메모리에 적재시킨다.(런타임 시점) 3. JVM의 실행 엔진이 메모리에 적재된 바이트코드를 실행 시킨다. 간단하게 위 단계의 개념으로 알고있었는데, 조금더 세세하게 내부 개념을 정리해보려고 한다. 컴파일 과정 Java를 설치하면 javac.exe의 형태로 컴파일러가 먼저 설치된다. 자바 컴파일러가 개발자가 작성해놓은 .java 파일을 .class(바이트 코드)로 변경시켜주는 역할을 한다. 자바 코드 public class Human{ private final String name; private final int age..
· JAVA
많은 사람들도 그렇고 나도 아래의 기본 개념으로 이해하고 있었다. equals() : 두 객체의 "내용"이 같은지 비교한다. hashcode() : 객체의 고유한 해시코드를 반환한다. 그러면 2개의 값이 동일한 객체를 만들어서 equals()를 사용하면 true가 나와야겠네? Human h1 = new Human("박기현", 23); Human h2 = new Human("박기현", 23); System.out.println(h1.equals(h2)); // -> 결과 : false 그러나 실제 결과는 false가 나온다. 그 이유는 Object 타입의 equals()메서드 내부를 보면 이해할 수 있다. 내부에서 ==을 이용해서 값을 리턴한다. ==을 사용하게 되면 두 객체의 주소값이 같은지 확인한다. ..
· JAVA
나는 여태 프로젝트를 진행하면서 Class에 lombok을 사용해서 @Builder 어노테이션으로 Entity를 생성했다. 클래스에 @Builder를 붙이면 해당 클래스가 가진 모든 필드를 파라미터로 넣어서 객체를 생성해야 했기에 Entity를 생성하는 데 적합하다고 생각해서였다. 그런데 오늘 나왔던 얘기중에 Class에 @Builder를 붙이지 말고, 생성자를 만들어서 해당 생성자에 @Builder를 붙이라는 말씀이 나왔다. 우선 @Builder에 대해 자세하게 알아봐야한다. 디자인 패턴중에서 빌더 패턴을 사용하면 인스턴스를 생성할 때 명시적으로 파라미터를 넣어줄 수 있다는 장점이 있다. 또한 파라미터 순서대로 넣지 않아도 된다는 아주아주 큰 장점이 있다. 만약에 빌더를 사용하지 않고 생성자로 인스턴스..
· JAVA
TDD에 대해 공부하다가 Record로 이너 클래스를 만드는 경우를 볼 수 있었다. Record는 자바 14에 새로 도입되었고 자바 16에서 정식 채택된 새로운 유형의 클래스다.불변 객체를 쉽게 생성하고 다룰 수 있다는 특징이 있다. 밑에는 Record를 사용하지 않고 기존에 Java로 불변 객체를 만드는 Class다.import java.util.Objects;public final class Car { private final String name; private final int price; // 생성자 public Car(String name, int price) { this.name = name; this.price = price; } ..
· JAVA
자바를 사용하면서 List나 Map, Set을 많이 사용했는데 지금까지 아무 생각 없이 그냥 사용해 왔던 것 같다. 그래서 어떤 기능을 가지고, 어떤 특징을 가졌는지 정리해보고자 한다. Collections 프레임워크는 자료구조와 관련된 인터페이스, 클래스를 지칭하는 용어다. Collections에는 대표적으로 List, Set이 있다. (Map은 Collections에 포함되지 않음) List의 특징 1. 순서를 가진다. 2. 크기가 정해져 있지 않다.(동적) 3. 중복된 값을 넣을 수 있다. Set의 특징 1. 순서를 가지지 않는다. 2. 크기가 정해져있지 않다.(동적) 3. 중복된 값을 넣을 수 없다. 아래는 List에서 사용 가능한 인터페이스 메서드이다. ArrayList 제일 많이 사용하는 Li..
indeep
'JAVA' 카테고리의 글 목록