Java 22

싱글 쓰레드와 멀티 쓰레드

싱글 쓰레드 싱글 쓰레드란, 프로세스 안에서 하나의 쓰레드만 실행되는 것을 의미한다. Main 메서드(public static void Main)만 실행시켰을 경우, 싱글 쓰레드라고 한다. Java에서 Main 메서드를 실행하는 쓰레드를 메인 쓰레드 라고 한다. JVM의 메인 쓰레드가 종료되면 JVM도 같이 종료된다. 멀티 쓰레드 멀티 쓰레드란, 프로레스 안에서 여러개의 쓰레드가 실행되는 것을 말한다. 하나의 프로세스는 여러개의 쓰레드를 가질 수 있으며, 이 쓰레드들은 프로세스의 자원을 공유한다 Java의 프로그램은 메인 쓰레드 외에 다른 작업 쓰레드들을 생성하여 여러개의 실행흐름을 만들 수 있다. 멀티 쓰레드의 장점 여러개의 작업을 동시에 수행함으로써 성능이 향상된다. 스택을 제외한 모든 영역에서 메모..

Java 2023.05.29

프로세스와 쓰레드

프로세스란, 프로세서(처리기, CPU)에 의해 처리되는 프로그램(실행중인 프로그램)을 의미한다. OS가 프로그램 실행을 위한 프로세스를 할당할 때, 프로세스 안에 프로그램 Code와 Data, 메모리 영역(Stack, Heap)을 함께 할당해준다. 1. 코드(Code)는 프로그램의 명령어(Instructions)를 포함하는 영역이다. 프로세스가 수행해야 할 특정 작업을 정의하며, Java main 메소드와 같은 코드를 의미한다 2. 데이터(Data)는 프로그램이 실행될 때 초기화되거나 할당되는 데이터들을 저장한다 프로세스가 사용하는 변수(전역 변수, 정적(Static) 변수, 상수(Constants)) 등이 저장된다. 3. 메모리(Memory)는 데이터와 명령어를 저장하는 물리적인 공간이다. 프로세스 실..

Java 2023.05.29

제네릭(Generic) 2

