Final 修饰符的一个重要用途就是定义“宏变量”,当定义final变量时,就为该变量指定了初始值,而且该初始值可以在编译时就确定下来,那么这个final变量本职就是一个“宏变量”,编译器会把程序中所有用到该变量的地方直接替换成该变量值。
public static void main(String [] args) {
final int a = 5;
System.out.println(a); // 执行实际是 System.out.println(5); 编译时就会替换。
}
宏 ,满足三个条件:
1、使用final 修饰
2、在定义该final变量时,置顶了初始值
3、该初始值可以在编译时就被确定下来
public static void main(String [] args) {
final String book1 = "Java" + "999";
final String book2 = "Java" + String.valueOf("999");
System.out.println(book1 == "Java999"); // book1 是宏变量,将被直接替换成“Java999”,所以此处为 true
System.out.println(book2 == "Java999"); //book2 不是宏变量,此处为false
}