标题: 希望谁能解释下 [打印本页] 作者: 党传才 时间: 2012-4-12 13:34 标题: 希望谁能解释下 public class finalTest{
public static void main(String[] args) {
final String book = "测试:"+ 99.0;
final String book2 = "测试:"+ String.valueOf(99.0);
System.out.println(book == "测试:99.0");
System.out.println(book2 == "测试:99.0");
}
}
在群里面看到一个问题,不明白。希望谁能解释下,为什么第二个输出的是false。作者: 袁计艳 时间: 2012-4-12 14:05
是这样的:
正如楼上兄弟说的 ==比较的是地址
然后在回到你的代码上:
final String book2 = "测试:"+ String.valueOf(99.0);
重新在内存开辟了空间
另外要想比较值就要使用 equals作者: 石好强 时间: 2012-4-12 14:19 本帖最后由 石好强 于 2012-4-12 14:20 编辑
final String book = "测试:"+ 99.0; //这个是进行了一步操作,直接转化成字符串,一个对象,开辟了一个空间[
final String book2 = "测试:"+ String.valueOf(99.0);//这个是进行了两步操作,前面"测试"是一个字符串,而后面String.valueOf(99.0);是一个返回的字符数组对象,开辟了空间,这是第一步操作。而 "测试:"+ String.valueOf(99.0),是第二个操作,是两个对象