java
-
자바 - 와일드카드java 2025. 12. 14. 15:55
1.개요제네릭과 와일드카드 차이에 대해 이해하는게 쉽지않았다. 따라서 두개의 차이가 뭔지를 정리해보았다. 2.제네릭, 와일드카드서적을 보면 제네릭도 다형성을 활용해 다양한 타입을 받을 수 있고 와일드카드도 마찬가지라고 나와있다.처음 제네릭과 와일드카드를 접했을때 똑같은건데 도데체 차이가 뭔지, 왜 자바진영에서는 똑같은걸 두개나 만들어논건지 많이 헷갈렸다. 하지만 이것만 이해하면 된다. 제네릭은 다형성을 활용해 다양한 타입을 받을 수 있는 제네릭 타입의 변수, 제네릭 매개변수를 사용하는 메서드를만드는것이다. 그리고 와일드 카드는 이미 제네릭으로 만들어진 매개변수를 사용하기 쉽게 변경할 수 있는 도구일 뿐이다.다시한번 말하지만 와일드카드는 제네릭 타입이나 제네릭 메서드를 정의할 때 사용하는게 아니다. 3.제..
-
자바 - 제네릭java 2025. 12. 14. 13:10
1.개요제네릭을 처음 접했을때 이해하는데 많이 시간이 소요됐다. 내가 어떻게 이해했는지를 공유하기 위해 해당 문서를 작성하게되었다. 2.제네릭이 필요한 근본적인 이유 Box 클래스가 존재한다.package org.src.study;public class Box { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; }} Box 에 String 이라는 타입의 값을 담았다.package org.src.study;public class StudyMain { public static void..
-
자바 컴파일,런타임과정java 2024. 12. 21. 12:56
1.개요많은 블로그나 자료에서 컴파일과정에 대해 잘못 설명하고있어 이를 바로 잡기 위해 작성하게 됐습니다. 2.타 블로그 및 자료에서 설명하는 컴파일 과정개발자가 자바 소스코드(.java)를 작성합니다.자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일합니다. 이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드입니다. 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다.컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달합니다.클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime ..
-
스레드java 2024. 8. 24. 15:23
1.개요자바 스레드에 대해 공부한 부분을 정리해보았습니다. 2.자바 메모리 구조 1)메서드 영역 : 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.클래스 정보 : 클래스의 실행코드,클래스 필드, 메서드 등 모든 실행 코드가 존재한다.static 영역 : static 변수들을 보관한다.런타임 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다. (ex)private static final String HUMAN = "GG";2)스택 영역 : 자바 실행 시, 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보등을 포함한다.스택 프레임 : 스택 영역에 쌓이는 네모 박스가 하나의 스택 프레임이다. ..
-
자바 - 클래스,인스턴스,객체java 2019. 12. 5. 11:48
개요자바 입문 시 가장 헷갈리는 클래스, 인스턴스, 객체에 대한 설명내용 입니다. 클래스클래스는 데이터와 기능을 묶는 추상적인 틀이자 설계 도면입니다. 코드가 실행되기 전, 프로그램의 구조를 정의하는 역할만 수행하며 메모리 할당이 일어나지 않습니다.ex)건축물의 설계도 인스턴스인스턴스는 클래스라는 설계도를 기반으로 메모리 공간에 실제로 만들어진 구체적인 실체입니다. '객체'라는 넓은 범주 안에 속하며, 클래스가 구체화(Instantiation)된 결과물입니다.ex)설계도를 보고 실제로 지어진 건물 객체객체(Object)는 프로그래밍에서 사용되는 모든 실체와 개념을 포괄하는 가장 넓은 개념입니다.ex)건물들