record의 도입 record는 Java 14 버전부터 새롭게 도입된 키워드이다. enum과 마찬가지로 record도 제약이 있는 클래스의 한 종류이다. 데이터를 변경하지 않고 생성자와 접근자 메서드를 포함하는 plain data carrier라고 오라클 공식문서에서 설명한다. Spring의 DTO와 같이 객체 간에 불변 데이터를 전달하는 일은 빈번한다. 불변 데이터를 전달하기 위해 사용하는 DTO 객체의 경우에는 setter 메서드 같은 데이터를 변경하는 메서드를 작성하지 않고 생성자로 인스턴스가 생성될 때만 값을 초기화하고 필드 앞에 final을 붙이는 방식으로 구현했었다. 이는 record를 통해서 대체할 수 있다. record를 class로 변환 public record Rectangle(flo..
동등 연산자(==)을 사용한 비교의 문제점 Integer integer1 = 100; Integer integer2 = 100; System.out.println(integer1 == integer2); // true 위의 코드를 실행했을 때 integer1과 integer2는 동일하다고 나온다. Integer integer1 = 1_000; Integer integer2 = 1_000; System.out.println(integer1 == integer2); // false integer1, integer2 값이 4였을 때와는 달리 위의 코드는 integer1과 integer2를 비교했을 때 다르다는 결과가 출력된다. Integer 값을 동등 연산자(==)을 사용했을 때 정확하게 비교할 수 있는 값은..
이 글은 이펙티브 자바를 읽고 정리한 글입니다. 클래스의 인스턴스를 생성하는 방법 public 생성자 정적 팩터리 메서드 (static factory method) 클래스는 public 생성자 외에도 정적 팩터리 메서드를 제공하여 객체를 생성할 수 있게 해준다. 정적 팩터리 메서드의 장점 1. 이름을 가질 수 있다 public 생성자를 사용해서 인스턴스를 생성할 때 생성자와 생성자에 넘기는 매개변수로는 객체의 특성을 제대로 설명하기 어렵다. new BigInteger(int, int, Rnadom)과 BigInteger.probablePrime으로 BigInteger 객체를 생성한다고 했을 때, 후자의 이름을 보면 소수인 BigInteger를 생성하는 것을 알 수 있다. 하나의 시그니처(접근 제어자, 클..
SOLID 객체 지향 설계 프로그래밍 및 설계의 다섯 가지 기본 원칙의 두문자어 SRP (Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Principle): 개방 폐쇄 원칙 LSP (Liskow Substitution Principle): 리스코프 치환 원칙 ISP (Interface Segregation Principle): 인터페이스 분리 원칙 DIP (Dependency Inversion Principle): 의존 역전 원칙 ⇒ 응집도는 높이고 (High Cohesion), 결합도는 낮추는 (Loose Coupling) 고전 원칙을 을 객체 지향의 관점에서 재정립한 것 결합도 어떤 모듈이 다른 모듈에 의존하는 정도 응집도 모듈 내부의 기능이..
JDK VS JRE VS JVM JDK 자바 개발 도구(Java Development Kit) JVM을 위한 소프트웨어 개발 도구 JRE 자바 실행 환경(Java Runtime Evironment) JVM을 위한 OS JVM 자바 가상 기계(Java Virtual Machine) 가상의 컴퓨터 자바 프로그램은 JDK를 이용해 개발되고, JRE에 의해 JVM에서 실행된다. JDK에 의해 개발된 자바 프로그램을 JRE가 포함하고, 이런 JRE는 JVM에 포함되는 형태로 배포된다. JVM은 자바 코드 컴파일러인 javac.exe를 포함하여 자바 소스 파일인 .java파일을 자바 목적 파일인 .class로 컴파일해준다. JRE에는 자바 프로그램 실행기인 java.exe를 포함하고 있다. 이런 구조로 자바는 플..
String s1 = "hello"; String s2 = "hello"; String s3 = new String("hello"); System.out.println(s1 == s2); // true System.out.println(s1 == s3); // false String Pool the special memory region where Strings are stored by the JVM 위는 String Pool을 한 문장으로 설명한 것이다. 해석하면 JVM에 의해 문자열이 저장되는 특별한 메모리 공간이다. Java에서 문자열은 immutability를 가진다. 따라서 JVM은 String Pool을 사용하여 문자열 리터럴의 값을 하나만 저장하는 방식으로 메모리를 최적화 할수 있다. 이런 ..
- Total
- Today
- Yesterday
- string
- java
- 네이버 2022 공채
- 코틀린
- 주생성자
- 코딩테스트
- 1차 인터뷰
- hashcode
- postman collection
- python3
- Python
- pm.expect
- squash merge
- postman
- 2차 인터뷰
- solidity
- postman tests
- pm.test
- mysql
- Kotlin
- go 특징
- git
- Kotlin In Action
- 확장 함수
- downTo
- Squash and merge
- github
- DGS Framework
- Basic Type
- graphql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |