본문 바로가기
Java

Java 타입

by Yeoseungwon 2023. 9. 22.
728x90

Java

▶Java 언어는 바이트 코드를 가지는 언어로, 개발자가 작성한 코드가 바이트 코드로 컴파일 (엄밀히 얘기하면 컴파일은 아님)되어, 커널(Kernel)이 이를 직접 분석하지 않고, JVM(Java Virtual Machine)으로 하여금 해당 바이트 코드를 분석, 결과를 커널에 전달해주는 방식을 채택하고 있다.

▶이러한 점 때문에, 각 운영체제에 맞는 JVM이 존재한다면 하나의 코드로 운영체제와 문과하게 개발 및 실행할 수 있다.

JRE

▶ JRE(Jva Runtime Envirnment)는 자바로 작성된 프로그램을 실행하기 위해 필요한 구성요소의 집합이다.

▶ 'JRE를 설치한다'라고 하면 'JVM을 구축했다'라고 받아들여도 상관없다.

JDK

▶ JDK(Java Development Kit) 자바로 프로그램을 개발하기 위해 필요한 구성요소의 집합이다.

▶JDK는 JRE를 포함하고 있다.

JVM

▶JVM(Java Virtual Machine)은 자바로 개발된 프로그램을 실행할 수 있는 가상의 환경을 의미하는데, JRE 설치 시 함께 구축된다.

▶ 프로그램과 운영체제 커널(Kernel)간의 메신저(Messenger) 및 인터프리터(Interpreter)의 역할을 한다.

진입점(main 메서드)

▶프로그램 실행 즉시 실행할 내용을 담고 있는 프로그램의 진입점(Entry Point)이다.

▶자바에서는 정적인 main 메서드가 그 진입점으로 작동한다.

정적인 것

▶ 정적인(`static`) 대상은 프로그램 실행 직후 진입점(`main` 메서드)에 도달하기 전에 모두 로드되어 메모리 상에 올라간다.

▶ 정적인 것이 로드되는 시점은 `main` 메서드가 실행되기 전임으로 그 어떤 비정적인 대상에 접근할 수 없다.

▶ 정적 → 비정적 : ㄴㄴ

▶ 비정적인 것이 로드되는 시점은 반드시 `main` 메서드가 실행되고 난 이 후임으로 정적인 대상에 접근할 수 있다.

▶비정적 → 정적 : ㅇㅇ

▶ 정적인 멤버는 이를 포함하는 타입의 이름을 통해 접근한다.

객체화

클래스를 포함한 (참조)타입에 대해 이를 새로운 변수로 만드는 것을 의미한다.

java > new [타입]([생성자 호출]?) >

------------------------------------------------------------------------------------------------------------------------

타입

▶타입(Type)은 어떠한 값을 담을 수 있는 형태이다. 크게 기초 타입과 참조 타입으로 나눌 수 있다.

기초 타입

▶기초 타입(혹은 원시 타입,Primitive Type)은 해당 타입의 변수의 값이 러터럴(Literal)이고 메모리의 스택(Stack)영역에 값이 직접 저장된다.

▶정수형

▷ byte : (1 Byte) -128 이상 127 이하의 정수

▷short : (2 Byte) -32,768 이상 32,767 이하의 정수 (잘안씀)

▷int : (4 Byte) -2,147,483,648 이상 2,147,483,647 이하의 정수

▷long : (8 Byte) -9,223,372,036,854,775,808 이상 9,223,372,036,854,775,807 이하의 정수. 리터럴인 숫자 끝에 L을 붙임으로써 long타입의 숫자임을 표시할 수 있다. 가령 314L 은 long 타입인 314이다.

▶ 실수형

▷ float : (4 Byte) 1.4e-45 이상 3.4E+38 이하의 실수. 리터럴인 숫자 끝에 F를 붙임으로써 float 타입의 숫자임을 표시할 수 있다. 가령 314F는 float 타입인 314이다.

