변수의 초기화 변수를 선언하고 처음으로 값을 저장하는 것을 '변수의 초기화'라고 한다. 멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화하지 않고 사용해도 되지만 지역 변수는 사용하기 전에 반드시 초기화를 해야한다. class InitTest { int x; int y = x; //문제 없음 void method() { int i; int j = i; // 컴파일 에러: 지역변수를 초기화하지 않고 사용함 } } 멤버 변수의 초기화 방법 명시적 초기화(explicit initialization) 생성자(constructor) 초기화 블럭(initialization block) 인스턴스 초기화 블럭 : 인스턴스 변수를 초기화 하는데 사용 클..
생성자란? 생성자는 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드이다. 생성자는 다음과 같은 특징을 지닌다 생성자의 이름은 클래스의 이름과 같아야 한다. 생성자는 리턴 값이 없다. 생성자는 다음과 같이 정의한다 class Card{ Card() { // 매개변수가 없는 생성자 //.. } Card(String k, int num) { // 매개변수가 있는 생성자 //... } 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것은 아니다. 생성자는 단순히 인스턴스 변수들의 초기화에 사용되는 조금 특별한 메소드일 뿐이다. 인스턴스가 생성되는 과정은 다음과 같다 Card c = new Card(); 1. 연산자 new에 의해서 메모리(heap)에 Card 클래스의 인스턴스가 생성..
JVM 메모리 구조 메소드 영역(method area) 프로그램 실행중에 어떤 클래스가 사용되면 JVM은 해당 클래스의 클래스파일을 읽어서 클래스에 대한 정보를 이곳에 저장한다. 해당 클래스의 변수도 이곳에 저장된다. 힙(heap) 인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. 호출스택(call stack) 호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 기본형 매개변수와 참조형 매개변수 자바에서는 메소드를 호출할 때 매개변수로 지정한 값을 메소드의 매개변수에 복사해서 넘겨준다. 매개변수의 타입이 기본형(primitive type)일 때는 기본형 값이 복사되겠지만, 참조형(reference type) 이면 인스턴스의 주소가 복사된다. 메서드의 매개변수를..
[JAVA] JVM 구조 이해하기JVM이란?JVM이란 추상적인 컴퓨팅 머신으로써 3가지 중요 개념이 있다.명세(스펙)구현인스턴스JVM 다이어그램 다이어 그램상으로 위에서 아래로 내려가는 과정을 수행한다. class 파일의 정보를 Class Loader를 사용해 JVM memory 공간으로 옮기고 이것을 Excution Engine으로 실행하는 구조이다.Class Loader클래스로더는 클래스파일 포맷(.class)을 준수하는 어떠한 것이랃도 인지하고 적재할 수 있도록 구현된다. 그리고 런타임시에 클래스를 적재하고 바른 바이트코드로 작성되었는지 검사한다.일반적으로 클래스로더는 두 종류로 나뉘는데 하나는 boostrap class loader 다른 하나는 user define class loader 이다.모..