본문 바로가기

java6

[Java] 객체 지향 4대 특징-1 (상속, 캡슐화) 💡 특징에 대해 처음부터 끝까지 설명된 글이 아닙니다. 인프런 김영한님의 실전 자바 - 기본편을 바탕으로 제가 알지 못했던 부분, 헷갈렸던 부분, 익숙해져야 하는 부분 등을 위주로 정리한 내용이니 참고 부탁드립니다. 객체 지향 4대 특징으로는 상속, 캡슐화, 추상화, 다형성이 있다. 이 중에서 가장 중요한 것은 다형성이며 다형성을 이해함으로서 상속과 추상화를 이해할 수 있고 더 나아가 여러 가지 디자인 패턴 등을 이해할 수 있다. 상속 상속은 말 그대로 나의 특성을 어떤 클래스에게 물려주어 사용할 수 있게 하는 특징이다. 특성을 물려주는 클래스를 부모 클래스, 특성을 물려받는 클래스를 자식 클래스라고 한다. 클래스의 인스턴스를 생성할 때, 해당 메모리에 접근할 수 있는 메모리 주소를 인스터스 명에 저장한.. 2024. 1. 15.
가비지 컬렉션(Garbage Collection, GC)의 개념 가비지 컬렉션(Garbage Collection, GC) 이란? 가비지 컬렉션(Garbage Collection, GC) Java의 메모리 관리 기법으로 애플리케이션이 동적으로 할당했던 메모리 영역 중 더이상 사용하지 않는 영역을 정리하는 기능을 한다. Heap 메모리에서 활동하며 JVM에서 가비지 컬렉터(Garbage Collector)의 스케줄링을 담당한다. 개발자가 따로 메모리를 관리하지 않아도 되므로, 메모리 누수와 같은 문제를 방지하고 개발에만 집중할 수 있도록 한다. 가비지 컬렉터(Garbage Collector) 가비지(Garbage) : 앞으로 사용되지 않는 객체의 메모리 더이상 참조되지 않는 메모리 객체(가비지)를 모아 정해진 스케줄에 의해 관리(제거)하는 역할을 수행한다. 일반적으로 자.. 2023. 9. 1.
JVM 동작 방식 및 메모리 구조(1) JVM 동작 방식 개발자가 소스 코드(.java) 파일을 작성하여 실행하면 Javac(Java Complier)에 의해 바이트 코드(.class)로 변환된다. 💡 소스 코드를 바이트 코드로 변경하는 이유 1. 작성한 코드를 1차적으로 숨기기 위해 2. 컴파일 이후에는 문법 검사를 하지 않도록하여 시간을 단축하기 위해 위 방식은 소스 코드를 변경할 때마다 컴파일하고 실행 시켜야 하기 때문에 시간이 많이 걸린다는 단점을 가진다. Javac에 의해 변환된 Class 파일은 lass Loader가 JVM의 메모리 영역(Runtime Data Area)으로 로딩시킨다. JVM의 메모리 영역(Runtime Data Area) JVM의 메모리 영역는 자바 애플리케이션을 실행할 때 사용되는 데이터를 적재하는 영역으로 .. 2023. 8. 30.
JVM이란? JVM 자바 가상 머신(Java Virtual Machine)의 약자. 자바를 실행하기 위해 가상화된 환경을 제공하는 소프트웨어. 컴파일러에 의해 변환된 바이트 코드를 기계어로 변환 시키는 가상 CPU 자바로 작성된 모든 프로그램은 JVM에서만 실행될 수 있으므로, 자바 프로그램을 실행하기 위해서 반드시 JVM이 설치되어 있어야 한다. JVM를 사용하는 이유 플랫폼 독립성 Java는 JVM을 통해 모든 플랫폼에서 제약없이 동작 가능하다. JVM은 OS에 종속받지 않고 실행되기 위해 OS에 위해서 Java를 실행할 수 있도록 한다. C언어의 경우 개발자가 소스 코드를 작성하면, 컴파일러에 의해 소스 코드는 바이트 코드로 변환된다. 이때 컴파일러는 같은 형식의 바이트 코드를 만들어 내지만, 각 OS 환경에 .. 2023. 8. 29.
[Java] Record란? Record란? - Java 14 버전에 추가된 것으로 데이터 저장과 관련된 작업을 더 쉽게 처리할 수 있도록 도와주는 새로운 데이터 타입을 말한다. - Record는 Class를 정의하는 더 간단하고 명확한 방법을 제공하여 데이터 객체를 생성하고 관리하는데 도움을 준다. - 불필요한 중복 코드를 줄여 가독성 및 유지 보수성이 높다. public record Example(String a, int b) { // Record body (생략 가능) } Record의 특징 1. 불변성 - Record 객체가 생성된 후에는 내부의 데이터가 변경될 수 없다. public (final) record Example(String a, int b) { // Record body (생략 가능) } - record를 선언.. 2023. 8. 9.
[Java] @SneakyThrow (Lombok 어노테이션) 1. @SneakyThrow 란? Lombok에서 제공하는 어노테이션으로 메서드 선언부에 예외 처리문(throws, try-catch문)을 따로 정의하지 않고, 예외 처리를 할 수 있게 해준다. 1-1. @SneakyThrow 의 특징 1. 예외 클래스를 파라미터로 입력해 원하는 예외 클래스만 동작하도록 할 수 있다. @SneakyThrows(UnsupportedEncodingException.class) public void utf8ToString(byte[] bytes) { return new String(bytes, "UTF-8"); } @SneakyThrows public static void IoException() { throw new IoException("hello world"); } 2... 2023. 7. 28.