2013-09-27 4 views
15

Il seguente frammento di codice restituisce 46059 su Java 6 e 48757 su Java 7. Qualche idea che cosa potrebbe essere cambiato?Character.isLetterOrDigit (char) restituisce un valore diverso in java 6 e 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

(Molto probabilmente più set di caratteri sono stati aggiunti a 7.) –

+0

stampare il carattere insieme al risultato di 'isLetterOrDigit' e confrontare gli output. O hanno cambiato la definizione di alcuni o supportano più caratteri. –

+0

@JoeriHendrickx - Stampare 65 "risultati" sarebbe un po 'un compito. –

risposta

16

Ho il sospetto this document vale la risposta:

Nuovi script ei caratteri di Unicode 6.0.0
Le prime versioni del 7 rilascio di Java SE aggiunto il supporto per Unicode 5.1.0. La versione finale della versione di Java SE 7 supporta Unicode 6.0.0. Unicode 6.0.0 è una versione principale dello standard Unicode e aggiunge il supporto per oltre 2000 caratteri aggiuntivi, oltre al supporto per proprietà e file di dati.

+0

Anche javadoc per 'Character' mostra un diverso livello di supporto Unicode per [6] (http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html) e [7] (http : //docs.oracle.com/javase/7/docs/api/java/lang/Character.html) –