JAVA入门级教学之(final关键字)
?
不希望任何人可以隨意修改自己的東西的時候可以用final關鍵字進行修飾
?
?* 1.final是一個關鍵字,表示最終的,不可變的
?*?
?* 2.final修飾的類無法被繼承
?*?
?* 3.final修飾的方法無法被覆蓋
?*?
?* 4.final修飾的變量一旦被賦值后,不可重新賦值【不可二次賦值】
?*?
?* 5.final修飾的實例變量,必須手動賦值,不能采用系統默認值
?*?
?* 6.final修飾的引用,一旦指向某個對象之后,不能再指向其它對象,那么被指向的對象無法被垃圾回收器回收
? ?只要new一次就會產生一個對象,如果將這個對象的引用用final修飾,則不能再次new這個對象的引用
? ?final Person person=new Person(10);
? ?person=new Person(10);//報錯
?*?
?* 7.final修飾的引用雖然指向某個對象之后不能指向其它對象,但是所指向的對象內部的內存是可以被修改的
?*?
?* 8.final修飾的實例變量,一般和static聯合使用(存儲在方法區),被稱為常量
常量:實際上常量和靜態變量一樣,區別在于:
常量的值不能變
常量和靜態變量,都是存儲在方法區,并且都是在類加載時候初始化
常量一般都是公共的public
?
?
?
萬變不離其宗:final修飾的只能賦值一次
?
?
---------------------------------------------------------------------------------------------------------------------------------------------------------------?
?新建一個User類
package com.lbj.javase12;public class User {public int id;public User() {super(); }public User(int id) {super();this.id = id; }}?新建一個測試類
package com.lbj.javase12; /*** 1.final是一個關鍵字,表示最終的,不可變的* * 2.final修飾的類無法被繼承* * 3.final修飾的方法無法被覆蓋* * 4.final修飾的變量一旦被賦值后,不可重新賦值【不可二次賦值】* * 5.final修飾的實例變量,必須手動賦值,不能采用系統默認值* * 6.final修飾的引用,一旦指向某個對象之后,不能再指向其它對象,那么被指向的對象無法被垃圾回收器回收* * 7.final修飾的引用雖然指向某個對象之后不能指向其它對象,但是所指向的對象內部的內存是可以被修改的* * 8.final修飾的實例變量,一般和static聯合使用,被稱為常量*/ public class Test01 { /** 成員變量之實例變量* * 實例變量有默認值+final修飾的變量一旦賦值不能重新賦值* * 綜合考慮:java語言最終規定實例變量使用final修飾后,必須手動賦值,不能采用系統默認值* * *///final int age;編譯報錯//第一種解決方案final int age=10;//第二種解決方案final int num;public Test01(){//這里面差一點犯了錯誤,因為這里我用了自定義的方法,其實是要用類名才行this.num=10;//以上兩種解決方案:其實本質上就是一種方式,都是在構造方法執行過程中給實例變量賦值}public static void main(String[] args) {int i=10;System.out.println(i);//10i=20;System.out.println(i);//20// 4.final修飾的變量一旦被賦值后,不可重新賦值【不可二次賦值】final int k=10;//k=20;final int m;m=10;//m=20;//------------------------//創建用戶對象User u=new User(100);//User u=ox1234//又創建了一個新的User對象//程序執行到此處表示以上對象已經變成垃圾堆數據,等待垃圾回收器的回收u=new User(200);//u=nv12231//創建用戶對象final User user=new User(30);//user=new User(50);//final修飾的引用,一旦指向某個對象后,不能再指向其它對象,那么被指向的對象無法被垃圾回收器回收//相當于綁定了user這個引用只能和一個對象連接//final修飾的引用雖然指向某個對象之后不能指向其它對象,但是所指向的對象內部是可以被修改的user.id=50;//-----------------//訪問國籍System.out.println(Chinese.GUO_JI);//已經固定,不能修改}} //中國人 class Chinese{/** 國籍* * 需求:每一個中國人的國籍都是中國,而且國籍是不會發生改變的,為了防止國籍被修改,建議加final修飾* * final修飾的實例變量是不可變的,這種變量一般和static聯合使用,被稱為常量* * 常量的定義語法格式:* public static final 類型.常量名=值;* * java規范中要求所有常量的名字全部大寫,每個單詞之間使用下劃線連接*/public static final String GUO_JI="中國"; }?
package com.lbj.javase16; /*** 深入final* * final修飾的引用類型,該引用不可再重新指向其它的java對象* * 但是final修飾的引用,該引用指向的對象的屬性是可以修改的**/ public class Test02 {public static void main(String[] args) {// TODO Auto-generated method stubfinal Customer c=new Customer("123",12);//c是final的,無法重新賦值//c=new Customer("LKKK",20);c.name="321";c.age=25;System.out.println(c.name);System.out.println(c.age);}} class Customer{String name;int age;Customer(String name,int age){this.name=name;this.age=age; } }?
?
?
總結
以上是生活随笔為你收集整理的JAVA入门级教学之(final关键字)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言死循环中输入字符,如下代码,如果输
- 下一篇: slim 搭建rnn_使用Keras搭建