欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java方法重載和參數(shù)類(lèi)型自動(dòng)提升方式

 更新時(shí)間:2022年02月15日 10:12:14   作者:..xh  
這篇文章主要介紹了java方法重載和參數(shù)類(lèi)型自動(dòng)提升方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

方法重載和參數(shù)類(lèi)型自動(dòng)提升

方法重載的意思是

一個(gè)類(lèi)中可以由多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須不同,

參數(shù)不同是指滿足下列之一:

  • 參數(shù)的個(gè)數(shù)不同
  • 參數(shù)的個(gè)數(shù)相同,但參數(shù)列表中對(duì)相應(yīng)的某個(gè)參數(shù)的類(lèi)型不同

對(duì)于基本類(lèi)型數(shù)據(jù)而言

參數(shù)類(lèi)型存在自動(dòng)提升

以byte a = 1為例,存在如下自動(dòng)提升方式:

byte–> short–> int --> long --> float --> double --> Integer -->Object

java基本類(lèi)型重載

1.重載

java允許在一個(gè)類(lèi)中,多個(gè)方法擁有相同的名字,但在名字相同的同時(shí),必須有不同的參數(shù),這就是重載

2.基本類(lèi)型重載

基本類(lèi)型能從一個(gè)較小的類(lèi)型自動(dòng)提升至一個(gè)較大的類(lèi)型,此過(guò)程涉及重載時(shí),可能會(huì)造成一些混淆。

3.代碼示例

public class Test { 
    /**
     * 測(cè)試涉及基本類(lèi)型的重載
     */
    public static void main(String[] args) {        
        System.out.print("char類(lèi)型重載:");
        char x='x';
        f1(x);f2(x);f3(x);  
        System.out.print("byte類(lèi)型重載:");
        byte y=0;
        f1(y);f2(y);f3(y);
        System.out.print("short類(lèi)型重載:");
        short z=0;
        f1(z);f2(z);f3(z);f4(z);            
    }
    public static void f1(char x){System.out.print("f1(char)");}
    public static void f1(byte x){System.out.print("f1(byte)");}
    public static void f1(short x){System.out.print("f1(short)");}
    public static void f1(int x){System.out.print("f1(int)");}
    public static void f1(long x){System.out.print("f1(long)");}
    public static void f1(float x){System.out.print("f1(float)");}
    public static void f1(double x){System.out.print("f1(double)");}    
    
    public static void f2(short x){System.out.print("f2(short)");}
    public static void f2(int x){System.out.print("f2(int)");}
    public static void f2(long x){System.out.print("f2(long)");}
    public static void f2(float x){System.out.print("f2(float)");}
    public static void f2(double x){System.out.print("f2(double)");}    
    
    public static void f3(int x){System.out.print("f3(int)");}
    public static void f3(long x){System.out.print("f3(long)");}
    public static void f3(float x){System.out.print("f3(float)");}
    public static void f3(double x){System.out.print("f3(double)");}    
    public static void f4(long x){System.out.print("f4(long)");}
}

輸出:

char類(lèi)型重載:f1(char)f2(int)f3(int)
byte類(lèi)型重載:f1(byte)f2(short)f3(int)
short類(lèi)型重載:f1(short)f2(short)f3(int)f4(long)

結(jié)論:

1)如果傳入的數(shù)據(jù)類(lèi)型小于方法中聲明的形參類(lèi)型,實(shí)際數(shù)據(jù)就會(huì)被提升。

2)char類(lèi)型有所不同,如果無(wú)法恰好找到char參數(shù)的方法,但是int參數(shù)方法存在時(shí),char直接提升至int型。

3)反過(guò)來(lái),如果傳入的實(shí)際參數(shù)大,而形式參數(shù)類(lèi)型小,則需要通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換(窄化轉(zhuǎn)化),否則編譯器報(bào)錯(cuò)。

4.重載解析過(guò)程

1)根據(jù)調(diào)用的方法名,查找是否有定義好的同名方法,如果沒(méi)有就會(huì)報(bào)錯(cuò) 

2)比較形參和實(shí)參的數(shù)目是否相等,如果沒(méi)有則會(huì)報(bào)錯(cuò)。如果有一個(gè)或多個(gè)方法符合條件,這些方法進(jìn)入候選集 

