JVM(Java Virtual Mahcine)은 자바로 작성된 바이트 코드 파일을 실행시켜주는 가상 머신입니다. 자바는 개발 당시 각각의 다른 운영체제에서 동작시키는 언어를 목표로 개발했기에 OS가 바이트코드 파일을 직접 실행하지 않고 JVM이 작성된 파일을 해석하여
기본형 변수는 참조하지 않고 실제 값을 저장합니다.컴파일 시점에서 할당 메모리의 크기를 검사합니다.총 8 개의 변수형이 존재합니다.기본형 타입의 산술 연산에서는 더 큰 범위를 갖는 타입으로 자동 형변환되어 실행됩니다. 하지만 반대의 경우는 명시적 형변환을 해야합니다.b
기본형 변수는 참조하지 않고 실제 값(리터럴)을 저장하며 컴파일 시점에서 할당 메모리의 크기를 검사합니다.자바의 기본형1, 0.1, 'c' 와 같은 변수에 저장될 수 있는 데이터 자체를 의미합니다. 리터럴 값들은 불변성을 지니며 값은 실제 할당 이 후 변하지 않습니
자바의 변수는 선언된 위치(블록) 및 키워드에 따라 참조할 수 있는 범위 및 생명주기가 결정됩니다. 이는 크게 로컬 변수, 인스턴스 변수, 클래스 변수로 나뉩니다.로컬 변수(지역 변수)는 클래스 및 객체 내부의 메서드 블럭 및 초기화 블럭 등의 블럭 내부에서만 사용되는
String의 불변성(Immutable) String은 기본적으로 참조형이며 String 객체를 참조한다. String은 불변성을 가지며 새로운 값을 할당하기 위해서 새로운 객체를 생성해야한다. 불변성을 갖는 String은 a = a + "test2" 와 같은 연산을
피연산자와 연산자에서 반환된 결과는 하나의 리터럴처럼 사용할 수 있습니다.기본 연산을 수행하는 피연산자의 데이터 타입이 다르다면, 더 큰 범위를 갖는 피연산자의 데이터형으로 프로모션(업캐스팅)되어 연산된 결과가 반환됩니다.산술연산자는 boolean 을 제외한 primi
정수형 타입 연산에서 사용할 수 있는 연산으로, 해당 변수를 2진수로 표현한 값을 통해 연산합니다.메모리 내 모든 값들은 2진수 형태로 저장하며, 저수준(low-level) 에서 연산을 수행하기 때문에 기본 산술 연산보다 속도가 빠릅니다.정수 값은 데이터 맨 앞의 비트
논리 연산자는 두 boolean 형 피연산자의 값의 비교를 통해 true 혹은 false 를 반환합니다.&& 연산은 두 피연산자가 모두 true 면 true 아니면 false 를 반환합니다. || 연산자는 두 피연산자 중 하나라도 true 면 true , 아니면 fal
자바에서의 선택문은 if - else if - else 문과 switch - case 문으로 사용합니다. 선택문의 하위 코드블럭 실행문이 한줄일 경우 코드블럭으로 감싸지 않고 생략가능합니다.자바에서 기본 조건문은 if 문으로 구현될 수 있습니다.if문의 조건 내부에는
멤버 초기화 초기화 스태틱 변수와 인스턴스 변수는 초기화하지 않아도 기본값이 존재 0 혹은 0에 준하는 값, 참조형이라면 null 지역변수는 초기화하지 않으면 사용할 수 없음 초기화 방법 : 명시적 초기화, 생성자, 초기화 블록(인스턴스, 클래스) 멤버 변수 초기화 순서 시점 스태틱 변수 - 클래스가 로딩될 때 딱 한번 초기화 ...
상속 정의 기존의 클래스를 재사용하여 새로운 클래스를 정의 서브클래스는 슈퍼클래스를 포함한다 슈퍼클래스의 모든 메소드 및 변수는 서브클래스에 포함된다. 서브클래스에 정의된 모든 메소드 및 변수는 슈퍼클래스와 관련이 없다. 서브클래스와 서브클래스의 오버라이딩 된 메소
객체지향 개념에서 다형성이란 여러가지 형태를 가질 수 있는 능력을 말함타입 캐스팅 혹은 메소드의 오버로딩 및 오버라이딩으로 다형성 구현타입 캐스팅을 통한 다형성 구현은 실제 객체를 변경하는게 아니라 참조타입만 바꾸는 것형변환에서의 크다는 메모리의 크기가 아닌 범위를 뜻
추상클래스는 완성되지 않은 클래스를 말합니다. 추상클래스는 abstract 제어자로 클래스를 표현할 수 있으며 추상클래스로는 객체를 생성할 수 없습니다. 이런 추상클래스의 존재의의는 다른 클래스의 상속을 통한 완성이며 추상클래스는 상속에 대한 틀을 정의하기 위해 사용됩
내부 클래스는 클래스 내에 선언되는 클래스입니다. 내부의 클래스가 외부 클래스와 연관관계가 깊으며, 다른 클래스에서 사용되지 않을 때 내부클래스를 사용하게됩니다.내부 클래스의 구분은 변수의 선언에 따른 구분과 비슷하게 이루어집니다. 인스턴스 변수와 같이 선언하면 인스턴
자바에서 에러는 크게 error 와 exception 으로 구분할 수 있습니다. 이 에러들은 모두 프로그램 실행 중 문제가 발생하면 생성되며 Throwable 클래스를 상속받는 클래스들입니다. Throwable 역시 클래스이므로 Object 의 자손입니다.error 는
자바의 쓰레드는 Concurrent하게 동작합니다. Concurrent 는 논리적으로 여러 작업을 동시에 처리하는 멀티쓰레드 동작이지만 여러 쓰레드가 물리적으로 동시에 실행되지는 않습니다. 실제 동작은 여러 쓰레드의 수행시간을 쪼개어 동작합니다. Parallel도 어떤
JVM 내의 한 프로세스의 멀티쓰레드는 Concurrency하게 동작합니다. 여러 쓰레드를 동시성으로 멀티쓰레드를 동작시키기 때문에 쓰레드의 동작 상태에 대한 정의가 필요합니다. 각 쓰레드가 수행되고, 혹은 다른 쓰레드의 수행을 대기하는 여러 상태가 존재합니다.JVM은
쓰레드가 동시성으로 실행될 때 여러 쓰레드가 동시에 접근 가능한 자원을 공유자원이라고 합니다. 위와 같이 하나의 자원을 공유하는 쓰레드가 만들어질 수 있습니다. 이 때 쓰레드의 수행 순서는 우선순위가 같다면 정해지지 않은 순서로 수행됩니다. 따라서 각 val++ 의 연
Obejct 클래스에는 clone() 메서드가 정의되어 있습니다. clone 메서드는 네이티브 메서드로 해당하는 객체의 모든 필드를 복사하여 새로운 객체에 넣어 반환하는 동작을 수행합니다.위 코드가 Object 내의 clone() 메서드의 코드인데 CloneNotSup
열거형은 서로 연관된 상수를 편리하게 선언하기 위하여 사용합니다. 열거형은 값 관리 및 타입 관리까지 할 수 있으므로 논리적인 오류를 줄이는데 많은 도움이 됩니다.일반 상수를 사용하여 관리하게 되면 다음과 같은 논리적 오류가 있을 수 있습니다.위 코드에서 categor