유니코드(Unicode)와 ASCII 코드
-
사람이 글자와 발음 등으로 문자를 식별하는 것과 달리 프로그램은 각 문자에 정수값 코드를 부여하여 문자를 식별한다.
-
유니코드
- 자바가 사용하는 문자 코드
- 모든 문자에 고유 번호를 부여
- 모든 언어에 적용가능
- 플랫폼에 무관하게 사용가능
- ASCII
- 유니코드의 처음 128문자는 미국에서 고안됀 ASCII코드이다.
- 다음의 표에 있는 것이 ASCII 코드표이다.
- 16진수로 나타내면 0x00 ~ 0x7F이며 10진수에서는 0~127이다.
ASCII 코드 출력
public static void main(String[] args) {
for(char i=0x21; i<=0x7E; i++) {
System.out.printf("%c %04x\t", i, (int)i);
if (i%8==0) System.out.println();
}
}
결과
! 0021 " 0022 # 0023 $ 0024 % 0025 & 0026 ' 0027 ( 0028
) 0029 * 002a + 002b , 002c - 002d . 002e / 002f 0 0030
1 0031 2 0032 3 0033 4 0034 5 0035 6 0036 7 0037 8 0038
9 0039 : 003a ; 003b < 003c = 003d > 003e ? 003f @ 0040
A 0041 B 0042 C 0043 D 0044 E 0045 F 0046 G 0047 H 0048
I 0049 J 004a K 004b L 004c M 004d N 004e O 004f P 0050
Q 0051 R 0052 S 0053 T 0054 U 0055 V 0056 W 0057 X 0058
Y 0059 Z 005a [ 005b \ 005c ] 005d ^ 005e _ 005f ` 0060
a 0061 b 0062 c 0063 d 0064 e 0065 f 0066 g 0067 h 0068
i 0069 j 006a k 006b l 006c m 006d n 006e o 006f p 0070
q 0071 r 0072 s 0073 t 0074 u 0075 v 0076 w 0077 x 0078
y 0079 z 007a { 007b | 007c } 007d ~ 007e
char형
- 위의 for문에서 char형 변수를 정수로 나타내어 문자로 나타내는 것을 보여준다.
- '!'처럼 단인 인용 부호로 문자를 감싼 것을 문자 리터럴char literal이라 한다.
- 1글자만 표기한 단일 문자 리터럴 형식을 char형이라 한다.
유니코드 확장(Unicode Escape)
- 유니코드 확장은
\u
다음 4자리의 16진수를 사용해 문자를 나타내는 표기 방법이다. - ASCII 코드에 포함된 문자의 경우는 2자리 16진수 코드 앞에
\u00
을 붙이면 유니코드 확장이 된다.
\u0041 알파벳 'A'
\u0041 알파벳 'B'
String형의 생성자
- String은 기본형(int, double 등)이 아닌
java.lang
패키지에 소속된 클래스이다.
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
char[] c = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
String s1 = "ABC";
String s2 = new String(); // String()
String s3 = new String(c); // String(char[])
String s4 = new String(c, 5, 3); // String(char[], int, int)
String s5 = new String("XYZ"); // String(String)
System.out.print("문자열:");
String s6 = stdIn.next();
System.out.println("s1 = " + s1);
System.out.println("s2 = " + s2);
System.out.println("s3 = " + s3);
System.out.println("s4 = " + s4);
System.out.println("s5 = " + s5);
System.out.println("s6 = " + s6);
}
결과
문자열:morning
s1 = ABC
s2 =
s3 = ABCDEFGHIJ
s4 = FGH
s5 = XYZ
s6 = morning
- s1 : 문자열 리터럴
- s2 : 생성자 String()
- s3 : char형 배열 c에 포함되는 모든 문자로 문자열을 생성.
- s4 :char형 배열 c의 5번째 요소부터 3개 연속 문자의 문자열 생성
- s5: 문자열 "XYZ"와 동일한 리터럴을 신규 생성
- s6 : next 메서드 호출
String s1 = null;
String s2 = "";
String s3 = "ABC";
String s4 = "ABC";
String s5 = "ABC";
s5 = "XYZ";
System.out.println("문자열 s1 = "+s1);
System.out.println("문자열 s2 = "+s2);
System.out.println("문자열 s3 = "+s3);
System.out.println("문자열 s4 = "+s4);
System.out.println("문자열 s5 = "+s5);
System.out.println("s3과 s4는 같은 문자열 리터럴을 참조"+
((s3==s4)?"하고 있다.":"하지 않고 있다."));
결과
문자열 s1 = null
문자열 s2 =
문자열 s3 = ABC
문자열 s4 = ABC
문자열 s5 = XYZ
s3과 s4는 같은 문자열 리터럴을 참조하고 있다.
- s1 : null 참조에 의해 출력시 'null'이 출력된다.
- s2 : 빈 문자열에 의한 초기화.
s2.length
의 결과값은 0이다. - s3, s4: 동일한 문자열 리터럴에 의한 초기화: 마지막 출력문에서 볼 수 있듯이, 같은 문자열에 대한 참조 변수는 같은 값을 가진다.
- s5 : 대입에 의해 s3, s4, s5가 참조하던 문자열이 변경된 것이 아니라, s5가 참조하는 문자가 'XYZ'로 변경되었다.
'Java > Java 기초' 카테고리의 다른 글
Java29 String.equals, compareTo, String.format메서드 (0) | 2020.06.09 |
---|---|
Java28 String. intern, length, charAt, indexOf (0) | 2020.06.08 |
Java26 인터페이스 (0) | 2020.06.03 |
Java25 가위바위보 프로그램 (0) | 2020.06.02 |
Java24 문서화 주석과 JavaDoc (0) | 2020.06.01 |