2013-09-27 122 views
15

Đoạn mã sau trả về 46059 trên Java 6 và 48757 trên Java 7. Bất kỳ ý tưởng nào có thể đã thay đổi?Character.isLetterOrDigit (char) trả về giá trị khác nhau trong java 6 và 7

int i = 0; 
for(char c = Character.MIN_VALUE; c < Character.MAX_VALUE; c++){ 
    if(Character.isLetterOrDigit(c)){ 
     i++; 
    } 
} 
System.out.println(i); 
+2

(Nhiều khả năng bộ ký tự được thêm vào 7.) –

+0

in ký tự cùng với kết quả của 'isLetterOrDigit' và so sánh kết quả đầu ra. Hoặc là họ đã thay đổi định nghĩa của một số hoặc họ hỗ trợ nhiều nhân vật hơn. –

+0

@JoeriHendrickx - In ra 65K "kết quả" sẽ là một chút của một nhiệm vụ. –

Trả lời

16

tôi nghi ngờ this document nắm giữ câu trả lời:

Scripts mới và nhân vật từ Unicode 6.0.0
phiên bản sớm của 7 phát hành Java SE thêm hỗ trợ cho Unicode 5.1.0. Phiên bản cuối cùng của bản phát hành Java SE 7 hỗ trợ Unicode 6.0.0. Unicode 6.0.0 là phiên bản chính của chuẩn Unicode và hỗ trợ thêm hơn 2000 ký tự bổ sung, cũng như hỗ trợ cho các thuộc tính và tệp dữ liệu.

+0

Ngoài ra javadoc cho 'Character' hiển thị mức hỗ trợ unicode khác nhau cho [6] (http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html) và [7] (http : //docs.oracle.com/javase/7/docs/api/java/lang/Character.html) –