1. ASCII
ㄴ 영어 대소문자, 숫자, 특수문자를 포함하는 7bit 문자 부호 체계
ㄴ 0부터 127까지의 숫자를 각각 특정 문자에 할당하여 사용
ㄴ 미국 표준임
2. ISO-8859-1
ㄴ ISO-Latin-1 이라고도 불림
ㄴ 각 문자를 표현하기 위해 8bit(또는 1byte)를 사용
ㄴ 0부터 255까지의 숫자를 각각 특정 문자에 할당하여 사용
ㄴ 국제 표준임
ㄴ ASCII 문자 집합을 포함함
3. KSC-5601
ㄴ 대한민국에서 사용되는 문자 인코딩 표준
ㄴ EUC-KR이라고도 불림 => 국제표준
ㄴ 각 문자를 표현하기 위해 16bit(또는 2byte)를 사용
ㄴ 0부터 65535까지의 숫자를 각각 특정 문자에 할당하여 사용
ㄴ 한국어를 표현하기 위해 광범위하게 사용되며, 한글 외의 문자도 일부 포함함
ㄴ 전각문자/기호/자소/선문자/한글/한국에서 사용되는 일부 한자 등을 포함
4. 조합형
ㄴ 한글을 표현하기 위한 입력 방식 중 하나
ㄴ 국제표준이 아님
ㄴ 한글은 자음과 모음을 조합하여 글자를 만드는 특징이 있기 때문에, 이를 입력하기 위해 조합형이 개발됨
ㄴ 자음과 모음을 따로 입력한 후, 이를 조합하여 한글 음절을 완성
ㄴ 'ㄷ'과 'ㅏ'와 'ㄴ'를 입력하면 '단'이라는 한글 음절이 완성
ㄴ 각 문자를 표현하기 위해 16bit(또는 2byte)를 사용
ㄴ 특수문자, 옛한글, 우리나라 한자 등 11172자 + ⍺
5. MS949
ㄴ 마이크로소프트의 한글 문자 인코딩 방식
ㄴ 국제표준이 아님
ㄴ EUC-KR과 호환되며, 한글 외에도 영문, 숫자, 특수 문자 등을 포함
ㄴ 각 문자를 표현하기 위해 16bit(또는 2byte)를 사용
ㄴ EUC-KR(2350자) + ⍺ = 11172자
6. Unicode
ㄴ 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 처리하기 위한 국제 표준
ㄴ ISO-8859-1 + ⍺(모든 문자의 2진수 규칙을 새로 정의)
ㄴ 각 문자를 표현하기 위해 16bit(또는 2byte)를 사용
7. UTF-8
ㄴ Unicode 문자를 1byte ~ 4byte 로 재정의
ㄴ 8bit 기반의 인코딩 방식
ㄴ 영어는 2byte 에서 1byte 로, 한글은 2byte 에서 3byte 로 재정의됨
ㄴ 8bit로 표현던 문자는 그대로 8bit로 정의됨 (ASCII 문자)
Windows pc 에서 실습
ㄴ 메모장 이용
ABC
abc
012
가각간
똠똘똥
=> ANSI : ms949 방식
=> UTF-16 BE : unicode 방식
=> UTF-8 : UTF-8 방식
ㄴ 위에서 저장한 파일을 각각 VSCode 에서 확인 시 ms949 로 인코딩 한 경우 글자 깨짐 현상
ㄴ UTF-16, UTF-8 은 깨지지 않음
인코딩(encoding)
ㄴ 특정 형식의 데이터를 다른 형식으로 변환하는 과정
ex) 영상데이터
ㄴ H.264 인코더를 이용해 압축(변환)하면 H.264 포맷의 영상 압축파일이 만들어지고 이를 H.264 디코더를 이용해 압축해제하여 영상플레이어로 재생시킴
디코딩(decoding)
ㄴ 인코딩된 데이터를 원래의 형식으로 되돌리는 과정
Codec
ㄴ "Coder"와 "Decoder"의 합성어
ㄴ 데이터를 한 형식에서 다른 형식으로 변환하는 기능
ㄴ 인코딩과 디코딩을 수행
줄바꿈 코드
ㄴ Carrage Return(CR) 과 Line Feed(LF) 가 있음
ㄴ Carrage Return(CR) 은 0x0D 로 표현되고, Line Feed(LF) 는 0x0A 로 표현됨
ㄴ Windows 운영 체제에서는 CRLF를 줄바꿈으로 사용하는 반면, Unix 및 Linux 운영 체제에서는 LF만을 줄바꿈으로 사용하는 경우가 많음
=> Unix 및 Linux 운영체제에서는 "\n"만 써도 됨 (0x0A)
ㄴ "Hello\r\nWorld"라는 문자열은 CRLF로 끝나는 줄바꿈을 의미함
=> 이는 "Hello"라는 문자열 다음에 CR과 LF가 오며, 이후에 "World"라는 문자열이 이어짐
변수
ㄴ 데이터를 임시보관하는 메모리임
ㄴ 여기서 메모리는 HDD가 아닌 RAM 을 의미함
ㄴ OS(운영체제)는 RAM 을 관리하고 APP(어플리케이션)이 OS가 제공하는 영역의 RAM을 사용함
자바
RAM
ㄴ 컴퓨터 시스템에서 프로그램 실행에 필요한 데이터와 명령을 일시적으로 저장하는 주기억장치
ㄴ 자바 애플리케이션이 실행되는 동안, 해당 애플리케이션과 JVM이 필요로 하는 데이터 및 실행 코드가 RAM에 로드됨
JVM
ㄴ 자바 애플리케이션의 실행, 메모리 관리, 스레드 관리 등을 처리
JAVA APP
ㄴ 자바로 작성된 소프트웨어 프로그램
ㄴ .java 파일로 작성되어 컴파일되고, JVM에서 실행됨
OS
ㄴ JAVA APP은 OS 위에서 동작하며, JVM을 통해 OS의 기능을 활용함
JVM이 관리하는 메모리
ㄴ JVM 은 OS가 제공한 메모리 영역을 관리함
JVM Stack
ㄴ JVM Stack에서 로컬 변수는 JVM이 메소드를 실행하는 동안 해당 스레드의 JVM Stack 프레임에 저장됨
ㄴ 각 메소드 호출 시 새로운 스택 프레임이 생성되며, 해당 프레임에 로컬 변수가 할당됨
=> 로컬변수는 함수가 호출될 때 만들어짐
Heap
ㄴ 동적으로 할당된 객체들이 저장되는 공간
ㄴ 모든 객체 인스턴스와 배열이 힙에 할당됨
ㄴ 힙은 가비지 컬렉션(Garbage Collection)에 의해 관리되며, 사용되지 않는 객체들은 자동으로 정리됨
ㄴ 인스턴스 변수(Instance Variable)는 객체의 상태를 나타내기 위해 클래스 내에서 선언된 변수로, 이러한 인스턴스 변수들은 힙(Heap) 메모리 영역에 저장됨
Method Area
ㄴ JVM이 클래스 파일을 로드할 때 클래스의 구조와 메소드 코드, Constant Pool(상수 풀) 등을 저장하는 공간
ㄴ 클래스 로더에 의해 로드된 클래스의 정보(Class 파일 로딩 => 메소드 블럭, 명령코드)와 static 변수(정적 변수)가 저장됨
ㄴ 이 영역은 JVM이 시작될 때 생성되고, 모든 스레드에서 공유됨
Constants Pool
ㄴ 클래스 파일 내에 있는 상수들을 저장하는 공간
ㄴ 문자열, 숫자 등의 상수를 저장함
ㄴ File I/O API : 파일 입출력을 다루는 API
ㄴ GUI API : 그래픽을 다루는 API
ㄴ Device Driver : 컴퓨터의 운영 체제(OS) 와 하드웨어 장치(H/W) 간의 통신과 상호작용을 가능하게 하는 소프트웨어 구성 요소
ㄴ System.out.println("Hello"); 명령어를 내릴 경우
ㄴ println => 모니터로 출력하는 명령이지만 모니터로 직접 호출되는 것은 아님
=> real 도구가 아닌 추상적인 의미임 --> real function 은 JVM 이 처리함
=> JVM이 알아서 해당 함수를 호출해주므로 Java로 프로그램을 작성 시 운영체별로 명령어를 암기할 필요가 없음
변수 선언
ㄴ 메모리에 값을 담을 수 있도록 메모리의 일정 영역을 확보하는 명령을 변수 선언이라고 함
int a;
ㄴ int : 정수 값을 담을 4byte 를 확보
ㄴ a : 해당 메모리의 이름을 'a'라고 함
int => 정수 값을 담는 용도의 메모리이고, 크기는 4byte 임
값 할당(assignment)
ㄴ 값 할당 시 할당 연산자 '=' 을 사용함
ㄴ 변수는 항상 왼쪽
ㄴ L-value 는 반드시 변수여야함
ㄴ R-value 에는 리터럴, 변수, 표현식이 올 수 있음
Data Type
정수
ㄴ byte, short, int, long, char 이 있음
ㄴ byte 는 1byte 메모리를 , short 와 char 는 2byte 메모리를, int 는 4byte 메모리를, long 은 8byte 메모리를 저장
ㄴ short 와 char 의 메모리 크기는 같지만 short 는 -32768 ~ +32767 범위를, char는 0 ~ 65535 로 범위를 표현할 수 있어 다름
ㄴ char 는 문자이지만 정수타입임
부동 소수점
ㄴ float, double 이 있음
ㄴ float 은 4byte 메모리를, double 은 8byte 메모리를 저장
논리
ㄴ boolean 이 있음
ㄴ 기본은 4byte 메모리를 저장하는데, 배열일 경우 1byte 메모리를 저장
'네이버클라우드 > JAVA 웹 프로그래밍' 카테고리의 다른 글
JAVA 7일차 (2023-05-31) 자바 기초 DAY5 (0) | 2023.05.31 |
---|---|
JAVA 6일차 (2023-05-30) 자바 기초 DAY4 (0) | 2023.05.30 |
JAVA 4일차 (2023-05-25) 자바 기초 DAY2 (0) | 2023.05.26 |
JAVA 3일차 (2023-05-24) 자바 기초 DAY1 (0) | 2023.05.25 |
JAVA 3일차 (2023-05-24) 프로그래밍 개론 DAY3 (0) | 2023.05.24 |