本帖最后由 4968547610317 于 2013-5-31 11:32 编辑
final关键字的应用:当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值.
你的程序中,str1和str2都被final所修饰,构造代码块会先于show方法运行,将值赋给str1和str2。而str3一开始就被赋值.既三个变量都被赋值“abc”。
public void show() {
System.out.println(STR1 + STR1);
System.out.println(STR2 + STR2);
System.out.println(STR3 + STR3);
System.out.println((STR1 + STR1 )==( "abcabc"));
System.out.println((STR1 + STR1 ).equals( "abcabc"));
String s=STR3 + STR3;
System.out.println(s == "abcabc");
System.out.println(STR3 + STR3 == "abcabc");
}
abcabc
abcabc
abcabc
false
true
true
true
由结果可知用==是可以比较的,但是只能是一个固定值跟另一个值比较,里面不能有运算。用equals则没有这种问题 |