본문 바로가기

JAVA/Java26

[Java] 원시 타입(Primitive Type)과 참조 타입(Reference Type) 자바의 데이터 타입에는 원시 타입과 참조 타입이 있다. 원시 타입(Primitive Type) 종류 데이터 타입 크기 표현 범위 논리형 boolean 1 byte true or false 문자형 char 2 byte 'u0000' ~ 'uFFFF' (16비트 유니코드) 정수형 byte 1 byte -128(2^7) ~ 127(2^7-1) short 2 byte -32,768(2^15) ~ 32,767(2^15-1) int 4 byte -2,147,483,648(2^31) ~ 2,147,483,647(2^31-1) long 8 byte -9,223,372,036,854,775,808(2^63) ~ 9,223,372,036,854,775,807(2^63-1) 실수형 float 4 byte -3.4E38 ~ .. 2022. 9. 6.
[Java] 래퍼 클래스(Wrapper Class) 원시 타입(Primitive Type)과 참조 타입(Reference Type) 자바의 데이터 타입에는 원시 타입(Primitive Type)과 참조 타입(Reference Type)이 있다. 원시 타입은 정수, 실수, 문자, 논리 리터럴 등 실제 데이터 값을 저장하는 타입이다. 참조 타입은 기본 타입을 제외한 타입으로, 객체의 주소를 저장하여 객체를 참조하는 타입이다. 클래스와 인터페이스 등이 있다. 래퍼 클래스(Wrapper Class) 원시 타입 래퍼 클래스 byte Byte short Short int Integer long Long float Float double Double boolean Boolean char Character 래퍼 클래스(Wrapper Class)는원시 타입의 값을 감싸는.. 2022. 9. 6.
[Java] Object 클래스 Object 클래스는 모든 자바 클래스의 최상위 클래스이다. Object 클래스에는 몇 가지 메서드들이 정의되어 있고, 모든 클래스들은 이 메서드들을 구현하여 사용할 수 있다. Object 클래스의 대표적인 메서드들을 알아보록하자. equals 입력받은 객체가 해당 객체와 동일한지 판단하는 메서드이다. == 연산자는 참조변수의 참조 값을 비교한다. 따라서 두 인스턴스의 데이터 값을 비교하려면 별도의 방법을 사용해야 하고 클래스들은 equals 메서드를 오버라이딩 하여 객체들의 데이터 값을 비교한다. 참고로 Object 클래스의 equals 메서드는 == 연산자와 마찬가지로 참조변수의 참조값을 비교한다. hashCode 객체에 대한 해시코드 값을 반환하는 메서드이다. Runtime 객체의 유일한 integ.. 2022. 9. 5.
[Java] JVM의 구조와 자바 컴파일 과정 JVM이란 JVM은 Java Virtual Machine의 약자로, 자바 가상머신이라고 부른다. JVM은 운영체제 위에서 동작하는 소프트웨어의 일종으로 자바 프로그램을 운영체제에 상관없이 실행시키도록 도와준다. JVM 구조 클래스 로더(Class Loader) JVM에서 동적 로딩(Dynamic Loading)을 담당하는 부분이다.동적 로딩이란, 컴파일 타임이 아닌 런타임에 클래스를 처음 참조할 때 JVM 내로 클래스를 로드 및 링크하여 런타임 데이터 영역(Runtime Data Areas)에 배치하는 작업을 의미한다. 런타임 데이터 영역(Runtime Data Areas) JVM이 운영체제로부터 할당받은 메모리 영역이다. 총 5가지 영역으로 나누어진다. 이 중 Method Area, Heap은 모든 쓰.. 2022. 9. 3.
[Java] 자바의 예외와 예외처리 Throwable 클래스 Throwable 클래스는 모든 Error와 Exception의 최상위 클래스이다. 이 클래스의 대표적인 메서드 둘은 다음과 같다. public String getMessage(); public void printStackTrace(); Throwable의 하위 클래스인 Error와 Exception은 예외적인 상황이 발생했음을 나타내는데 사용되며, 예외적인 상황에서 이들의 인스턴스가 생성된다. Error와 Exception 오류(Error)와 예외(Exception)의 차이는 다음과 같다. 오류(Error)는 'IOError' 나 'VirtualMachineError' 같이 처리가 불가능한 심각한 문제를 의미한다. 개발자는 오류를 미리 예측하여 방지할 수 없다. 예외(Excet.. 2022. 8. 31.
[Java] 인터페이스와 추상 클래스 인터페이스(Interface) interface Printable { void print(String doc); } 일반적으로 인터페이스는 위와 같이 생겼다. 위의 void print 같이 몸체가 비어있는 메서드를 추상 메서드(Abstract Method)라고 한다. 인터페이스를 대상으로 인스턴스 생성이 불가능하기 때문에 구현(Implementation)을 통해 사용할 수 있다. class Printer implements Printable { public void print(String doc) { @doSomething } } 아래는 인터페이스의 몇 가지 특징들이다. class Robot extends Machine implements Movable, Runnable { ... } 한 클래스에 둘 이.. 2022. 8. 31.
[Java] 클래스의 상속 상속의 기본 기존 정의된 클래스에 메서드와 변수를 추가하여 새로운 클래스를 정의하는 것을 상속이라고 한다. 이때 기존 정의된 클래스를 부모 클래스(상위 클래스)라 하고, 부모 클래스를 상속해 새로 정의한 클래스를 자식 클래스(하위 클래스)라고 한다. 자식 클래스는 부모 클래스의 변수와 메서드를 가진다. class Man { String name; public Man(String name) { this.name = name; } } class BusinessMan extends Man { String company; String position; public BusinessMan(String name, String company, String position) { super(name); this.compa.. 2022. 8. 30.
[Java] String vs StringBuilder vs StringBuffer String String 인스턴스 생성 방법에는 다음과 같이 두 가지가 있다. String str1 = new String("java") String str2 = "java" 두 방법으로 생성된 인스턴스는 약간의 차이가 있다. 다음 생성된 String 인스턴스들을 살펴보자 String str1 = new String("java") String str2 = new String("java") String str3 = "java" String str4 = "java" 생성된 String 인스턴스들을 ==을 사용해 비교해 보면 str1과 str2는 다른 인스턴스를 참조하지만 str3와 str4는 같은 인스턴스를 참조한다는 것을 알 수 있다. 왜 이런 차이가 발생할까? String 인스턴스는 Immutable한 .. 2022. 3. 17.