以下簡單的Java程序似乎通過語句System.out.println("Hello World");
顯示字符串Hello World,但它沒有。它只是用另一個字符串代替,在這種情況下,美好的一天!並將其顯示在控制檯上。字符串Hello World完全不顯示。讓我們看一下Java中的以下簡單代碼片段。簡單的Java代碼運行良好,但功能有點難以遵循
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);
}
}
}
關於這裏的代碼只有一個問題。它工作正如預期,但我不能減少字符串的長度美好的一天!。如果嘗試這樣做,它會導致java.lang.ArrayIndexOutOfBoudsException
。如果長度增加,程序運行良好,但顯示字符串中的其餘字符被截斷意味着兩個字符串的長度應該有些相同。爲什麼?這是我無法理解的事情。
當然,您意識到您永遠不應該在真正的代碼中這樣做嗎? –
我知道很久以前的Java了,但從來沒有見過這樣的先知,真的很好的問題:D –