본문 바로가기

Back-end/Java

(25)
[Java] Java 8 VS Java 11 Java 8과 Java 11 차이점 Java 8 Heap Permanent Generation 제거 Interface Default and Static Methods: 인터페이스에 디폴트 메소드와 정적 메소드 포함 가능 람다 표현식 메소드 참조 Stream API Date and Time API 지원 Optional 지원 배열 정렬의 병렬 처리 Garbage Collector: Default GC - Paralle GC Java 11 String 클래스에 새로운 메소드 추가 java.nio.file.Files 클래스에 새로운 메소드 추가 컬렉션 인터페이스에 새로운 메소드 추가: toArray() 메소드 Predicate 인터페이스에 새로운 메소드 추가 람다에서 로컬 변수 Var 사용 자바 파일 실행 Ga..
[Java] Compiler VS Interpreter 자바 언어에서 컴파일 방식과 인터프리터 방식 1. 컴파일 방식 고급 언어로 작성된 프로그램을 목적 프로그램으로 번역 후 링킹 작업을 통해 실행 프로그램을 생성함 고레벨 언어를 바로 기계어로 변환 자바는 javac로 컴파일하고 java 실행 시 중간 언어(클래스 파일)을 한줄씩 자바 인터프리터가 번역하기에 컴파일 언어 이면서 인터프리터 언어임 2. 인터프리터 방식 고급 언어로 작성된 프로그램을 한줄씩 번역해서 OS에서 인식하는 기계어로 번역하는 역할 고레벨 언어를 바로 기계어로 번역하지 않고 중간 형태로 변환 시킨 후 실행 참고: https://velog.io/@jaeyunn_15/OS-Compiler-vs-Interpreter
[Java] String이 불변인 이유 Java에 String은 불변(Immutable) 객체입니다. 불변 객체(Immutable)란, 객체가 생성된 후 내부의 상태가 변하지 않고 계속 유지되는 객체를 말합니다. 즉, 변수에 객체가 한 번 할당되면, 해당 객체의 참조를 변경할 수도, 내부의 상태를 수정할 수도 없습니다. String이 불변인 이유? 1. String Pool String이 불변이기 때문에 String Pool도 존재할 수 있습니다. Java에서는 String Pool이라는 공간에 String을 포함시켜서, 매번 String 객체를 새로 생성하기보다 값이 같은 String이라면 String Pool에 있는 객체를 재사용할 수 있도록 구현함 -> String 리터럴 변수 저장 즉, 값이 같은 String은 String Pool 내..
[Java] String = " " VS new String(" ") new 연산자 생성 Heap 영역 존재 String hobi = new String("hobi"); 문자열 리터럴 생성 string constant pool 영역 존재 String hobi = "hobi"; 참고: https://haenny.tistory.com/18 참고: https://ict-nroo.tistory.com/18
[Java] Wrapper class 기본 자료형을 객체 타입의 자료형으로 변환이 필요할 때 주로 사용한다. 사용 이유 객체로 저장해야할 경우 매개변수로 객체가 요구될 경우 (ex. 제네릭, collection의 타입) 제네릭이나 컬렉션에서 사용할 경우, 기본형을 쓸 수 없기 때문에 이를 Wrapping한 형태를 사용해야함 특징 산술 연산을 위한 클래스가 아니기 때문에 Immutable 함 (불변) 값에 대한 변경은 불가하고 새로운 값(객체)의 할당이나 참조만 가능 Boxing : 기본 자료형 -> Wrapper Class UnBoxing : Wrapper Class -> 기본 자료형 기본 타입(primitive type) -> 래퍼 클래스(Wrapper Class) byte -> Byte short -> Short int -> Intege..
[Java] Checked Exception 과Unchecked Exception 둘의 차이는 RuntimeException을 상속하는가 여부에 따라 다릅니다. RuntimeException을 상속하면 UncheckedException이 됩니다. 스프링 트랜잭션 추상화(@Transactional)에서 rollback 대상은 바로 UncheckedException 입니다. 예외(Exception) java.lang.Exception 클래스의 서브 클래스들은 Error와 달리 애플리케이션 코드에서 예외가 발생하였을 경우에 사용된다. 그리고 Exception은 다시 체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception)로 구분된다 체크 예외(Check Exceptioin) 체크 예외는 RuntimeException 클래스를 상속하지 않은 Except..
[Java] equals() 와 hashCode() equals() equals() 는 보통 동일한 객체인지 확인할 때 사용한다. 항상 그런 것은 아니고 String 의 경우 문자열이 동일한 지 확인할 때 사용함 // Object의 기본 equals 메서드 public boolean equals(Object obj) { return (this == obj); } hashCode() int hashCode()로 정의된 hashCode 메소드는 실행 중에 (Runtime) 객체의 유일한 integer 값을 반환한다. Object 클래스에서는 heap에 저장된 객체의 메모리 주소를 반환하도록 되어있다. (항상 그런 것은 아니다.) native 언어로 작성된 메소드로 구체적인 내부 구현부는 확인하기 어렵지만, 객체의 해시 값을 반환한다고 주석에 명시 되어 있음 ..
[Java] 자바에서 null을 안전하게 다루는 방법 public method가 아닌 곳에는 assert를 사용하여 null을 방어할 수 있습니다. 또한 메소드의 인자를 받을 때 Objects.requireNonNull()을 사용하여 방어할 수 있습니다. 그리고 Optional을 사용해 리턴 타입에서 null을 반환하지 않도록 방어할 수 있습니다. 마지막으로 사전 조건과 사후 조건을 명확히 하여 계약에 의한 설계를 실천해야 합니다.