객체와 객체 지향에 대해 명확히 알고있지 않는 것 같아 글을 정리하며 다시 학습하려 합니다.데이터 ( 상태 )와 기능 ( 행위 )을 하나로 묶인 독립적인 단위⇒ 현실 세계의 사물을 컴퓨터 세계에 표현한 단위라고 볼 수 있음객체들이 모여서 상호 작용하며 데이터를 처리하는

JVM ( Java Virtual Machine )은 자바 프로그램을 실행하기 위한 가상 서버를 지칭( 코틀린 스칼라 언어에서도 JVM의 동작 방식을 따름 )빨간 상자 영역 ⇒ JVM의 실행 부분자바 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당받음자바 컴파일러
컴파일 단계.java 소스 코드를 javac 컴파일러가 읽어서 바이트 코드 ( Bytecode ) .class 파일로 변환⇒ 개발자가 작성한 소스 코드를 중간 언어 ( 바이트 코드 )로 바꾸는 과정실행 ( Interprete or JIT 컴파일 )만들어진 .class

업데이트 버전입니다.메모리 누수를 방지하고 애플리케이션의 안정적인 실행을 위해, JVM이 힙 영역에서 객체의 생존 여부를 주기적으로 검사하여, 더 이상 사용되지 않는 객체를 자동으로 정리하는 기능C/C++ 같은 언어는 메모리를 할당하고 직접 해제해야했지만, 자바에서는

Java의 가비지 컬렉터는 크게 다음과 같은 두 가지 작업을 수행 힙 내의 객체 중에서 가비지를 찾아냄 찾아낸 가비지를 처리하여 힙의 메모리를 회수 최초의 자바에서는 가비지 컬렉션 작업에 애플리케이션의 사용자 코드가 관여하지 않도록 되어 있었지만, java.lang.ref 패키지를 통해 제한적이지만 사용자 코드와 GC가 상호작용할 수 있게 하고 있습니...
추상 메서드의 집합이며, 다중 상속이 가능필드를 선언할 수는 있지만 final로만 정의할 수 있음public static final과 public abstract 제어자는 생략이 가능인스턴스 생성이 불가하고 클래스에서 implements로 키워드로 구현하여 사용자식 클
String, StringBuffer, StringBuilder는 Java에서 문자열을 다루는 클래스StringBuffer / StringBuilder 클래스는 문자열을 추가하거나 수정하는 작업을 수행할 때 주로 사용됩니다.String에서도 + 연산이나 concat()
두 메서드 모두 Object 클래스에서 기본적으로 제공하는 메서드비교 대상이 객체일 경우 객체의 주소를 기반으로 비교하므로, 객체를 비교할 때는 == 과 equals()는 동일== 연산자 : 두 객체가 동일한 메모리 주소를 가리키는지를 비교equals() 메서드 : 두
클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이는 객체별로 다른 타입의 자료가 저장될 수 있도록 함Ex) ArrayList<String> list = new ArrayLisy<>() ⇒ 꺾쇠 괄호 : 제네릭즉, 배열의 타입을 지정하듯이 리스트
하나의 데이터 타입을 다른 타입으로 바꾸는 것을 타입 변환 혹은 형변환(캐스팅) 이라고 함자바의 데이터형을 알아보면 크게 두가지로 나뉘게 됨기본형(primitive type) - Boolean Type(boolean) - Numeric Type(short, int, l
⭐⭐⭐래퍼 클래스는 자바의 기본 자료형을 객체로 다루기 위해 사용하는 클래스로, 박싱과 언박싱을 통해 기본형과 객체 간의 변환이 가능하며, 오토 박싱과 언박싱이 지원되어 개발자가 이를 의식하지 않고 사용할 수 있지만, 래퍼 클래스와 기본형을 혼용하면 성능 저하가 발생할
내부 클래스의 일종으로 이름이 없는 클래스를 의미이름이 없다는 것은 재사용되지 않는다는 것이며 프로그램에서 일시적으로 한 번만 사용되고 버려지는 객체클래스를 익명으로 사용하는 것이 아니라, 이미 정의된 클래스의 멤버를 재정의 하여 사용할 때 일회성으로 사용하는 기법익명
클래스 내부에 정의된 클래스 외부 클래스의 멤버처럼 사용되며, 외부 클래스의 필드/메서드에 자유롭게 접근할 수 있습니다. Inner Class를 사용하는 이유 외부 클래스와 강하게 연결된 기능을 묶기 위함 특정 객체와 강하게 연관된 구조를 만들기 위함
구체적인 클래스의 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수 등에 접근할 수 있도록 하는 자바 API실행 시점에 클래스의 구조와 정보를 분석하고, 객체를 동적으로 생성 및 조작할 수 있도록 하는 자바 기능왜 사용할까 ?컴파일 시점에 타입과 구조를 알 수

자바에서 각 스레드는 다른 스레드와 공유되지 않는 독립적인 저장 공간을 갖는데, 이를 ThreadLocal이라고 합니다. 왜 ThreadLocal을 사용할까 ThreadLocal을 사용하는 가장 큰 이유는 각 스레드가 독립적인 상태를 유지할 수 있도록 하기 위함입니
자바의 참조 변수는 heap 영역에 데이터를 저장하고 그 주소 값을 저장하는 방식으로 구성되어 있습니다.기본형 타입이 아닌, 객체와 같은 참조형 타입의 변수를 그대로 복제한다면, 주소값을 복사하여 같은 힙의 데이터를 가르키게 됨이러한 복사를 얕은 복사라고 하며, 얕은
public final class Optional extends object > Java 8부터 도입된 래퍼 클래스로 값이 존재할 수도 있고, 존재하지 않을 수도 있는 상황을 처리하기 위해 사용됨 즉, null 처리를 위한 클래스 기존에는 어느 값이 null일 수도 있기 때문에 따로 null 처리를 해줘야 했지만, Optional을 사용한다면 간편하게...