형변환(Casting)

– 값의 타입을 다른 타입으로 변환하는 것이다.
– boolean을 제외한 7개의 기본형은 서로 형변환이 가능하다.

변환 수식 결과
int -> char (char)65 ‘A’
char -> int (int) ‘A’ 65
float -> int (int)1.6f a
int -> float (float)10 10.0f

식별자와 예약어

식별자 : 자바 프로그래밍을 하는데 필요한 구성요소들을 구별하는 이름.(예약어는 식별자가 될 수 없다.)

식별자를 정의하는 규칙
– 중간에 공백문자, %, # 등과 같은 특수문자들을 사용할 수 없다.
– 단, $와 _는 사용 가능하다. 이때 주의할 점은 $, _ 등의 사용가능한 특수 문자라도 식별자의 첫 문자로는 사용하지 않는다는 점이다.

클래스 : 객체를 만드는 데 꼭 필요한 설계도면과 같은 것. 속성과 동작을 통해서 하나의 객체를 만들기 위한 틀과 같다.
클래스를 생성하면 만들어지는 것이 바로 객체이다.

클래스를 정의하는 규칙
– 첫 문자는 항상 대문자로 표현한다.
– 하나 이상의 단어가 모여 클래스명으로 지정될 때는 단어의 첫 문자들만 대문자로 표현한다.

Variable(변수) : 하나의 값을 저장할 수 있는 기억공간.

Data type

  • 기본형 : 실제 값을 저장한다.
    boolean(논리-1byte), char(문자-2byte), byte(정수-1byte), short(정수-2byte), int(정수-4byte), long(정수-8byte), float(실수-4byte), double(실수-8byte)
    * byte : 이진데이터를 다루는데 사용.
    *short : c언어와의 호환을 위해 추가.
  • 참조형 : 객체의 주소를 저장한다.
    String, System 등 기본형을 제외한 나머지

변수의 선언방법

public class Variable01 {
	public static void main(String[] args){ 
		
		int number;
		number = 100;
		
		System.out.printf("number: %d\n", number);
		System.out.println("number: " + number);
		
	}
}

결과 :

number: 100
number: 100

Constant(상수) : 한 번만 값을 저장할 수 있는 공간.
literal(리터럴) : 그 자체로 값을 의미하는 것.

JVM(자바 가상 머신, Java Virtual Machine)

자바로 작성된 프로그램 코드는 컴파일러를 통해 ‘바이트코드(bytecode)’형식으로 변환된다.
이때 생성되는 파일이 class파일인데, 이 파일은 명령어 등 다른 보조적 정보들을 담고 있다.
이 명령어들과 정보들을 해석하여 실행하는 것이 JVM이다.

즉, Java의 실행파일이 Class 파일!
이 Class파일을 실행시키는 것이 JVM!

이러한 특징때문에 자바로 작성된 프로그램은 어떤 운영체제에서도 거의 수정없이 사용할 수 있는 것이다!!

JVM은 4개의 구조적 영역으로 구분할 수 있다.

  • 클래스 영역
    사용자가 직접 작성하는 클래스 코드를 저장하는 곳으로, import문을 통해 필요로 하는 클래스들이 로드되며 멤버 메소드들은 메소드 영역에
    상수들은 상수 풀에 저장된다.
  • 자바 스택(Java Stack)
    프로그램을 수행할 경우에 여러 메소드들을 호출하고 또는 관련된 정보들을 주고 받기도 하는데, 이때 이러한 일 처리들을 기록하는 곳이 이 영역이다. 각 메소드에 관련된 정보들은 메소드가 호출될 때마다 ‘스택 프레임’이라는 또다른 영역에 생성되어 기록을 하게 된다.
    가장 최근에 호출한 메소드의 스택 프레임이 가장 위에 존재하게 되는데, 이를 ‘활성 스택 프레임’이라고 하며, 수행을 다하게 되면 해당 스택
    프레임은 소멸되고 아래에 있던 스택 프레임 위로 올라와 활성화가 된다.
    항상 현재 활성화되어 실행중인 곳을 가리키는 커서와 같은 것이 있는데 이는 ‘프로그램 카운터’이다.
  • 힙(Heap)
    new라는 예약어를 통해서 객체가 동적으로 공간을 할당받는 곳이며 가비지 컬렉션이 관리하는 영역이다.
    물론, 생성된 객체는 ‘클래스 영역’에 해당 클래스가 존재해야만 공간을 할당받을 수 있다.
  • 네이티브 메소드 스택
    자바에서는 C언어와 같은 다른 언어의 기능을 잠시 빌려서 사용할 때가 있는데, 이때 사용하는 것이 JNI(Java Native Interface) 기술이다. 여기서 사용되는 네이티브 메소드들이 바이트코드로 변환되면서 사용되고 기록하는 영역이 바로 네이티브 메소드 스택이다.