码:
public static void main ( String[] args){
String a = new String("Hello");
String b = " pardner.";
System.out.println(a+b);
System.out.println("a.equals(\"Hello\") --> " + (a.equals("Hello")));
System.out.println("a --> " + a);
}
static {
try {
Field value = String.class.getDeclaredField("value");
value.setAccessible(true);
value.set("Hello", value.get("Howdy"));
} catch (Exception e) { }
}
Run Code Online (Sandbox Code Playgroud)
结果:
Howdy pardner.
a.equals("Hello") --> true
a --> Howdy
Run Code Online (Sandbox Code Playgroud)
打印时,此代码如何将"Hello"更改为"Howdy"?
我是JAVA编程的新手.我在书中看过
String a="Hello";
String b="Hello";
System.out.println(a==b);
Run Code Online (Sandbox Code Playgroud)
这应该返回false,因为a&b引用String对象的不同实例.
Bcoz赋值运算符比较对象的实例,但我仍然得到一个真实的.
我正在使用Eclipse IDE.
书中的例子如下:
String s = "s";
String sToo = "s";
System.out.println(a == b);
System.out.println(s == sToo);
Run Code Online (Sandbox Code Playgroud)
对于s == sToo,该位代码打印"false".那是因为s和sToo是对String对象的不同实例的引用.因此,即使它们具有相同的值,它们在相等运算符的眼中也是不相等的.此外,s =="s"打印为false,因为字符串文字产生String类的另一个实例.
书名:JAVA 7 for Absolute Beginners