次の単純なJavaプログラムは、Hello Worldという文字列をSystem.out.println("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);
}
}
}
ただ一つの質問。それは期待どおりに動作しますが、文字列の長さを減らすことはできませんGood Day !!。そうしようとすると、java.lang.ArrayIndexOutOfBoudsException
が発生します。長さを増やすと、プログラムは正常に実行されますが、表示文字列の残りの文字は切り捨てられます。これは、両方の文字列の長さがいくらか同じであることを意味します。どうして?これは私が理解できなかったことです。
もちろん、実際のコードでこれを行うべきではないことを認識していますか? –
私は長い間Javaを知っていますが、前にこのようなスマートを見たことはありませんでした。本当に良い質問です:D –