[매일 하나의 지식 포인트] 6 - Java 언어 - char 및 code point
2050 단어 매일 하나의 지식 포인트
char
charAt(int index)
Returns the char
value at the specified index. int
codePointAt(int index)
Returns the character (Unicode code point) at the specified index. 이 두 가지 방법의 묘사를 자세히 살펴보면 정상적으로 의문이 생길 수 있다.char와 유니버설 코드 포인트는 어떤 차이가 있습니까?(유니코드 이해 제외)
아마도 많은 사람들이 자바가 사용하는 것이 유니버설이라는 것을 알고 있을 것이다. 사실 대부분은ucs와utf를 구분하지 못한다. 정확히 말하면 자바는utf-16 인코딩을 사용하고utf-16 인코딩은ucs를 표현한다.이 세부 사항의 차이는 문자열이 자바에 저장될 때 모든 문자가 하나의 저장 위치를 차지한다는 보편적인 오해를 초래했다.실제utf-16은 전체ucs-4 문자 집합을 표현할 수 있지만 BMP의 문자는 16자리 정수 1개(이 구역에서 중국어 문자는 20927개), 다른 평면의 문자는 16자리 정수 2개로 저장할 뿐이다.
즉, 보기 드문 경우에 String.length()는 문자열의 길이보다 깁니다.다음 코드를 실행해서 느낌을 찾을 수 있습니다.
package test;
public class Test {
public static String str = "\uD800\uDC00a ";
public static void main(String[] args) {
System.out.printf("str.length(): %d
", str.length());
System.out.printf("str.codePointCount(0, 1): %d
", str.codePointCount(0, 1));
System.out.printf("str.codePointCount(0, 2): %d
", str.codePointCount(0, 2));
System.out.printf("str.codePointCount(0, 3): %d
", str.codePointCount(0, 3));
System.out.printf("str.codePointCount(0, str.length()): %d
", str.codePointCount(0, str.length()));
System.out.printf("str: %s
", str);
System.out.printf("str.charAt(0): %c
", str.charAt(0));
System.out.printf("str.codePointAt(0): %d
", str.codePointAt(0));
System.out.printf("str.codePointAt(1): %d
", str.codePointAt(1));
}
}
마지막 문제, 이걸 알면 무슨 소용이야?이 문제는 대답하기 어렵다.80/20법칙에 따라 20%의 관건적인 문제를 해결하면 80%의 장면을 적용할 수 있다.추상적으로 말하면 모든 문제는 90%(대다수 상황에서는 이렇게 높지 않다), 16개의 문제가 중첩된 상황에서 완전하게 해결할 확률은 0.1853이다. 그래서 왜 우리는 자신이 많은 것을 알고 코드를 잘 쓰지 못한다고 생각하는가.모든 세부 사항을 좀 더 잘 알면 자신이 일을 좀 수월하게 하는 데 도움이 된다.그러나 당신이 해결하는 모든 문제에서 당신이 알고 있는 10만 가지 세부 사항 중 어느 것이 당신을 구했는지 영원히 예측할 수 없다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[매일 하나의 지식 포인트] 21-Java 언어-MultiCatchJava7의 새로운 기능입니다.이전의 코드에서 모든catch는 하나의 이상만 쓸 수 있었다. 일부 디자인이 심사숙고하지 않은 코드는 너무 많은 이상을 던져서 catch 부분이try의 코드보다 길 수 있고 catch의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.