▷double : (8 Byte) 4.9E-324 이상 1.79E+308 이하의 실수.리터럴인 숫자 끝에 D를 붙임으로써 double 타입의 숫자임을 표시할 수 있다. 가령 314D는 double 타입인 314이다.

▶문자형

▷char : (2 Byte) 문자 하나를 담는다. 특수문자로 홀따옴표(') 를 사용한다.

▶논리형

▷boolean : (1 Byte ) 참(true) / 거짓(false) 값을 담는다.

참조 타입

▶참조 타입(혹은 레퍼런스 타입, Reference Type)은 해당 타입의 변수 값이 리터럴이지 않고 (문자열 예외), 메모리의 스택(stack)영엑에는 힙의 주소가, 힙(Heap)영역에는 값(객체)이 저장된다.

▶ 자바에 존재하는 기본 타입이 아닌 모든 타입은 참조 타입이다.

▶참조 타입인 값을 객체라고 하며, 이 객체의 메모리 크기는 가변적이다.

▶문자열

▷ String : 문자열 값을 담는다. 특수문자로 쌍따옴표(") 를 사용한다.

▶참조형 변수를 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조변수의 타입이 된다. (기본형 변수와 같이 변수이름 앞에 타입을 죽어주는데 참조변수의 타입은 클래스의 이름이다.)

▷ 클래스이름 변수이름; // (변수의 타입이 기본형(8개)이 아닌 것들은 모두 참조변수이다. )

Date today = new Date(); // Date 객체를 생성해서, 그 주소를 today 에 저장

>> Date클래스 타입의 참조변수 today를 선언

 

변수

지역변수

▶지역변수(Local Variable)는 메서드(Method)안에 존재하는 변수이다.

▶지역 변수에 값이 할당되지 않은 상황에서는 값 할당을 제외한 접근을 할 수 없다.

▶선언 방식은 아래와 같다.

 

public class MyFirstClass{
	public static void main(String[] args) {
		String name = "김갑수";
		int age = 76;
    }
}

 

매개변수

▶ 매개 변수 (Parameter)는 메서드가 요구하는 변수 구성이다.

▶ 해당 메서드 호출 시 요구되는 매개 변수에 대해 전달해주는 값을 전달 인자(Argument)라고 한다.

▶명명법 : 카멜케이스

멤버변수

▶ 멤버 변수(Member Variable)는 클래스를 포함한 타입이 직접적으로 가지고 있는 변수를 의미한다

 

읽기 전용

▶ 자바에는 엄밀히 얘기하면 상수(Constant)는 존재하지 않지만 편의상 상수라고 부르는 편이다.

읽기 전용 지역변수

▶읽기 전용 지역변수는 메서드(Method)안에 존재하는 변수이다.

▶읽기 전용 지역 변수는 읽기 전용 멤버 변수와 달리, 선언과 동시에 값 초기화가 이루어질 필요는 없다.

▶읽기 전용 지역 변수에 값이 최초로 할당된 이 후로는 값을 재할당할 수 없다.

▶선언방식은 아래와 같다.

 

읽기전용 매개 변수

▶ 메서드의 매개 변수 타입 앞에 final 키워드를 추가함으로써 해당 매개 변수가 읽기 전용임을 표시할 수 있다.

▶명명법 : 카멜 케이스

 

 

읽기전용 멤버 변수

▶ 멤버 변수 타입 앞에 final 키워드를 추가함으로써 해당 멤버 변수가 읽기 전용임을 표시할 수 있다.

▶단, 읽기 전용인 멤버 변수는 선언과 동시에 값을 초기화하거나, 생성자(Constructor)를 통해 값이 할당되어야만 한다.

▶명명법 : 카멜 케이스

▷단, 해당 멤버 변수의 타입이 기본 타입이거나 String 이고 정적일 경우 대문자 스네이크 케이스.

728x90