본문 바로가기
네이버클라우드/JAVA 웹 프로그래밍

JAVA 5일차 (2023-05-26) 자바 기초 DAY3

by prometedor 2023. 5. 26.

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 메모리를 저장