23.03.02 자바 기초 TIL
저급언어 : 기계가 이해할 수 있는 단계의 언어
고급언어 : 컴퓨터는 이해하기 어렵지만 사람이 이해하기 쉬운 언어
컴파일러 : 고급언어로 작성된 언어는 기계가 알아들을 수 있도록 번역작업을 진행
번역기를 통해서 컴퓨터에게 전달하는 언어를 컴파일언어,번역기가 아닌 번역도구를 이용하는 언어를 인터프리터 언어
자바 : 고급언어, JVM이라는 도구가 인터프리터형식으로 읽어서 실행하는 형식으로 구성
한번작성하고 어느곳에서든 쓰일 수 있는 언어!
JDK(javac,jheap,jconsole…) > JRE(java class library) > JVM(Class Loader, Garbage Collector, Execution Engine…)
# 자료형
변수(수 : 어떠한 것, 공간) : 값을 저장할 수 있는 공간
초기화(initialize) : int integer = 10;
한번에 선언 + 저장하는것
자료형
- 원시 자료형
- 미리 정의되어있는 데이터를 기억하기 위해 존재하는 기본적인 자료형
- 정수자료형, 실수자료형, 문자자료형,논리자료형
- 실수자료형 (float, double) 부동소수점
- 대부분상황에서 float은 범위가 적음,오차가 발생할수있다. 대신 적게 사용해서 빠르게 사용한다. 대부분 double을 많이 사용한다-
- 지수방식 : 10의 1승 ⇒ 1e1
- 0.1 → 1X10^-1 → 1e-1
- 정규화표기법을 사용하기 위해 사용
- 3.xxxxxxxxxxxxxx 정규화를 사용
- 0.1 정수부 : 0 실수부:1
- .1 도 사용가능 실수부만
- 문자자료형
char 2byte
자바에서는 유니코드
char a = ‘A’; //65가 저장되어있음
char asciiA = 65 //
boolean true / false
- 참조자료형
기본형 타입을 제외한 자료형을 참조자료형이라한다. 데이터의 값을 그대로 저장하는 것이 아니라 메모리상에서 데이터가 저장된 ‘주소’를 저장한다.
참조값을 저장함
미리 정의되지 않음
Array, Class, Annotations, null, Enumeration, String
RAM(Random Access Memory)
가장 작은 단위 : 1bit
8bit = 1byte
1024byte = 1 KB
2의10승씩 차이가 난다
KB < BM < GM < TB < PB < EB < ZB
bit : 0 or 1
8bit (=1byte): 0000 0000 (4개 단위로 끊어서 보기)
정수형
1 byte : -128 ~ 127
short = 2 byte -32.768 ~ 32.767
int = 4byte (제일 많이 사용)
long = 8byte
실수형
float = 4byte
double = 8byte
문자형
char = 2byte
상수의 컴파일 후 형태
int a = 10;
0000 1010
부호를 위해서 비트를 하나 빼준다
MSB : Most Significant Bit
LSB : Least Significant Bit
10진수(Decimal)
양수 음수 구분이 안되기때문에
보수라는 개념을 도입한다
4 + ? =10
? = 6
6은 10에대한 4의 보수
2진수의 2의 보수는 10 이 되는것 (1= 2가되는것)
0000 0111
1111 1000
메모리(=램)
- 올라온다 = 로드 : 변수나 값 저장 공간
- 코드영역, 데이터영역, 힙 영역, 스택영역
- 코드영역 : text 영역, 작성된 코드들이 저장되는 영역
- 데이터영역 : 프로그램의 전역변수, 정적변수
자바에서 함수는 다른곳에서 선언되어있고
main메소드에서 실행됨
참조자료형이 힙영역에 뜬다
인스턴스가 힙에 뜬다
스택에서 참조하여 사용
쓰레드 : 명령을 실질적으로 수행하는 주체
자바의 메모리
- class Loader > jvm 내부에 런타임 데이터 로드해서 > excecution engine에 가비지컬렉터 작동으로 메모리 적재, 소멸 수행
- 힙, 메소드 영역 공유, 스택 피씨 네이티브 메소드 스택 수행
- 메소드와 힙영역에 공유!
스택영역 : 지역변수, 파라미터 값들
반환해주면 소멸!
자바가 동작하는 방식
.java (자바 소스코드)
javac (자바 컴파일러)
.class ⇒ 컴파일 (바이트코드)
jvm 내부로 들어간다
class loader 가 읽음
필요한것들은 런타임데이터에 올리고
excecution 엔진이 관리!
'🍎 Backend > JAVA' 카테고리의 다른 글
[java] abstract(추상) vs implements의 비교 (1) | 2024.12.20 |
---|---|
[JAVA] 해시 맵 (0) | 2023.12.11 |
[JAVA] 메모리 관리 & call by value (0) | 2023.12.08 |
[Java] 컴파일 과정 (0) | 2023.12.04 |
[JAVA] 클래스와 객체 (0) | 2023.02.05 |