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

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

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

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

方法重載的意思是

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

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

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

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

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

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

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

java基本類型重載

1.重載

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

2.基本類型重載

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

3.代碼示例

public class Test { 
    /**
     * 測(cè)試涉及基本類型的重載
     */
    public static void main(String[] args) {        
        System.out.print("char類型重載:");
        char x='x';
        f1(x);f2(x);f3(x);  
        System.out.print("byte類型重載:");
        byte y=0;
        f1(y);f2(y);f3(y);
        System.out.print("short類型重載:");
        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類型重載:f1(char)f2(int)f3(int)
byte類型重載:f1(byte)f2(short)f3(int)
short類型重載:f1(short)f2(short)f3(int)f4(long)

結(jié)論:

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

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

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

4.重載解析過程

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

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

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

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

5.可行集獲取的原則

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

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

byte-short-int-long-float-double 

char-int-long-float-double 

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

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

相關(guān)文章

  • ArrayList及HashMap的擴(kuò)容規(guī)則講解

    ArrayList及HashMap的擴(kuò)容規(guī)則講解

    今天小編就為大家分享一篇關(guān)于ArrayList及HashMap的擴(kuò)容規(guī)則講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Java根據(jù)Request獲取客戶端IP

    Java根據(jù)Request獲取客戶端IP

    這篇文章主要介紹了Java根據(jù)Request獲取客戶端IP的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-05-05
  • Java多線程之同步工具類CyclicBarrier

    Java多線程之同步工具類CyclicBarrier

    這篇文章主要介紹Java多線程之同步工具類CyclicBarrier,它是一個(gè)同步工具類,它允許一組線程互相等待,直到達(dá)到某個(gè)公共屏障點(diǎn),支持一個(gè)可選的Runnable命令,在一組線程中的最后一個(gè)線程到達(dá)之后,該命令只在每個(gè)屏障點(diǎn)運(yùn)行一次。下面來看文章具體內(nèi)容
    2021-10-10
  • java的靜態(tài)方法調(diào)用方式

    java的靜態(tài)方法調(diào)用方式

    這篇文章主要介紹了java的靜態(tài)方法調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解Java 類的加載、連接和初始化

    詳解Java 類的加載、連接和初始化

    這篇文章主要介紹了Java 類的加載、連接和初始化的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • java 獲取當(dāng)前時(shí)間的三種方法

    java 獲取當(dāng)前時(shí)間的三種方法

    這篇文章主要介紹了java 獲取當(dāng)前時(shí)間的三種方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Springboot?HTTP如何調(diào)用其他服務(wù)

    Springboot?HTTP如何調(diào)用其他服務(wù)

    這篇文章主要介紹了Springboot?HTTP如何調(diào)用其他服務(wù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 深入探究TimSort對(duì)歸并排序算法的優(yōu)化及Java實(shí)現(xiàn)

    深入探究TimSort對(duì)歸并排序算法的優(yōu)化及Java實(shí)現(xiàn)

    這篇文章主要介紹了TimSort歸并排序的優(yōu)化及Java實(shí)現(xiàn),TimSort 是一個(gè)歸并排序做了大量?jī)?yōu)化的版本,需要的朋友可以參考下
    2016-05-05
  • Java抽象的本質(zhì)解析

    Java抽象的本質(zhì)解析

    對(duì)于面向?qū)ο缶幊虂碚f,抽象是它的一大特征之一,在 Java 中可以通過兩種形式來體現(xiàn)OOP的抽象:接口和抽象類,下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)抽象的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Java聊天室之實(shí)現(xiàn)一個(gè)服務(wù)器與多個(gè)客戶端通信

    Java聊天室之實(shí)現(xiàn)一個(gè)服務(wù)器與多個(gè)客戶端通信

    這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易聊天室之實(shí)現(xiàn)一個(gè)服務(wù)器與多個(gè)客戶端通信,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下
    2022-10-10

最新評(píng)論

蛟河市| 韶关市| 怀来县| 漳州市| 昌邑市| 青田县| 安化县| 许昌县| 台东县| 德惠市| 漠河县| 江永县| 乌鲁木齐县| 闸北区| 大冶市| 广州市| 通城县| 济宁市| 凤凰县| 恩平市| 诏安县| 伊宁市| 镇巴县| 三门县| 报价| 和田市| 曲松县| 玉龙| 松潘县| 莱西市| 清原| 洛南县| 扶沟县| 南宫市| 龙南县| 阜城县| 咸阳市| 珲春市| 同仁县| 平潭县| 曲靖市|