java 문자(Character) 리터럴
문자의 리터럴
- 작은 따옴표 ''를 사용하여 문자를 표현한다.
- 자바는 문자를 메모리에 저장할 때 Unicode 규칙에 따라 2바이트 코드로 저장한다.
- 직접 문자를 적는 대신에 그 문자에 부여된 코드 값을 지정할 수 있다.
- 문자에 대해 부여된 값을 '문자 코드(character code)'라 부른다.
- 코드 값은 사용하는 문자 집합에 따라 다르다.
- 자바는 '유니코드(UTF-16BE; UCS2)' 라는 문자집합을 사용한다.
\u 뒤에 문자에 부여된 코드 값을 16진수로 적는다.
- 문자를 2진수로 변환하는 규칙
문자열 리터럴과 + 연산자
- 문자열 연결 연산자(concatenation): +
+ 를 이용하여 문자열과 문자열을 연결한다.
- 이때 두 개의 문자열이 연결된 새 문자열이 생성된다.
- 예) "홍길동" + "입니다." => "홍길동입니다."
- 문자열과 다른 종류의 값을 연결할 수 있다.
- 연결되기 전에 다른 종류의 값이 먼저 문자열로 바뀐 다음에 연결된다.
public static void main(String[] args) {
System.out.println("Hello," + "world!");
System.out.println("나이:" + 20);
System.out.println(false + "<== 재직자 여부");
System.out.println("성별:" + '여');
System.out.println("키:" + 170.5f);
}
- 미국정보표준교환부호
- 대표적 문자인코딩의 기초
- 영어 대소문자, 숫자, 특수문자등
- 한글은 정의되있지 않음.
ISO-8859-1 (8bit)
- 컴퓨터에 8비트 문자를 나태내기 위한 공동 표준
- ASCII + 유럽문자
- 1의 의미는 라틴-1 서유럽언어를 지원
- HTML 문서의 기본 인코딩방식
kS C 5601(16bit)
- ISO-8859-1 + 알파
- KS X 1001으로 2004년에 개정함
- 한국 산업 규격으로 지정된 한국어 문자집합
- EUC-KR(완성형) 기반으로 정의됨
- 2바이트로 표현할 수 없는 한글글자 마디 추가
- 2350자의 한글만 지원
조합형 (16bit)
- 한글을 초성(4bit), 중성(6bit), 종성(6bit) 으로 나뉘어 표현
- 남은1bit는 맨앞에 붙여 한글표현으로 구분함
- 2350자의 한글표현을 11172자 + 알파로 확장함
MS949 (CP949)
- 마이크로소프트가 도입한 코드페이지
- ECU-KR에 확장이며 하위 호환성이 있음
- 한글 2350자에 대한 규칙 정의
- 통용되는 11172자를 모두 표현할수는 없음
Unicode(16bit)
- 전세계 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰수 있게 설계된 표준
- 영어, 한글 등 모두 2byte로 표현
- 하지만 영어를 2byte로 표현하기에 메모리 사용량 증가로 비효율적
- 한글은 새로 정의하였기에 ECU-KR과 호환이 안됨
UTF-8
- Unicode 문자를 1~4byte로 변환
- 영어,숫자,특수문자 2byte -> 1byte로 표현가능
- 한글은 규칙에 따라 2byte -> 3byte 로 변환한다.
- 문자에 따라 바이트 크기가 다름
'가' => 0xac00(10101100_00000000, Unicode)
=> 1110xxxx 10xxxxxx 10xxxxxx (변환규칙)
=> 11101010 10110000 10000000 (규칙에 값 적용)
=> 0xEAB080(UTF-8)
줄바꿈코드
- 타자기에서 유래 (유튜브 영상 참조)
- Carrage Return (CR) - 0x0D
- Line Feed (LF) - 0X0A
- Window -> CRLF : 0D0A
- Unix -> LF : 0A
이스케이프 문자(escape character) = 문자 제어 코드
- 화면에 출력하는 문자가 아니라 문자 출력을 제어하는 문자이다.
- 제어 문자
\n - Line Feed(LF), 0x0a
\r - Carrage Return(CR), 0x0d
\f - Form Feed, 0x0c
\t - Tab, 0x09
\b - Backspace, 0x08
\' - Single Quote, 0x27
\" - Double Quote, 0x22
\\ - Backslash, 0x5c
인코딩(Encodig), 디코딩(Decodig)
인코딩 >>
문자 <---------> 2진수
<< 디코딩
- 주로 영상파일을 압축하고 재생할때 많이 쓰는용어
Encoding/Decodig 을 따서 Codec 이라는 용어 정의
- 아래는 기초개념의 예시
H.264 인코더 H.264 디코더
동영상데이터 -----------> H.264 동영상압축파일 ----------> 동영상플레이어
압축 압축해제