제네릭은 객체의 static 멤버에 사용할 수 없다 타입변수는 인스턴스 변수로 간주되고, 모든 객체에 동일하게 동작해야 하는 static 필드 특성 상 사용할 수 없다. 제네릭의 문법 1. 다수의 타입변수를 사용할 수 있다. public class Generic { //E를 출력타입, 나머지 값들을 입력 타입으로 사용 public E multiTypeMethod(T t, U u) { ... return E; } Generic instance = new Generic(); instance.multiTypeMethodA(longVal, intVal); } 2. 상속과 타입 관계는 그대로 적용된다. ex : 부모 클래스로 제네릭 타입변수를 지정하고, 그 안에 자식 클래스를 넘기는 것은 잘 동작한다 3. 와일드..

Java 2023.05.26

제네릭(Generic)의 개념

제네릭이란 타입을 명시해야하는 java 언어에서 타입을 명시하지 않고 사용할 수 있게 해주는 기능이다. 클래스나 메서드에 사용가능 하며, 실제로 사용될 때 타입을 구현하여 사용한다. 제네릭을 사용하면 타입 안정성을 보장할 수 있다. 동일한 로직을 다양한 타입에 대해 코드의 재사용성을 높일 수 있다. 타입 캐스팅을 일일이 처리하는 번거로움을 줄일 수 있다. 제네릭 타입 타입 설명 Type Element Key Value Number 제네릭 클래스 작성법 //제네릭 클래스. 원시 타입 이라고도 한다. public class Generic { private T t; public T get() { retrun this.t; } public void set(T t) { this.t = t; } //메인클래스 pu..

Java 2023.05.26

default 메서드, static 메서드

default 메서드 디폴트 메서드는 인터페이스의 기능 확장을 위한 개념이다 이름 그대로 기본값을 정해주는 메서드로 인터페이스 사용 시, 재정의 없이 하위 클래스에서 사용이 가능하다. 메서드 이름 앞에 default 키워드를 추가하여 디폴트 메서드임을 명시한다. 기존에 인터페이스를 구현한 클래스들에게 영향을 주지 않으면서, 새로운 기능을 추가하는 데 유용하다 static 메서드 static의 특성 그대로 인터페이스의 static 메서드 또한 객체 없이 호출이 가능하다. 선언하는 방법과 호출하는 방법은 클래스의 static 메서드와 동일

Java 2023.05.26

인터페이스와 추상 클래스의 차이

인터페이스와 추상화 모두 메서드를 재정의(Override)하여 사용하기에 조금 헷갈릴 수 있다. 하지만 전혀다른것이며 확실한 차이가 있다. 인터페이스 클래스가 인스턴스의 청사진이라면, 인터페이스는 클래스의 청사진이다. 인터페이스는 클래스의 메서드들의 목록과 동작을 정의 하며 인터페이스를 구현한 클래스는 디폴트 메서드를 제외한 인터페이스의 모든 메서드를 재정의해야 한다. 추상 클래스 추상 클래스는 추상화를 통해 부모 클래스는 공통적인 속성을, 자식 클래스는 각자의 속성을 추가하여 사용한다. 이를 통해 코드의 중복을 줄이고 유지보수성을 높일 수 있다. 재정의하여 사용할 메서드는 추상 메서드(Abstract Method)로 구현하며 반드시 구현해야 한다. 정리하자면, 인터페이스는 클래스 간의 계약을 정의하고 ..

Java 2023.05.25

인터페이스

인터페이스란? 자바에서 인터페이스는 두 가지의 의미가 있다. 두 객체를 연결해 주는 다리 역할 상속관계가 없는 다른 클래스들이 동일한 메서드(동일한 행위)를 구현해야 할 때 사용하는 메서드 이 글에선 2번의 인터페이스에 대해 설명한다. 인터페이스는 다중 상속이 가능하다. 인터페이스의 추상 메서드는 구현될 때 반드시 오버라이딩 되어야 한다. 만약 인터페이스의 추상 메서드를 일부만 구현해야 한다면 해당 클래스를 추상 클래스로 변경하여 사용할 수 있다. 아래에 예시 코드를 작성함. 모든 멤버는 static final, 모드 메서드는 public abstract 이어야 한다. 생략 가능하며 생략 시 컴파일러가 자동으로 추가해 준다.(static메서드와 default메서드 제외) 선언방법: public inter..

Java 2023.05.25

추상 클래스

추상 클래스란? 다른 클래스들 사이에서 공통된 특성과 동작을 가지는 메서드들을 정의합니다. 일반 클래스와 다르게 인스턴스화(직접적으로 사용하여 객체를 생성)할 수 없습니다. 주로 자식 클래스에게 공통된 인터페이스를 제공하는데 사용됩니다. 공통된 인터페이스를 가지고 있음을 보장하여 코드의 재사용성과 유지 보수성을 높일 수 있습니다. 추상 클래스를 상속받은 클래스는 추상 클래스의 추상 메서드를 구현(overriding)해야만 인스턴스화 할 수 있습니다. 추상 클래스 선언 시, abstract 키워드를 사용해 선언해 사용합니다. 추상 메서드는 메서드의 시그니처(이름, 매개변수, 반환 타입)만을 선언하며 구현부(중괄호, { })를 작성하지 않습니다. 아래는 예시 코드입니다. // 추상 클래스 정의 abstrac..

Java 2023.05.25

생성자란? this와 this()의 차이

생성자란 인스턴스 생성 시 호출되어 객체를 초기화하는 역할을 수행한다 기본 생성자 : 생성자 선언 시(new();), 괄호안에 아무것도 넣지 않는 생성자 this와 this() this와 this()는 이름만 비슷할 뿐, 전혀 다른 역할을 수행한다 우선 this는 인스턴스 변수와 매개변수 이름이 같을 경우, 인스턴스 변수를 호출할 때 사용한다 class Car { // 필드에 선언된 변수를 인스턴스 변수라고 함 String name; String color; int speed; //괄호안에 있는 변수들을 매개변수라 함 Car(String name, String color, int speed){ //this를 통해 인스턴스 변수를 명시적으로 선언 //매개변수로 전달받은 값을 인스턴스 변수에 대입 this...

Java 2023.05.24