Java

    [Java] Java의 메모리 구조, NullPointerException, String

    메모리 사용 영역 1. 메서드 영역 코드에서 사용되는 클래스들을 클래스 로더로 읽음 정적(static) 변수, 정적 메서드 JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역 2. 힙 영역 객체와 배열이 생성되는 영역 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 쓰레기로 취급하고, JVM은 GC를 실행시켜 힙 영역에서 자동으로 제거함 3. 스택 영역 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당됨 메서드를 호출할 때마다 프레임을 추가(push)하고 메소드가 종료되면 해당 프레임을 제거(pop)하는 동작을 수행한다. 기본 타입 변수는 스택 영역에 직접 값을 가지고 있지만, 참조 타입 변수는 값이 아니라 힙 영역이나 메소드 ..

    [Java] 기본 타입과 참조 타입

    기본 타입(원시 타입 : primitive type) 정수, 실수, 문자, 논리 리터럴을 저장하는 타입 스택 영역에 생성 int age = 25; 참조 타입(reference type) 객체의 번지를 참조하는 타입 배열, 열거, 클래스, 인터페이스 타입 메모리의 번지를 값으로 갖는다. → 번지를 통해 객체를 참조한다는 뜻! 힙 영역에 생성 String name = "ㅁㅁㅁㅁ"; 출처 https://kingpodo.tistory.com/54

    [Java] JVM이란?

    자바 프로그램은 중간 단계의 바이트 코드 → 해석하고 실행할 수 있는 가상의 운영체제 필요함 JVM은 실제 운영체제를 대신해 자바 프로그램을 실행하는 가상의 운영체제 역할 운영체제와 자바를 중계하는 JVM을 두어 어려 운영체제에서 동일한 실행 결과가 나오도록 설계!

    [Java] Java의 특징

    1. 이식성이 높은 언어 자바 실행 환경이 설치되어 있는 모든 운영체제에서 수정 없이 실행 가능! 2. 객체 지향 언어 객체를 만들기 위해 설계도인 클래스를 작성해야 한다. 객체와 객체를 연결해 목적에 맞는 프로그램을 만들어 낸다. 캡슐화, 상속, 다형성 기능 완벽하게 지원 3. 함수적 스타일 코딩 지원 람다식 지원 → 컬렉션 요소를 필터링, 매핑, 집계 처리하기 쉬워짐 → 코드 간결해짐 4. 다양한 애플리케이션 개발 콘솔, 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 안드로이드 등 5. 멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있음 스레드 생성 및 제어와 관련된 라이브러리 API를 제공해 운영체제에 상관없이 멀티 스레드 쉽게 구현 가능 하나의 프로그램이 동시에 여러 가지 작..