final String book2 = "测试:"+ String.valueOf(99.0);
System.out.println(book == "测试:99.0");
System.out.println(book2 == "测试:99.0");
}
}
在群里面看到一个问题,不明白。希望谁能解释下,为什么第二个输出的是false。
System.out.println(book2 == "测试:99.0");
表示的是栈内存中的变量book2所指向的地址值是否和堆内存中字符串"测试:99.0"的地址值相同
而字符串"测试:99.0"的地址值是book1所指向的地址值;
显而易见,book2和book1是两个不同的变量,地址值指向也不同;
顺便说一句,被final修饰的变量是不能够多次赋值的,初次赋值后,就不能在改变;
|