Il seguente programma Java semplice sembra visualizzare la stringa Ciao Mondo attraverso la dichiarazione System.out.println("Hello World");
ma non è così. Semplicemente sostituisce questo con un'altra stringa che è in questo caso, Good Day !! e lo visualizza sulla console. La stringa Hello World non viene visualizzata affatto. Diamo un'occhiata al seguente frammento di codice semplice in Java.Un codice Java semplice che funziona bene ma le funzioni in un modo che è un po 'difficile da seguire
package goodday;
import java.lang.reflect.Field;
final public class Main
{
public static void main(String[] args)
{
System.out.println("Hello World");
}
static
{
try
{
Field value = String.class.getDeclaredField("value");
value.setAccessible(true);
value.set("Hello World", value.get("Good Day !!"));
}
catch (Exception e)
{
throw new AssertionError(e);
}
}
}
Solo una domanda su questo codice qui. Funziona esattamente come previsto ma non posso ridurre la lunghezza della corda Good Day !!. Se viene fatto un tentativo per farlo, provoca un java.lang.ArrayIndexOutOfBoudsException
. Se la lunghezza viene aumentata, il programma funziona bene ma il resto dei caratteri nella stringa di visualizzazione viene troncato significa che la lunghezza di entrambe le stringhe dovrebbe essere in qualche modo la stessa. Perché? Questa è la cosa che non ho potuto capire.
Naturalmente ti rendi conto che non dovresti mai farlo mai in codice reale? –
Conosco Java da molto tempo, ma non ho mai visto nulla di simile prima, davvero una bella domanda: D –