본문 바로가기

프로그래밍/CS

데이터의 코드화, 리터럴, 이스케이프 문자

문자

    System.out.println('A');
    System.out.println('가');

  • 유니코드
    System.out.println('\u4eba'); //人
    System.out.println('\u0041'); //A
    System.out.println('\u0030'); //0
    System.out.println('\u0025'); //%
    System.out.println('\uac00'); //가

  • 리터럴
    System.out.println(0xac00); // 44032 - 정수 리터럴
    System.out.println((char)0xac00); // 가

    System.out.println('가'); // 문자 리터럴
    System.out.println((int)'가'); // 44032

    System.out.println('각' + 1); // 44034

    System.out.println('각' - 1); // 44032

    System.out.println((char)('각' - 1)); // 가

 

 

문자열

자바는 char(2byte) 배열에 문자열의 유니코드(Unicode; UCS-2)문자열을 저장함

ex) "A B 가 각"

[0041][0042][ac00][ac01] <== 2바이트 메모리 4개에 저장됨

  • " " 사용하여 문자열을 나열
    System.out.println("홍길동");
    System.out.println("가"); // 문자가 아닌 문자열

  • + 연산자(operator : 특정 기능을 수행하는 명령)를 이용하여 여러 개의 문자열을 하나로 합쳐 새 문자열을 만들 수 있다
    System.out.println("이름 : 홍길동, " + 20 + "살");
    System.out.println("취업여부 : " + false);
    System.out.println("키 : " + 180.7f);
    => 문자열 + 다른 타입의 값 => 다른 종류의 값을 문자열로 먼저 변환하여 기존 문자열에 결합
☆ 이스케이프 문자

문자를 제어하는 기능을 가진 문자

\ (n/r/f/t/b/'/"//)

System.out.println("Hello, World!");
System.out.println("Hello, \nWorld!"); // 줄바꿈
System.out.println("Hello, \rWorld!"); // 커서(cursor) : 문자를 출력할 위치 가리킴System.out.println("Hello, \b\b\bWorld!");
System.out.println("Hello, \tWorld!"); // tab
System.out.println("Hello, \fWorld!"); // formfeed 추가
System.out.println("Hello, \"W\"orld!"); // " " 안에서 " 출력
System.out.println("Hello, 'W'orld!"); // " " 안에서 ' 문자는 출력 가능
System.out.println('\''); // ' ' 안에서 ' 출력
System.out.println('\''); // ' ' 안에서 " 문자는 출력 가능
System.out.println("c:\\Users\\user\\git"); // \ 문자 출력

줄바꿈 코드

Carrage Return(CR) : 0d

Line Feed(LF) : 0a

- Windows OS에서는 줄바꿈을 표시하기 위해 CRLF 2바이트 코드 삽입.

- Unix OS에서는 줄바꿈을 표시하기 위해 LF 1바이트 코드 삽입.

 

실수(부동소수점)

  • 4바이트 부동소수점 유효 자릿수 : 7자리
    System.out.println(3.141592f); //3.141592
    System.out.println(314.1592f); //314.1592
    System.out.println(3141.592f); //3141.592
    System.out.println(31415.92f); //31415.92
    System.out.println(314159.2f); //314159.2

    System.out.println(3.1415926535f); //3.1415927
    System.out.println(3.141592653f); //3.1415927
    System.out.println(3.14159265f); //3.1415927
    System.out.println(3.1415926f); //3.1415925
    System.out.println(3.141592f); //3.141592(OK)
    System.out.println(3141592.6f); //3141592.5 (Error)

  • 8바이트 부동소수점 유효 자릿수 : 15자리 (자바 기본 설정)
    System.out.println(3.141592653589793); // 16자리 OK
    System.out.println(31415926.53589793); // 3.141592653589793E7 OK
    System.out.println(314159265358979.3); // 3.141592653589793E14 OK

  • 16자리인 경우 일부 부동소수점의 값이 제대로 저장되지 않음
    System.out.println(914159265358979.3); // 9.141592653589792E14 Error
    System.out.println(91415926.53589793); // 9.141592653589793E7 OK
    System.out.println(9.141592653589793); // 9.141592653589793 OK

  • 15자리인 경우 대부분 부동소수점의 값이 제대로 저장된다
    System.out.println(91415926535897.9); // 9.14159265358979E13 OK
    System.out.println(91415926.5358979); // 9.14159265358979E7 OK
    System.out.println(9.14159265358979); // 9.14159265358979 OK

 

논리(Boolean)

- JVM은 논리 값을 저장할 때 4바이트 정수 메모리로 true(1), false(0) 저장

  배열의 경우에는 1바이트 정수 배열 메모리 사용

System.out.println(true);
System.out.println(false);

  • 보통 비교 연산의 결과
    System.out.println5 < 4 ); // false
    System.out.println5 > 4 ); // true

  • 논리 연산의 결과도 논리 값
    System.out.printlntrue && true ); // true
    System.out.printlntrue && false ); // false

    System.out.printlntrue || true ); // true
    System.out.printlntrue || false ); // true

  • 문자 코드와 ' ' : '문자' 단독으로 사용될 때에는 문자로 취급하지만 다른 값과 연산을 수행하면 해당 문자코드는 정수로 간주
    System.out.println'가' == 44032 ); // true
    System.out.println'가' == 44033 ); // false