最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java final與泛型詳細(xì)解析

 更新時(shí)間:2025年11月07日 10:33:38   作者:芝士漢堡貓  
文章主要介紹了Java中的final關(guān)鍵字、泛型以及包裝類,final關(guān)鍵字用于確保變量、方法和類不會(huì)被修改,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

一、final關(guān)鍵字

為什么會(huì)有final關(guān)鍵字?答:確保它們不會(huì)在子類中改變語義。

特點(diǎn):

(1)修飾常量:必須賦值的操作,且只能被賦值一次,之后不可修改;

a.當(dāng)final修飾屬性時(shí)(必須手動(dòng)賦值,系統(tǒng)不會(huì)自動(dòng)賦值):

·所有對象共同用一個(gè)常量時(shí)--可顯示初始化賦值,可代碼塊中初始化;

·當(dāng)每個(gè)對象使用不同值時(shí)->可以構(gòu)造器中初始化。

b.當(dāng)final修飾局部變量時(shí):

·由final修飾變量只可復(fù)制一次,所以final修飾形參后,調(diào)用方法給常量實(shí)參后,在方法體內(nèi)不可重新賦值;

c.當(dāng)final修飾引用類型變量時(shí):

·不可以賦予其新對象(新地址),但是對象中的內(nèi)部信息可以更改。

(2)修飾方法:final修飾的方法不能被重寫;

(3)修飾類:final修飾的類不能被繼承,String就是final修飾的類。

(4)static final修飾屬性->全局常量

·聲明在方法區(qū)中,可以節(jié)省空間,無需使創(chuàng)建一次對象新建一次

二、泛型<>——泛指一切類型

相關(guān)知識(shí):棧是一種滿足數(shù)據(jù)先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)。

示例代碼:
//入棧操作↓
void push(int value){
    top++;
    arr[top]=value;
}
//出棧操作↓
void pop(){
    println(arr[top]);
    top--;
}

關(guān)于鏈表的刪除:計(jì)算機(jī)中沒有真正意義上的刪除,只需原來指向某一對象對應(yīng)地址的指針跳過該對象,此對象不被使用之后就會(huì)被回收,完成鏈表的“刪除”。

public class Stack<哈基米>{
    private 哈基米 arr[];
    private int top;
    public Stack(int size){
    arr=(哈基米[])new Object[size];//強(qiáng)轉(zhuǎn)換
    top=-1;
}
public void push(哈基米 value){
    if(top==arr.length-1){
        System.out.println("棧已滿")
        return;
       }
     arr[++top]=value;
}
public void pop(){
    if(top==-1){
    System.out.println("棧已空");
    return;
    }
}
System.out.println(arr[top--]);
}

概念:泛型就是把“類型”當(dāng)成“參數(shù)”來傳,一份代碼能適用多種類型。

public static void main(String[] args){
//整形
Stack<Integer> stack=new Stack<>(size:10);
    stack.push(value:1);
    stack.push(value:2);
    stack.push(value:3);
    stack.push(value:4);
    stack.pop();
    stack.pop();
//字符串
Stack<String>stack1=new Stack<>(size:10);
    stack1.push(value:"張三");
    stack1.push(value:"李四");
    stack1.push(value:"王五");
    stack1.pop();
    stack1.pop();
//浮點(diǎn)型
Stack<Double> stack2=new Stack<>(size:10);
    stack2.push(value:1.1);
    stack2.push(value:1.1);
    stack2.pop();
}
}
//輸出為 4
        3
        2
        王五
        李四
        2.2

三、包裝類

Java說萬物皆對象,為什么有包裝類?

答:基本數(shù)據(jù)類型不能有對象屬性,基本數(shù)據(jù)類型不能方法的調(diào)用。

基本數(shù)據(jù)類型對應(yīng)的包裝類:

基本數(shù)據(jù)類型intdoublebooleancharlongfloatshort
包裝類IntegerDoubleBooleanCharacterLongFloatShort

面試題:128陷阱

public static Integer valueOf(int i){
    if(i>=IntegerCache.low&&i<=IntegerCache.high)
    return IntegerCache.cache[i+(-IntegerCache.low)];
    return new Integer(i);
}
Integer i=127;
Integer j=127;
System.out.println(i==j);//true
Integer k=128;
Integer l=128;
System.out.println(k==l);//false

包裝類的自動(dòng)拆裝箱:因?yàn)橛凶詣?dòng)拆裝箱的存在,所以包裝定義的數(shù)據(jù)和基本數(shù)據(jù)類型可以相互轉(zhuǎn)換。

i、j、k、l在內(nèi)存圖中的具體表現(xiàn)是如何的呢?

堆內(nèi)存中有Cache數(shù)組(-128~127),首先main方法入棧,i入?yún)?27在-128~127之間,則返回了127的地址值,同理,j入?yún)?27在-128~127之間,則返回了127的地址值,它們指向同一個(gè)地址,所以返回true。而k和l呢?k入?yún)⒘?28,并不在-128~127之間,所以會(huì)重新創(chuàng)建了新對象,返回新的地址,l入?yún)⒘?28,并不在-128~127之間,所以會(huì)重新創(chuàng)建了新對象,返回新的地址,但是它們創(chuàng)建的新地址并不相同,所以返回false。

總結(jié):我們使用Integer定義的數(shù)據(jù)會(huì)自動(dòng)進(jìn)行裝箱,自動(dòng)裝箱調(diào)用valueOf()方法,該方法會(huì)判斷我們?nèi)雲(yún)⑹欠裨?128~127之間,如果愛這之間,則會(huì)返回一個(gè)已存在的對象的地址(該對象在Cache數(shù)組中,Cache數(shù)組是一個(gè)從-128~127的數(shù)組),則不會(huì)創(chuàng)建新對象,反之則重新創(chuàng)建對象。

自動(dòng)裝箱:基本數(shù)據(jù)類型->包裝類

自動(dòng)拆箱:包裝類->基本數(shù)據(jù)類型

基本數(shù)據(jù)類型和引用數(shù)據(jù)類型用==做輸出的時(shí)候會(huì)自動(dòng)拆裝箱,例如Integer型和int型做==輸出會(huì)自動(dòng)拆箱到int型,兩個(gè)數(shù)比較數(shù)值,相同則返回true,反之則返回false。但是兩個(gè)相同數(shù)據(jù)類型的則不會(huì)進(jìn)行自動(dòng)拆裝箱,例如Integer和Integer進(jìn)行==輸出。

到此這篇關(guān)于Java final與泛型詳細(xì)解析的文章就介紹到這了,更多相關(guān)Java final與泛型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

土默特左旗| 屯留县| 江孜县| 北票市| 开封县| 九台市| 玛沁县| 昌乐县| 阳新县| 天长市| 桂东县| 扶风县| 丹寨县| 冷水江市| 涞水县| 安西县| 大姚县| 临江市| 望城县| 泸水县| 新竹市| 阿鲁科尔沁旗| 万山特区| 淮滨县| 光山县| 三明市| 新绛县| 兴安盟| 乌鲁木齐县| 霍州市| 淮北市| 斗六市| 景德镇市| 治县。| 从化市| 沐川县| 抚宁县| 德惠市| 镇雄县| 边坝县| 剑河县|