1.使用final修饰符修饰
2.在定义该final变量时指定了初始值
3.在初始值可以在编译时就被确定下来。
这个final变量就不再是一个变量,而是相当于一个直接量。
package chap6_4;
public class FinalLocalTest {
public static void main(String[] args)
{
final int a=6;
System.out.println(a);
}
}
final修饰符的一个重要用途就是定义“宏变量”
package chap6_4;
public class FinalReplaceTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
final int a=5+2;
final double b=1.2/3;
final String str="疯狂"+"Java";
final String book="疯狂Java讲义:"+99.0;
final String book2="疯狂Java讲义:"+String.valueOf(99.0);
System.out.println(book=="疯狂Java讲义:99.0");
System.out.println(book2=="疯狂Java讲义:99.0");
}
}
运行结果
true
false
Java会使用常量池来管理曾经用过的字符串直接量,例如执行String a=”java”;语句之后,常量池就会缓存一个字符串“java”;如果程序再次执行String b=”java”;系统将会让b直接指向常量池中的”java”字符串,因此a==b将会返回true.
package chap6_4;
public class StringJoinTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1="疯狂Java";
String s2="疯狂"+"Java";
System.out.println(s1==s2);
String str1="疯狂";
String str2="Java";
String s3=str1+str2;
System.out.println(s1==s3);
}
}
运行结果
true
false
由于str1、str2只是两个普通变量,编译器不会执行”宏替换”。