2014-03-29 5 views
0

Collection.sort (List)를 수행하면 String의 compareTo() 논리를 기반으로 정렬됩니다.이 논리에서는 두 문자열 char을 비교합니다.java 유니 코드 값 char

List<String> file1 = new ArrayList<String>(); 
    file1.add("1,7,zz"); 
    file1.add("11,2,xx"); 
    file1.add("331,5,yy"); 
    Collections.sort(file1); 

나의 이해는 내가 그것을 할 수있는 방법 등을 문자와 같은, (쉼표)의 유니 코드 값을 알고 싶어, 문자는 유니 코드 값을 지정 의미입니까? 모든 URL에 숫자 값이 포함되어 있습니까?

+0

'int'로 타입 변환하면됩니다. –

답변

1

나의 이해는

이 잘 char에서 int에 대한 암시 적 변환, 거기에 (쉼표) 등, 문자는 내가 좋아하는 문자의 유니 코드 값을 알고 싶어, 유니 코드 값을 지정 의미 인 당신을 쉽게 인쇄 할 수 있습니다 :

int value = ','; 
System.out.println(value); // Prints 44 

char의 UTF-16 코드 단위입니다. (FGE 노트로서, 자바의 char는 UTF-16 코드 단위가 아닌 유니 코드 문자입니다.이 UTF-16 코드 단위로 표시됩니다 65535보다 큰 유니 코드 코드 포인트가있다.)

모든 URL에 숫자 값이 포함되어 있습니까?

예 - 유니 코드에 대한 자세한 내용은 Unicode web site으로 이동하십시오.

+0

나는 그것이 왜 나를 때리지 않았다는 것을 모른다 :(감사.그러나 유니 코드 웹 사이트에서이 차트 /리스트를 얻을 수 없습니다. ( – kushi

+0

@ kushi : 여러 목록이 있습니다. http://unicode.org/charts를 참조하십시오. –

1

Uhm no, char은 "유니 코드 값"이 아니며 유니 코드 코드 포인트입니다.

char은 UTF-16 인코딩의 코드 단위입니다. 그리고 Unicode의 Basic Multilingual Plane (즉, U + 0000에서 U + FFFF까지의 유니 코드 코드 포인트,이 범위에서 정의 된 코드 포인트의 경우), 예, char과 유니 코드 사이에 1 대 1 매핑이 있습니다 . 당신이 할 수있는 코드 포인트의 숫자 값을 알기 위해

은 수행

System.out.println((int) myString.charAt(0)); 

하지만이 BMP 외부 코드 포인트의 경우에는 해당되지 않습니다. 이를 위해 하나의 코드 포인트가 두 개의 문자로 변환됩니다. Character.toChars()을 참조하십시오. 그리고 더 일반적으로 코드 포인트와 관련된 Character의 모든 정적 메서드. 상당수가 있습니다!

이것은 또한 문자의 수, 제자의 하지 수를 반환 이후 String.length()가 실제로 오해의 소지가 있다는 것을 의미한다. Unicode emoticon 하나 (즉, 페이지의 첫 번째)와

데모 :

System.out.println(new String(Character.toChars(0x1f600)).length()) 

인쇄 2. 반면 :

final String s = new String(Character.toChars(0x1f600)); 
System.out.println(s.codePointCount(0, s.length()); 

인쇄 1.

+0

'length()'는 실제로 거짓말하지 않습니다. javadoc이 반환하는 것은 유니 코드 (unicode) 코드 단위입니다. –

+0

@SotiriosDelimanolis는 이름의 오해를 불러 일으키지 않습니다 ...하지만 네, 텍스트를 더 명확하게 편집 할 것입니다. – fge