java关键字final(宏)
作者:互联网
java关键字final(宏)
final是java中的一个关键字,可以修饰类,成员变量,局部变量,方法,表示不可变。
当final修饰一个变量的时候,已经为该变量指定了初始值,那么这个变量在编译的时候就已经确定了下来,那么这个final变量就相当于c语言中的宏变量,编译器会把程序中的所有用到该变量的地方替换成为该变量的值
class Test{
public static void main(String[] args) {
String s1 = "helloworld";
String s2 = "hello" + "world";
System.out.println(s1==s2);
// String s3 = "hello";
// String s4 = "world";
final String s3 = "hello";
final String s4 = "world";
String s5 = s3+s4;
System.out.println(s5==s1);
}
}
上述程序中,如果s3与s4不添加final,那么s5 == s1就会输出false,但是如果s3与s4添加了final修饰词,那么s5 == s1就会输出true
原因是因为:
java使用常量池来管理曾经使用过的字符串直接量,例如执行String s1 = "helloworld"之后,系统的常量池中就会缓存一个字符串"java",如果这个时候程序再次执行String b = "helloworld"后,系统就会将String b直接指向常量池中的"java"字符串,因此s1 == s2会返回true
对于s5,如果s3与s4不添加final,那么s3与s4就是两个普通的变量,编译器不会进行"宏替换",因此编译器无法确定s5的值,就无法将⬆s5指向常量池中的缓存,所以s5 == s1输出false
运行结果如下
标签:java,String,s3,s1,s5,s4,关键字,final 来源: https://www.cnblogs.com/botak/p/13994454.html