본문 바로가기
JAVA/언어입문

JAVA 변수(variable)의 데이터타입(data type) - 문자형(char)

by Sunyoung95 2022. 3. 2.
문자형(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이 더 유리하다.

참고 : https://nhj12311.tistory.com/59

 

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배열과 String클래스의 변환

char[] chArr = {'A', 'B', 'C'};
String str = new String(chArr);  // char배열 -> String
char[] tmp = str.toCharArray();  // String -> char 배열

참고한 글 

 

[Java] char배열과 String 클래스의 차이는?

지금까지 여러 문자, 즉 문자열을 저장할 때 String타입의 변수를 사용했다. 사실 문자열이라는 용어는 '문자를 연이어 늘어놓은 것'을 의미하므로 문자배열인 char배열과 같은 뜻이다. 자바에서는

devlog-wjdrbs96.tistory.com

 

[Java] Char형 배열과 String 클래스

안녕하세요 골드입니다.  오늘은 Char형 배열과 String 클래스에 관계에 대해서 글을 작성하겠습니다. 알고리즘을 풀다 보면 char형 배열을 String으로 혹은 그 반대에 경우로 형변환을 하는 경우가

kumgo1d.tistory.com

 

댓글