相关疑难解决方法(0)

这个静态代码如何工作?

码:

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

14
推荐指数
3
解决办法
782
查看次数

赋值运算符String对象

我是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

java object assignment-operator comparison-operators

0
推荐指数
1
解决办法
3092
查看次数