서론
- 자바(JAVA) 언어는 컴파일시 바이트 코드가 되는 언어로, 개발자가 작성한 코드가 바이트 코드로 컴파일되어 운영체제 커널(KERNEL)이 이를직접 읽어들이지 않고 , JRE(HAVA RUNTIME ENVIRONMENT) 가 해당 바이트 코드를 읽어들여 그 결과인 바이너리 코드를 운영체제 커널이 이해할 수 있는 형태로 전달하는 방식을 채택하고 있다.
- 이러한 방식 때문에 각 운영체제에 맞는 JRE가 적절하게 구축되어 있다면 하나의 코드로 컴파일된 실행 파일로 운영체제와 무관하게 개발 및 실행 할 수 있다는 장점이 있지만, 컴파일 결과가 즉시 바이너리 코드로 변환되는 언어에 비해 속도가 느리다는 단점이 있다.
- 구문이 끝나면 ' ; ' 을 꼭 붙여야 한다. ( 안 찍으면 컴파일 오류남 )
JRE
- JRE(JAVA RUNTIME ENVIRONMENT)는 자바로 작성된 프로그램을 실행하기 위해 필요한 구성요구의 집합인 소프트웨어이다.
JDK
- JDK (JAVA DEVELOPMENT KIT)는 자바 언어로 프로그램을 개발하고 실행하기 위한 구성요소의 집한인 소프트웨어이다. 이는 JRE를 포함하고 있다.
JVM
- JVM(JAVA VIRTUAL MACHINE) 은 자바로 개발된 프로그램을 실행하기 위해 구축된 가상의 환경을 의미한다.
- JRE 설치 후 실제로 자바로 작성된 프로그램을 구동하여 바이너리 코드로 변환하는 실행 환경이다.
진입점
- 프로그램이 실행되었을 때 가장 먼저 실행될 메서드이다.
- 진입점이 되는 메서드는 하나의 프로그램 내애서 하나만 있어야 한다.
- 자바에서 진입점은 아래와 같이 작성한다.
public static void main(String[] args){
-> 다 적지 않고 main + tab 하면 됨
}
print 개행 x
println 개행 함
타입
- 타입( type )은 어떠한 값을 담을 수 있는 형태(종류)이다. 크게 기초 타입과 참조 타입으로 나누어져 있다.
기초 타입
- 기초 타입( 기본 타입, 임시타입, primitive(원시의) Type ) 은 해당 타입의 변수 값이 리터럴(literal)이고 메모리의 스택영역에 값이 직접 할당되는 타입이다.
- 정수형
- byte : (1byte) -128이상 127 이하의 수
- short : (2bytes) -32,768 이상 32,767이하의 수
- int : (4bytes) -2,147,483,648 이상 2,147,483,647 이하의 수
- long : (8bytes) -9,223,372,036,854,775,808 이상 9,223,372,036,854,775,807 이하의 수
- 리터럴 숫자 끝에 L을 붙임으로써 Long 타입의 숫자임을 명시적으로 표현할 수 있다.
- 보다 작은 타입의 값을 보다 큰 타입에 할당하는 것은 가능하지만, 보다 큰 타입의 값을 보다 작은 타입에 할당하는 것은 (강제 형변환을 통하지 않으면 )허용되지 않는다.
- 별도의 명시가 없는 정수 표기는 모두 int 타입으로 간주한다.
- 단, byte나 short 타입에 할당하기 위한 리터럴 정수는 묵시적으로 강제 형변환을 발생시킨다. 보다 상세한 조건은 아래와 같다.
- -128이상 127 이하의 정수 리터럴을 byte 타입의 변수에 할당하는 경우
- -32,768 이상 32,676 이하의 정수 리터럴을 short 타입의 변수에 할당하는 경우
- 강제 형변환을 통해 보다 큰 타입의 값을 보다 작은 타입의 변수에 할당할 경우 오버플로우/ 언더플로우가 발생할 수 있다.
- 실수형
- float : (4bytes) 1.4e-45 이상 3.4e+38 이하의 실수. 리터럴인 숫자 끝에 F 를 붙임으로써 float 타입의 숫자임을 명시적으로 표현 할 수 있다.
- double : (8bytes) 4.9e-324 이상 1.79e+308 이하의 실수.리터럴인 숫자 끝에 D를 붙임으로써 double 타입의 숫자임을 명시적으로 표시할 수 있다.
- 별도의 명시가 없는 실수 표기는 모두 double 타입으로 간주한다.
- 문자형
- char: (2bytes) 문자 하나를 담기 위해 사용하는 타입이다. 특수 문자 홑따옴표(')를 사용한다.역슬래쉬(\)를 활용해 특수한 문자를 할당 할 수 있다. 가령, 개행자는 \n 이고 공란(빈값)은 \0와 같다. 문자형 타입의 값은 비어있을 수 없음('')에 유의한다.
- String(bytes)
- 논리형
- boolean:(1byte) 참true 거짓false 을 가진다.
참조타입
- 참조타입(레퍼런스 타입, Reference type)은 해당 타입이 변수 값이 리터럴이지 않고 (문자열string 제외 ) 메모리의 스택영역에는 힙의 주소가 힙영역에는 실제값이 저장된다.
- 기초 타입을 제외한 나머지 모든 타입은 참조타입이다.
- 참조 타입은 new 연산을 통해 객체화(Instantiation) 하여 구현하고, 이 값을 객체라고 한다. 이 객체의 메모리 크기는 가변적이다.
- 대표적인 참조 타입으로 문자열(string)이 있다. 문자열은 객체화 가정(new)을 생략하고 쌍따옴표("") 특수기호를 통해 리터럴처럼 사용 할 수 있도록 처리되어 있다.
변수
- 변수(variable)은 타입과 이름을 가지고 타입에 부합하는 값을 할당해 활용하기 위해 사용한다. 종류는 지역 변수와 멤버 변수, 매개변수 등으로 나눌 수 있다.
- 메서드 내에서 변수를 선언할 때 선언부가 속해있는 스코프 혹은 보다 상위 스코프에서 사용중인 이름을 다시 사용할 수 없다. 이는 매개변수를 포함한다.
지역변수
- 지역 변수(local variable)는 메서드(method)안에 존재하는 변수이다.
- 지역 변수에 값이 할당된적이 없다면, 값 할당을 제외한 모든 접근이 제한된다.
- 명명법: 카멜 케이스
- 선언 방식은 아래와 같다.
[타입] [이름];
-혹은 선언과 동시에 값을 초기화하기 위해 아래와 같이 작성할 수 있다.
[타입] [이름] = 값;
멤버 변수
- 멤버 변수(member variable)는 클래스나 인터페이스 등의 구성요소가 직접 가지는 요소이다.
- 상수가 아닌 멤버 변수에 값을 할당한 적이 없다면, 자동으로 기본 값이 할당된다.
- 정수 및 실수 등 숫자 기초 타입:0
- 문자 기초 타입:\0 ( 널 문자 null character 눈에 보이지 않는 문자)
- 논리 기초 타입 : false
- 모든 참조 타입 : null
- 상수인 멤버 변수의 값은 반드시 직접 할당하거나, 생성자를 통해 초기화하여야 한다.
매개변수
- 매개 변수(parameter)는 메서드 호출시, 호출자가 전달해주는 인자(argument)를 전달 받기 위해 사용하는 변수이다.
상수
- 명명법:카멜 케이스
- 읽기 전용 변수는 편의상 상수라고 많이부르며, final 키워드를 통해 변수의 (스택)값이 한번 할당된 이후로 변할 수 없음을 지정한다.
- final 키워드를 사용하였다 하더라고 참조 타입의 객체가 가지는 힙 영역의 내용에 대한 불변성(immuntability)이 보장되는 것은 아님으로 엄밀히 말하면 상수(constant)라고 말하면 안 되나, 편의상 상수라고 많이 부른다.
- 정적인 상수(static final)이며 리터럴(모든 기초 타입 및 string)이거나 그 속성의 불변성을 보장하는 참조 타입인 멤버 변수에 한하여 대문자 스네이크 케이스 명명법을 사용한다.
- 선언 방식은 아래와 같다.
final [타입] [이름] = [값];
- 지역 변수는 상수로 지정하여도 값 초기화를 반드시 할 필요는 없기 때문에 아래와 같이 선언 할 수 있다.
final [타입] [이름];
- 상수인 멤버 변수의 값은 반 드시 직접 할당하거나, 생성자를 통해 초기화하여야 한다.
'BACK-END > JAVA' 카테고리의 다른 글
| JAVA | 251119 (1) | 2025.11.20 |
|---|---|
| JAVA | 20251118 연산자 (0) | 2025.11.19 |
| [자바] 계산기 과제 TIL (0) | 2025.04.23 |
| [자바 프로그래밍 기초] 예외(Exception)와 예외처리 (try- catch) (0) | 2025.04.17 |
| [자바 프로그래밍 기초] scanner 메소드 next(), nextLine() (0) | 2025.04.16 |