문자형(char)
- 컴퓨터에서는 문자도 내부적으로는 bit의 조합으로 표현
- JAVA에서는 문자를 2byte로 처리
- 인코딩 : 문자 → 숫자(코드값)
- 디코딩 : 숫자(코드값) → 문자
- 문자를 변수에 저장할 때는 인코딩을 통해 문자에 해당하는 코드값이 저장됨
char ch = 'A';
system.out.println(ch) // 'A'
system.oyt.println((int)ch) // 65 : char type를 int로 변환해서 코드를 출력
ch = 66;
system.out.println(ch) // 'B' : int 변수를 char로도 출력가능
문자세트(Ascii vs. Unicode)
- 아스키(ASCII)
- 1byte(=8bit)로 영문자, 숫자, 특수문자 등을 표현
- 유니코드(Unicode)
- 한글과 같은 복잡한 언어를 표현하기 위한 표준 인코딩(국제 표준)
- multi-byte : 1byte로만 표현하기에는 문자의 가짓수가 너무 많기 때문
- UTF-8, UTF-16(JAVA가 사용)
더보기
- 문자 하나를 표현할 때 사용하는 byte
UTF - 8 UTF - 16 1 ~ 4 byte 2byte, 4byte - UTF-8에서 3byte가 필요한 경우 3byte로 저장하지만 UTF-16의 경우에는 2byte로 표현한다.
- 영문만 사용하는 경우 UTF-8은 1byte만 사용되고, UTF-16은 기본 2byte를 사용하므로 이 경우에는 UTF-8이 효율적이다.
- 한글의 경우 UTF-8은 3byte, UTF-16은 2byte로 표현되므로 UTF-16이 더 유리하다.
char vs. string
- 문자를 저장할 때는 char type, 문자열을 저장할 때는 String class를 사용한다.
- char은 변수자체에 값을 담지만 String은 문자열이 위치한 좌표를 저장한다.
- char는 담긴 값이 같다면 == 사용가능
- String은 담긴 내용이 같아도 String 생성시마다 서로 다른 좌표가 생성되기 때문에 ==를 사용하면 같지 않다는 결과가 나온다. 대신에 .equals()를 사용하여 내용물이 같은지 확인 가능
- String class = Char 배열 + 메서드(charAt, ....)
- char[] toCharArray() : 문자열(String)을 char[]로 변환
- char charAt(int index) : 문자열에서 특정 위치(index)에 있는 값을 반환
- int length() : 문자열의 길이를 반환
- boolean equals(String str) : 문자열의 내용이 같은지 확인
- String subString(int from, int to) : 문자열의 해당 범위(from ~ to)에 내용을 반환(to는 포함되지 않는다)
- Char 배열 = 읽기 O, 내용변경 O
- String클래스 = 읽기 O, 내용변경 X
String str = "JAVA";
str += "8";
System.out.println(str); // "JAVA8"
- String 값이 바뀐것 같지만 새로운 문자열이 생겨 str이 새로운 주소값을 가르키게 된다.
char[] chArr = {'A', 'B', 'C'};
String str = new String(chArr); // char배열 -> String
char[] tmp = str.toCharArray(); // String -> char 배열
참고한 글
'JAVA > 언어입문' 카테고리의 다른 글
JAVA 상수(final)/리터럴/형변환(casting) (0) | 2022.03.03 |
---|---|
JAVA 변수(variable)의 데이터타입(data type) - 실수형/논리형 (0) | 2022.03.03 |
JAVA 변수(variable)의 데이터타입(data type) - 정수형(byte, short, int, long) (0) | 2022.03.02 |
JAVA 변수(variable)란? (0) | 2022.03.02 |
컴퓨터에서 데이터 표시법(2진수, 8진수, 16진수) (0) | 2022.03.02 |
댓글