JAVA14 제네릭 타입의 컴파일 영향 사전학습 : Generic , 배열과 제네릭의 차이 Generic 재너릭이라는 용어는 포괄적인 이라는 뜻으로, 클래스 내부에 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 다이아몬드 표기법을 사용한다. (ex. ) 특징 같은 구조를 갖는 코드의 중복을 줄일 수 있다. 타입 안정성이 보장된다.(컴파일시 타입 체크가 가능하다) 타입 제한도 가능(extends, implement) 참조 타입(Wrapper Class)만 사용이 가능하다. 메소드 적용이 가능하다. 재너릭과 배열의 차이 1)재너릭은 불 공변, 배열은 공변 이다. 공변 = "자기 자신과 자식" 객체로 타입 변환을 허용해주는 것. 불 공변 ="자기 자신" 을 제외한 타입 변환이 허용되지 않는 것. __ 제너릭의 타입 안정성이 보장되는 원리.. JAVA 2021. 4. 10. 자바의 compile 과정 사전 지식 인터프리터와 컴파일러의 차이 인터프리터 컴파일러 한문장씩 읽고 바로 기계어 변환 후 실행 모든 소스코드를 기계어 파일로 변환하고 실행. python,php.... c,c++,java... 한줄씩 읽어 기계어로 변환 후 실행하는 면에서 빨라보이지만 만들어둔 실행 파일만 읽으면 되므로 실행속도 더 빠르다. JVM 구조 전체적인 흐름 : .java -> (javaC) ->.class (JVM이 이해할 수 있는 중간 언어)(바이트코드)-> 기계어 변환 요약 : class Loader를 통해 바이트 코드를 JVM내로 로드하고 Runtime data Area로 거쳐 Execution Engine으로 들어가 바이트 코드로 변환. (2가지 방식 JIT,Interpreter) Compile 과정 .java를 .. JAVA 2021. 4. 4. JVM 구조와 버전에 따른 변경 JVM 구조 Class Loader .java -(javac가 컴파일)-> .class - (jvm) -> Runtime Data Area 로 적재. Execution Engine classLoader에 의해 메모리에 적재된 클래스(바이트콛)들을 기계어로 변경하여 명령어 단위로 실행하는 것. 명령어 실행 방식 2가지 인터프리터 : 명령어를 하나씩 수행.(기본적 방식,전체 수행 느림 하지만 명령어 하나의 동작 빠름) Just In Time compiler(JIT) : 바이트 코드 -> 네이티브코드로 변환 후 인터프리팅하지 않으며 네이티브 코드로 실행 (실행 동작은 빠르지만 컴파일하는데 시간이 많이 소요.) Garbage Collector GC는 Heap메모리 영역에 생성된 객체들 중 참조되지 않는 객체들을.. JAVA 2021. 3. 28. Wrapper Class 와Primitive Type and First Class Collection Wrapper Class ,Primitive Type 8개의 기본타입을 객체로 포장해 주는 클래스를 래퍼 클래스라고 한다. 래퍼 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 준다.(박싱) 기본 타입 -> 래퍼 클래스 (박싱) 래퍼 클래스 -> 기본 타입 (언박싱) 오토박싱과 오토 언방식 래퍼 클래스의 객체의 인스턴스로 변환하는 과정을 Boxing 이라고 한다. 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정을 UnBoxing 이라고 한다. ※ 참조형과 기본형의 차이는 주소와 값의 차이로 인해 기본형 ==으로 비교가 가능하지만 참조형은 ==으로 비교할 수 가 없다(equals 사용). JDK 1.5부터는 박싱과 언박싱이 필요한 상황.. JAVA 2021. 3. 21. 이전 1 2 3 다음