2014-09-28 2 views
3

내가 다음 건너 온 :자바 - 공공 INT 같이 IndexOf (INT의 채널)

public int indexOf(int ch) 

내가 자바 개념을 관련 일부 문자열을 개정 할 때 http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int)에 따라. 우리가 java.lang.String위한 방법 indexOf()를 사용할 때 내 지식으로 당

이 매개 변수는 char을 있어야하는데 따라서 나는 public int indexOf(int ch) 이유
public int indexOf(char ch) 

그래서, 저를 설명해주십시오 수를 가정했다.

+0

그것을인가 값 int? – Vikram

+0

유니 코드 코드 포인트를 다루기 때문에'char'가 제공하는 것보다 넓은 범위가 필요합니다. 'char'는 단지 8 비트이고'int'는 32 비트입니다. – Guildenstern

+1

@Guildenstern'char'는 16 비트입니다. 원래 유니 코드는 충분했지만 더 이상은 아닙니다. – ajb

답변

3

유니 코드에는 2^16 개 이상의 문자가 포함되어 있습니다. Java 'char'및 'String'은 전체 문자 세트를 나타 내기 위해 유니 코드 변환 형식 (UTF-16)을 사용합니다. Base Multilingual Plane의 문자는 단일 16 비트 'char'로 표현됩니다. 나머지는 서로 게이트 쌍으로 표시됩니다.이 목적으로 예약 된 두 개의 특수 16 비트 값입니다.

대체 표현은 UTF-32입니다. 이 표현에서 각 문자는 단일 32 비트 항목, 마침표입니다.

예를 들어, 설형 문자가 SMP에 있습니다. 블록의 첫 번째 문자는 U + 12000입니다. UTF-32에서는 0x12000입니다. UTF-16에서는 "\uD808\uDC00"입니다. Here's some pictures.

CharacterString 클래스는 편의상 UTF-32 문자로 작동하는 몇 가지 방법을 제공합니다. 당신은 그들 중 하나에 대해 묻고 있습니다. 문자의 데이터 유형으로 'int'를 볼 때마다 'int'에 UTF-32 값이 포함됩니다. 서로 게이트 쌍 대신에 단일 UTF-32 값으로 일부 연산을 수행하는 것이 더 편리 할 수 ​​있다는 것을 알기는 어렵지 않습니다.

이것은 작곡 된 악센트와 관련이 없습니다. 하나 또는 두 개의 UTF-16 문자로 유니 코드로 표현 될 수 있지만 관련 대리는 없습니다. U + 0061 (a), U + 00E1 (a와 precomposed accent) 및 U + 0301 (acute accent 구성)은 모두 일반 BMP 문자입니다. 따라서 UTF-32에서도 U + 0061, U + 0301의 두 항목으로 구성 할 수 있습니다.

ICU4J 라이브러리는보다 완전한 UTF-32 클래스 및 메소드 세트를 제공합니다.

1

모든 문자가 다음 라인을 시도하는 int 변수 에 문자를 할당하여 같은 방법으로하는 int로 차트를 변환 할 수 있습니다뿐만 아니라 그 문자를 얻을하는 데 사용할 수있는 int 값

char ch = 65; 
System.out.println(ch); 
int i = 'A'; 
System.out.println(i); 

루프에서 char 값을 사용하고 있으며 모든 char이 int 값을 가지고 있기 때문에 허용됩니다. 는 A부터 Z까지 알파벳을 인쇄 할이 코드를 시도하고 이에 상응하는 INT는 int 형 또는 데이터가 차례로 (유니 코드 코드 포인트) 유니 코드 코드 포인트로 해당 문자를 처리하기 때문에

for(char j = 'A'; j <= 'Z'; j++){ 
     System.out.println("int "+((int) j)+" = "+j); 
    } 
관련 문제