JAVA/Java: 149개의 글
플렉션(Reflection) 로딩이 완료된 클래스에서 또 다른 클래스를 동적으로 로딩(Dynamic Loading)하여 사용하는것. Class.forName("클래스이름").newInstance 인터프리터(interpreter) 자바 컴파일러에 의해 변환된 자바 바이트 코드(.class)를 읽고 해석하는 역할 클래스 로더(Class Loader) 동적으로 클래스를 로딩해주는 역할 JIT 컴파일러(Just-In-time compiler) 프로그램이 실행중인 런타임에 실제 기계어로 변환해주는 컴파일러 동적 번역(Dynamic Translation)이라고도 불리며, 프로그램 실행 속도를 향상시키기 위해 개발됨 자바 컴파일러가 생성한 자바 바이트 코드를 런타임에 기계어로 변환하는데 사용 JVM 실행 과정 OS로..
Type Parameter 이름 컨벤션 Type Parameter의 이름 컨벤션에 대해서 알아보도록 하겠습니다. 이번 예제에서는 T를 사용했었습니다. 이 T도 오라클 문서의 이름 컨벤션에서 가져온 것입니다. Type Parameter로 여러가지 타입이 올 수 있습니다. 아래는 오라클 문서에 있는 Type Parameter의 컨벤션 리스트입니다. E - 요소 (Collections Framework에서 사용) K - 키 N - 숫자 T - 타입 V - 값 S,U,V etc. - 2, 3, 4 번째 types
자료구조는 list, stack, queue, hash table이 있다. 그 중에서 list, set, map의 차이점에 대해 알아보자 1. List : 저장공간이 필요에 의해 자동으로 늘어난다 ( 순서가 있는 저장공간 ) * 특징 : 순서가 있고, 중복을 허용(배열과 유사) * 장점 : 가변적인 배열9배열이 자동으로 늘어남) * 단점 : 원하는 데이터가 뒤쪽에 위치하는 경우 속도의 문제 * 방식 : equals()를 이용한 데이터 검색 자바에서 list자료 구조는 크게 vector, arraylist, linkedlist로 나눠진다. 1) Arraylist : 객체 내부에 있는 배열에 데이터를 저장한다 - 상당히 빠르고 크기를 맘대로 조절할 수 있는 배열 - 단방향 포인터 구조로 자료에 대한 순차적인..
java8의 optional api 많이들 사용하실텐데요. 어찌보면 당연하지만 햇갈리는 내용에 대해 다뤄보겠습니다. 마무리 연산인 orElse와 orElseGet의 차이입니다. 귀찮으신분들을 위해 요약을 먼저 하자면 orElse는 null이던말던 항상 불립니다. orElseGet은 null일 때만 불립니다. 예시 String username = "이름"; String result1 = Optional.ofNullable(username).orElse("no name"); System.out.println(result1); String result2 = Optional.ofNullable(username).orElseGet(() -> "no name"); System.out.println(result2);..
1. GC (Garbage Collection) GC란 간략히 정의 하자면 Heap 메모리를 재활용 하기 위해 Root Set에서 참조 되지 않는 Object(Unreachable Object)들을 해제해 가용한 공간을 만드는 작업을 의미 합니다. Java에서 이런 메모리 해제 작업을 Garbage Collector가 담당하며, 메모리 해제하는 작업을 Garbage Collection이라고 합니다. java8의 은 아래 와 같이 메모리를 관리 합니다. (Java8에서는 기존의 Permanent Generation 이 Metaspace로 대체 됩니다.) Heap 은 Young Generation과 Old Generation 나뉩니다. Young Generation은 Eden, Survivor space 0..
1. 개요 final 키워드를 떠올릴 때면 그냥 상수로만 생각할 때가 종종 있습니다. final을 클래스, 메서드, 변수에 선언하면 조금씩 할 수 있는 부분들이 제안됩니다. 너무 당연한 내용이지만, 시간이 지니니까 기억에서 사라져버려서 이번에 다시 한번 상기하기 위해 정리를 해보았습니다. 자바에서 final 키워드는 여러 컨텍스트에서 단 한 번만 할당될 수 있는 entity를 정의할 때 사용됩니다. (위키피니아) final 키워드는 총 3가지에 적용할 수 있습니다. 각각에 대해서 세부적으로 알아보죠. final 변수 원시 타입 객체 타입 클래스 필드 메서드 인자 final 메서드 final 클래스 2. Final 변수 2.1 원시 타입 로컬 원시 변수에 final로 선언하면 한번 초기화된 변수는 변경할 ..
자바에서 제공하는 this 키워드는 인스턴스 자기 자신를 가리키는 키워드입니다. 이 this 키워드를 통해 클래스 메서드 및 생성자에서 자기 자신의 데이터를 업데이트하거나 조작할 수 있습니다. 여기서 중요한 것은 this 키워드는 이 클래스를 기반으로 생성된 인스턴스를 가리키는 참조라는 사실입니다. 인스턴스를 가르키는 참조와 인스턴스 자체는 다르다는 것을 알아두셨으면 좋겠습니다. public class ThisExample { private String name; private Integer age; private String address; public ThisExample() { this.name = "KBS"; this.age = 19; this.address = "Seoul"; } public S..
| Java Optional( 자바 옵셔널 ) Java Optional 클래스는 Java 8에서 추가되었으며 자바의 고질적인 문제인 NullpointerException 문제를 해결할 수 있는 방법을 제공합니다. import java.util.Optional; | of, ofNullable로 객체 감싸기 자바에서 제공하는 객체를 Optional 객체로 감싸기 위해서는 Optional 에서 제공하는 of 와 ofNullable 매서드를 사용합니다. 둘의 차이점은 of는 인자로서 null값을 받지 않는다는 것이고 ofNullable은 null값을 허용한다는 것입니다. @Test public void givenNonNull_whenCreatesNonNullable() { String name = "saelob..
| 개요(Introduction) Java에서 객체가 어떻게 형성되고 관리되는 지 이해하려면 .java 파일로 작성되었던 소스코드가 어떻게 JVM위로 로딩되는 지 아는 것이 대단히 중요합니다. 왜냐하면 클래스 로딩 때 발생하는 이슈를 해결할 수 있고 코드 상에서 동적으로 클래스를 로딩하는 구문을 이해할 수 있으며 드물지만 자신만의 클래스 로더(User-defined loader)를 만드는 것이 가능하기 때문입니다. | 자바 파일(Java file), 클래스 파일(Class file) 자바 파일은 확장자가 .java 인 파일로서 자바 언어로 소스 코드를 작성할 때 그 내용을 적는 파일을 뜻합니다. 그리고 이 자바 파일을 자바 컴파일러로 컴파일한 파일이 바로 .class 확장자를 가진 클래스 파일입니다. 우..
enum 이전 포스팅 : https://sjh836.tistory.com/134 1. 이놈(Enum...)을 효율적으로 찾는 방법 장르, 카테고리, 각종 컨텐츠 타입 등 enum 의 활용은 무궁무진하다. enum 을 잘 선언했다면, enum 을 잘 찾는 것도 중요하다 예를들어 DB에 enum name 이 아닌.. 무언가 코드값만 저장하고, 꺼내쓸 때 코드를 enum 으로 바꾸는 상황을 가정해보자. 다른 예제로는 API 응답값 내 코드를 우리 서비스의 enum 으로 바꿔쳐야한다던지.. 아래에서는 enum 을 찾아내는 3가지 예제 코드들이다.@Getter @AllArgsConstructor public enum @Getter @AllArgsConstructor public enum OperatingSyste..