final关键字的作用
生活随笔
收集整理的這篇文章主要介紹了
final关键字的作用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 1.修飾類時
- 2.修飾方法時
-
3.修飾屬性和局部變量時
- 3.1修飾局部變量時
- 3.2修飾成員變量時
- 3.3修飾類變量時
- 4.final與普通變量的區別
- 5.final用于引用
1.修飾類時
1.只能是公共的(public)就算不寫也是public
2.被final修飾的類不可以被繼承
//前面默認有個public 寫不寫都行
final class A{
}
2.修飾方法時
1.方法不能不能覆蓋
2.被final修飾的方法,JVM會嘗試將其內聯,以提高運行效率
3.修飾屬性和局部變量時
3.1修飾局部變量時
1.要賦值
2.不能被改變
public class Test01 {
public static void main(String[] args) {
go();
}
public static void go(){
// 方式一:初始化的時候賦值
// final int age = 10;
// 方式二:先初始化后賦值
final int age;
age = 10;
System.out.println(age);
}
}
3.2修飾成員變量時
1.必須在系統賦默認值之前賦值
2.不可更改
public class Test01 {
// 1.寫法一報錯未在創建時聲明對象
// final int a;
// a =10;
// 2.寫法二正確
// final int a = 10;
// 3.寫法三正確
final int a;
// 趕在系統賦默認值之前賦值就行,系統賦默認值在構造方法執行的時候
public Test01() {
this.a =0;
}
}
final String name = "qy";
//報錯
name = "ym";
final Object obj = new Object();
//報錯
obj = new Object();
3.3修飾類變量時
1.與static結合使用修飾的變量是常量
2.常量要符合命名規范,全部大寫,可以用下劃線連接
3.被final修飾的常量,在編譯階段會存入常量池中
public class Main {
// final 放前放后都一樣
// final static double PI = 3.1415926;
static final double PI = 3.1415926;
}
4.final與普通變量的區別
public class Test1 {
public static void main(String[] args) {
String a = "hello2";
final String b = "hello";
String d = "hello";
String c = b + 2;
String e = d + 2;
System.out.println((a == c));
System.out.println((a == e));
}
}
//結果
//true
//false
public class Test2 {
public static void main(String[] args) {
String a = "hello2";
final String b = getHello();
String c = b + 2;
System.out.println((a == c));
}
public static String getHello() {
return "hello";
}
}
//結果
//false
通過上面兩個例子,我們可以發現在Test1中被final修飾的變量在進行字符串串接的時候,地址沒變,但是在Test2中通過方法調用后就變了,也就是說間接的賦值會改變地址。
5.final用于引用
如果修飾引用,那么表示引用不可變,引用指向的內容可變。
public class Test02 {
public static void main(String[] args) {
final Student stu = new Student("小芊",18);
//可以修改里面的值
stu.setName("芊崳");
// 不能再new
// stu = new Student("ff",5);
}
}
總結
以上是生活随笔為你收集整理的final关键字的作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【scipy 基础】--图像处理
- 下一篇: 微服务系列-Spring Boot使用O