Java 18

[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

[Java] Auto Boxing & Auto UnBoxing

오토박싱과 오토언박싱은 Java 1.5 version에 도입된 기능으로, Primitive Type과 Wrapper Class를 자동으로 변환시켜주는 것을 말한다. 오토 박싱, 언박싱을 알아보기 전에 Primitive Type과 그에 대응하는 Wrapper Class를 알아보자 Primitive Type & Wrapper Class Wrapper Class는 OOP인 Java에서 객체처럼 사용할 수 없는 primitive type을 객체로 표현하기 위해 도입되었다. 이를 통해 원시형에 null을 할당하거나 컬렉션을 활용하는 등, 다양한 객체의 특성을 적용시킬 수 있게 되었다. Primitive Type & Wrapper Class 차이 원시형(Primitive Type) 래퍼 클래스(Wrapper Cla..

Java 2024.01.25

[Java] 자바의 자료형

Java에는 다양한 데이터 종류가 있고, 이는 원시형(primitive type)과 참조형(reference type)으로 나뉜다. 원시형과 참조형 데이터는 어떤게 존재하는지와, 각 데이터의 특징을 알아보자 원시 자료형 (Primitive Type) Primitive Type 특징 종류 Java에는 총 8가지의 원시 자료형이 존재한다 (boolean, char, long, int, short, byte, double, float) 쓰임 데이터를 저장하기 위해 사용되는 자료형을 의미한다 크기 1 byte ~ 8 byte까지 존재 데이터를 다루는 최소 단위가 1 byte이므로, 이보다 더 작을 수는 없다 사용 사용하기 전에 반드시 선언(declared) & 초기화(initialized)를 하고 사용해야한다 ..

Java 2024.01.24

[Java] Call by Value vs Call by Reference

Call by Value? Call by Reference? 그게 뭔데? Call by Value와 Call by Reference는, 메서드를 호출할 때 파라미터를 전달하는 방법을 말한다. Call by Value 메서드를 호출할 때 전달되는 파라미터로 "값"을 넘겨준다. 이러한 이유로 "Pass by Value" 라고도 불린다 호출하는 호출자(Caller)의 변수 "값"을 복사하여, 수신하는 수신자(Callee)의 파라미터로 넘겨준다 메서드를 호출하는 쪽(호출자)의 변수와 호출 당하는 쪽(수신자)의 파라미터는 같은 "값"이지만, 주소가 다른 서로 다른 변수이다 복사되어 넘어간 파라미터는, 호출 함수 안에서 지역적으로 사용되는 지역변수이다 오직 "값" 만을 전달하기 때문에, 호출자와 수신자 어느 한쪽에..

Java 2024.01.20

[Java] JVM과 Java 컴파일

자바의 큰 특징 중 하나는 Mac이든 Linux든 Windows든 어떤 OS에도 영향을 받지 않고 독립적으로 실행될 수 있다는 것이다. 이는 자바가 JVM(Java Vitual Machine) 위에서 동작하기 때문에 가능한 것이다. 그렇다면 JVM이 어떻게 동작하기에 자바가 OS에 영향을 받지 않고 독립적으로 실행될 수 있는지, 그리고 컴파일 과정은 어떻게 되는지 알아보도록 하자. Compiled vs Interpreter 그렇다면 컴파일 과정을 알기 전에, 컴파일이 무엇인지 알아보자 컴퓨터 언어는 크게 컴파일(Complie) 언어와 인터프리터(Interpreter) 언어로 나뉜다. 컴파일 언어는 프로그램 실행 전, 소스 코드 전체를 기계어로 변환하는 컴파일을 수행하는 단계가 필요한 언어이고, 인터프리터..

Java 2024.01.19