final (最终的) 被final所修饰的属性和方法,类,是终态的方法,属性,类;被修饰的方法不能被继承,也就是不能当父类;被final所修饰的方法不能被重写,只能被继承;被final修饰的属性的值不能被改变; // 定义3个final实例变量 final String str1; final String str2; final String str3 = "Java"; 你这儿定义了,后面的语句是不能改变其赋值的,并且“宏”这个定义在java中,是不正确的,在C语言中有宏文本替换 这一说。
final String str3 = "Java"; 这个在编译期就完成了,其它的都是在运行期才可以,所以只有这个可以内部优化。但,我个人认为,不要依赖编译器的优化才好。
由 http://www.jforeach.com/compile-time-constants-in-java/116 可知,“编译时常量”的条件有四个: They must be declared final They are of primitive data types or String They must be initialized with their declaration. Their value must be constant expression.public class FinalInitTest { final String str1; final String str2; final String str3 = "Java"; final String str4 = str3; final String str5 = str4 + "Java"; { str1 = "Java"; } public FinalInitTest() { str2 = "Java"; } public void display() { System.out.println(str1 + str1 == "JavaJava"); System.out.println(str2 + str2 == "JavaJava"); System.out.println(str3 + str3 == "JavaJava");
应该会对你有点帮助
被final所修饰的属性和方法,类,是终态的方法,属性,类;被修饰的方法不能被继承,也就是不能当父类;被final所修饰的方法不能被重写,只能被继承;被final修饰的属性的值不能被改变;
// 定义3个final实例变量
final String str1;
final String str2;
final String str3 = "Java";
你这儿定义了,后面的语句是不能改变其赋值的,并且“宏”这个定义在java中,是不正确的,在C语言中有宏文本替换 这一说。
这个在编译期就完成了,其它的都是在运行期才可以,所以只有这个可以内部优化。但,我个人认为,不要依赖编译器的优化才好。
由 http://www.jforeach.com/compile-time-constants-in-java/116
可知,“编译时常量”的条件有四个: They must be declared final
They are of primitive data types or String
They must be initialized with their declaration.
Their value must be constant expression.public class FinalInitTest { final String str1;
final String str2;
final String str3 = "Java";
final String str4 = str3;
final String str5 = str4 + "Java"; {
str1 = "Java";
} public FinalInitTest() {
str2 = "Java";
} public void display() { System.out.println(str1 + str1 == "JavaJava"); System.out.println(str2 + str2 == "JavaJava"); System.out.println(str3 + str3 == "JavaJava");
System.out.println(str4 + str4 == "JavaJava");
System.out.println(str4 + str5 == "JavaJavaJava"); }
public static void main(String[] args) {
new FinalInitTest().display();
}
}// 运行结果为:
// run:
// false
// false
// true
// true
// true
// BUILD SUCCESSFUL (total time: 0 seconds)