3)與候選集中的方法比較參數(shù)表,如果對(duì)應(yīng)位置上的每個(gè)參數(shù)類(lèi)型完全匹配,或者可以通過(guò)擴(kuò)展轉(zhuǎn)換相匹配,則該方法稱(chēng)為可行方法,并入可行集。若不存在可行方法,則會(huì)報(bào)錯(cuò) 

4)在可行集中按照下面的原則選取最佳可行方法

5.可行集獲取的原則

1)若每一個(gè)參數(shù)都可以完全匹配,它就是最佳可行方法 

2)若某個(gè)方法的每一個(gè)參數(shù)都不比別的方法差,且至少有一個(gè)參數(shù)比別的方法好,它就是最佳可行方法,這里的差和好是指,完全匹配要比擴(kuò)展轉(zhuǎn)化好,不過(guò)同樣是擴(kuò)展轉(zhuǎn)換,仍然存在好喝差的問(wèn)題,擴(kuò)展轉(zhuǎn)換有兩條路徑 

byte-short-int-long-float-double 

char-int-long-float-double 

這兩條路徑中位于左邊的類(lèi)型都可以轉(zhuǎn)換為右邊的類(lèi)型,不過(guò)源類(lèi)型與目標(biāo)類(lèi)型的距離越近,則這種轉(zhuǎn)化就越好。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐

    Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐

    在實(shí)際項(xiàng)目中由于服務(wù)器內(nèi)存有限,人工清理常會(huì)忘記,本文主要介紹了Java每7天日志自動(dòng)清理的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 優(yōu)化常見(jiàn)的java排序算法

    優(yōu)化常見(jiàn)的java排序算法

    這篇文章主要介紹了Java編程中快速排序算法的實(shí)現(xiàn)及相關(guān)算法優(yōu)化,快速排序算法的最差時(shí)間復(fù)雜度為(n^2),最優(yōu)時(shí)間復(fù)雜度為(n\log n),存在優(yōu)化的空間,需要的朋友可以參考下
    2021-07-07
  • Java關(guān)系操作符簡(jiǎn)寫(xiě)介紹

    Java關(guān)系操作符簡(jiǎn)寫(xiě)介紹

    下面小編就為大家?guī)?lái)一篇Java關(guān)系操作符簡(jiǎn)寫(xiě)介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • selenium+java破解極驗(yàn)滑動(dòng)驗(yàn)證碼的示例代碼

    selenium+java破解極驗(yàn)滑動(dòng)驗(yàn)證碼的示例代碼

    本篇文章主要介紹了selenium+java破解極驗(yàn)滑動(dòng)驗(yàn)證碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • spring mvc 和ajax異步交互完整實(shí)例代碼

    spring mvc 和ajax異步交互完整實(shí)例代碼

    本篇文章主要介紹了spring mvc 和ajax異步交互完整實(shí)例代碼,簡(jiǎn)單的AJAX+SpringMVC的異步交互小例子,有興趣的可以了解一下。
    2017-02-02
  • java ant 配置及構(gòu)建項(xiàng)目圖文教程

    java ant 配置及構(gòu)建項(xiàng)目圖文教程

    以下是對(duì)java ant配置及構(gòu)建項(xiàng)目進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • 淺談Java內(nèi)存泄露

    淺談Java內(nèi)存泄露

    內(nèi)存泄漏(Memory Leak)是指程序中己動(dòng)態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無(wú)法釋放,造成系統(tǒng)內(nèi)存的浪費(fèi),導(dǎo)致程序運(yùn)行速度減慢甚至系統(tǒng)崩潰等嚴(yán)重后果。下面我們來(lái)一起了解如何解決
    2019-05-05
  • PowerJob分布式任務(wù)調(diào)度源碼流程解讀

    PowerJob分布式任務(wù)調(diào)度源碼流程解讀

    這篇文章主要為大家介紹了PowerJob分布式任務(wù)調(diào)度源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-02-02
  • Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks)

    Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks)

    這篇文章主要介紹了Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 如何基于java實(shí)現(xiàn)解壓ZIP TAR等文件

    如何基于java實(shí)現(xiàn)解壓ZIP TAR等文件

    這篇文章主要介紹了如何基于java實(shí)現(xiàn)解壓ZIP TAR等文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論