2024/02 5

[Java] Thread

스레드에 대해 공부하기 전에, 프로세스(Process)와 스레드(Thread)는 프로그램의 실행과 동작을 통해 설명할 수 있기에, 프로그램의 실행에 대해 먼저 알아보자 Program의 실행 프로그램(Program)과 프로세스(Process)는 둘 다 어떠한 목적을 위해 처리 방법과 순서를 기술한 코드의 집합체를 말하는데, 다만 프로그램은 저장 장치에 저장된 '정적'인 상태를 말하고, 프로세스는 실행을 위해 메모리 공간에 올라와있는 '동적'인 상태를 의미한다. 즉, 프로그램과 프로세스는 똑같은 프로그램을 말하지만, 상태만 다르다는 의미이다. 다시 프로그램의 실행으로 넘어가보자. 우리는 특정 프로그램을 실행시키기 위해 컴퓨터에 저장하고 설치한다. 이후에 프로그램(Program)을 실행시키면 OS에서 그 프로..

Java 2024.02.25

[Java] Casting (업캐스팅 & 다운캐스팅)

Java에서 하나의 데이터 타입을 다른 타입으로 바꾸는 것을 'Casting(형변환)' 이라고 한다. 주로 primitive 타입과 reference 타입에서 값을 대입하거나 연산을 위해 캐스팅이 발생한다. 업캐스팅 & 다운캐스팅 상속 관계에 있는 부모 클래스(Super Class)와 자식 클래스(Sub Class)간에도 캐스팅이 가능하다. 부모 클래스를 자식 클래스로 캐스팅 하는것을 DownCasting, 자식 클래스를 부모 클래스로 캐스팅 하는것을 UpCasting이라 한다. (단, 형제 클래스 끼리는 캐스팅이 불가능) 업캐스팅(UpCasting) 자식 클래스를 부모 클래스로 캐스팅 하는 것 캐스팅 연산자 괄호를 생략할 수 있다 ex) 아래의 두 방법 모두 사용 가능 Parent p = (Parent..

Java 2024.02.18

[Java] Object 클래스와 메서드

// Object.class - java17 Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Object 클래스는, 클래스 계층 구조의 루트입니다. 모든 클래스는 Object.class를 Super 클래스로 가지고 있습니다. 배열을 포함한 모든 개체는 이 클래스의 메서드를 구현합니다. Java에서 'Object' 클래스는 클래스 계층 구조의 최상위 클래스이자 모든 클래스의 부모 클래스이므로, 모든 클래스는 'Object' 클래스를 직간접적으로 상속받는다. Object Clas..

Java 2024.02.18

[Java] 문자열 클래스

String Class String 클래스의 구조 String은 문자열을 내부적으로 byte[]로 저장한다. JDK 9 이전에는 char[], JDK 9부터는 메모리 효율성을 위해 byte[]로 저장하게 되었다 // String.class (Java 8) public final class String implements ... { private final char[] value; ... // String.class (Java 11) public final class String implements ... { private final byte[] value; ... String은 final한 클래스로서 상속(확장)이 불가능하고, 문자열을 저장하는 배열 또한 final로 저장되어있어 변경이 불가능하다. 따라..

Java 2024.02.03

[Java] 직렬화 (Serialization)

직렬화(Serialization)란, Java에서 사용되는 Object(객체)나 Data를 다른 환경의 Java에서도 사용할 수 있도록 Byte 형태로 변환하는 기술을 말한다. 객체를 잘 생각해 보면 Reference Type이기에, 각각 다른 VMS(Virtual Memory Space)를 가진 OS 환경에서는 주소값이 달라지기 때문에 Reference Type의 인스턴스를 전달할 수 없다. 따라서 주소값이 아닌 Primitive Type의 데이터를 넘긴 후 파싱하여 사용해야 한다. 이때 데이터를 넘기기 전에 사용되는 방법이 Reference Type의 데이터를 Byte 형태의 객체 데이터로 변환하는 '직렬화'이다. 직렬화(Serialization) & 역직렬화(Deserialization) 자바의 직..

Java 2024.02.03