java 문자 리터럴

wooni·2023년 6월 20일

Java

목록 보기
3/6

java 문자(Character) 리터럴

문자의 리터럴

  • 작은 따옴표 ''를 사용하여 문자를 표현한다.
  • 자바는 문자를 메모리에 저장할 때 Unicode 규칙에 따라 2바이트 코드로 저장한다.
  • 직접 문자를 적는 대신에 그 문자에 부여된 코드 값을 지정할 수 있다.
  • 문자에 대해 부여된 값을 '문자 코드(character code)'라 부른다.
  • 코드 값은 사용하는 문자 집합에 따라 다르다.
  • 자바는 '유니코드(UTF-16BE; UCS2)' 라는 문자집합을 사용한다.
  • \u 뒤에 문자에 부여된 코드 값을 16진수로 적는다.
  • 문자를 2진수로 변환하는 규칙
    • 문자집합(character set)

문자열 리터럴과 + 연산자

  • 문자열 연결 연산자(concatenation): +
    • + 를 이용하여 문자열과 문자열을 연결한다.
      • 이때 두 개의 문자열이 연결된 새 문자열이 생성된다.
      • 예) "홍길동" + "입니다." => "홍길동입니다."
  • 문자열과 다른 종류의 값을 연결할 수 있다.
    • 연결되기 전에 다른 종류의 값이 먼저 문자열로 바뀐 다음에 연결된다.
public static void main(String[] args) {
    // 두 문자열을 합쳐 새 문자열이 생성된다.
    // "Hello," + "world!" = "Hello,world!"
    System.out.println("Hello," + "world!");

    // 새 문자열을 만들어 숫자를 붙인다.
    // "나이:" + 20 = "나이:20"
    System.out.println("나이:" + 20);

    // 새 문자열을 만들어 논리 값을 붙인다.
    // false + "<== 재직자 여부" = "false<== 재직자 여부"
    System.out.println(false + "<== 재직자 여부");

    // 새 문자열을 만들어 문자를 붙인다.
    // "성별:" + '여' = "성별:여"
    System.out.println("성별:" + '여');

    // 새 문자열을 만들어 부동소수점을 붙인다.
    // "키:" + 170.5f = "키:170.5" <== 부동소수점 접미사 f 는 새로 만든 문자열에 붙지 않는다.
    System.out.println("키:" + 170.5f);
  }

ASCII (7bit, American Standard Code for Information Interchange)

  • 미국정보표준교환부호
  • 대표적 문자인코딩의 기초
  • 영어 대소문자, 숫자, 특수문자등
  • 한글은 정의되있지 않음.

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 동영상압축파일 ----------> 동영상플레이어
             압축                         압축해제
profile
Backend

0개의 댓글