2013-09-27 15 views
15

Poniższy fragment kodu zwraca 46059 na Java 6 i 48757 na Java 7. Jakieś pomysły, co mogło ulec zmianie?Character.isLetterOrDigit (char) zwraca inną wartość w java 6 i 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

(Najprawdopodobniej więcej zestawów znaków dodano do 7.) –

+0

wydrukuj znak wraz z wynikiem 'isLetterOrDigit' i porównaj wyniki. Albo zmienili definicję niektórych, albo obsługują więcej znaków. –

+0

@JoeriHendrickx - Wydruk 65K "wyników" byłby nieco trudnym zadaniem. –

Odpowiedz

16

Podejrzewam this document posiada odpowiedź:

Nowe skrypty oraz znaki Unicode 6.0.0
Wczesne wersje Java SE 7 wydaniu dodano wsparcie dla Unicode 5.1.0. Ostateczna wersja wydania Java SE 7 obsługuje Unicode 6.0.0. Unicode 6.0.0 jest główną wersją standardu Unicode i zapewnia obsługę ponad 2000 dodatkowych znaków, a także obsługę właściwości i plików danych.

+0

Również javadoc dla 'Character' pokazuje inny poziom obsługi Unicode dla [6] (http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html) i [7] (http : //docs.oracle.com/javase/7/docs/api/java/lang/Character.html) –

Powiązane problemy