오늘은 자바의 강력한 기능 중 하나인 '레코드(Records)'에 대해 기록을 해보려고 합니다. 자바 16부터 정식으로 도입된 레코드는 데이터 전송 객체(DTO)의 생성을 더욱 간결하고 명확하게 만들어 줍니다. 저는 보통 lombok을 사용해서 어노테이션을 덕지덕지 붙여놨었는데 DTO를 Record로 생성하면 간단하게 해결되더라구요. 정리를 해보자면 자바 레코드란? 자바 레코드는 데이터를 운반하는 데에 최적화된 불변의 데이터 클래스입니다. 기존의 클래스보다 훨씬 간결한 코드로 필드와 데이터를 정의할 수 있어, 개발자의 편의성을 크게 향상시킵니다. 예제 한번봅시다. public record Person(String name, int age) {} 끝. 단 몇 줄의 코드로 Person 클래스를 완성할 수 있..
자바(Java) 실무와 이론
Java 프로그래밍 완벽 가이드 Java 실무 기술과 객체지향 설계의 모든 것! 디자인 패턴, 멀티스레딩, Stream API 등 최신 기술과 실전 사례를 제공합니다.자바(Java) 프로그래밍에서 매우 중요한 개념인 'Try-with-resources'에 대해 깊이 있게 탐구해보려 합니다. 이 기능은 자바 7부터 소개되었으며, 코드를 더 깔끔하고 안전하게 만드는 데 큰 도움이 됩니다. 특히 파일 입출력, 데이터베이스 연결과 같은 자원을 사용할 때 이 기능의 중요성이 더욱 부각됩니다. Try-with-resources란 무엇인가요? Try-with-resources는 자바에서 'AutoCloseable' 인터페이스를 구현하는 객체들을 자동으로 닫아주는 구문입니다. 이는 개발자가 명시적으로 자원을 해제하는 번거로움을 줄여주며, 예외 발생 시에도 안전하게 자원을 해제할 수 있도록 도와줍니다. 예제로 바로 알아봅시다. 우선 Try-with-resources를 미사용 해보죠...
VM명세서를 자꾸 까먹어서 간단하게 기록해두려고한다 우선 HelloWorld.java 를 작성 후 컴파일을 해서 뜯어보자 javap -v 명령어를 이용해서, 역어셈블리를 해보면 클래스파일의 자세한 정보를 확인 할 수 있다. 위의 클래스 구조를 표로 정리 한 것이다. VM 명세서라고도 한다. 매직넘버 (magic number) 0xCAFEBABE 클래스 파일 포맷 버전 (version) 클래스 파일의 메이저/마이너 버전 상수 풀 (constant pool) 클래스 상수들이 모여 있는 곳 액세스 플래그 (access flag) 클래스 종류를 표시 this 클래스 (this class) 현재 클래스명 슈퍼 클래스 (super class) 부모클래스명 인터페이스 (interface) 클래스가 구현한 모든 인터페..
String vs StringBuilder vs StringBuffer 공통점은 문자열을 다루는 객체이다 차이점은 간단하게 정리하자면 아래와 같다 String - 불변 StringBuilder - 가변 StringBuffer - 가변 + 스레드 안전(동기화 지원) 특성 String StringBuilder StringBuffer 변경 가능성 불변 (Immutable) 가변 (Mutable) 가변 (Mutable) 스레드 안전성 X X O (동기화 지원) 1. String 객체부터 살펴보자 java.lang.String을 살펴보면, final이 붙어있어서 값을 바꿀 수 없음을 알 수 있다. 하지만 아래 예제를 보면 값이 변할 수 있다? String data = "합쳐"; data = data + "지는데오..