1. 程式人生 > >Java 小細節——方法基本型別引數的過載

Java 小細節——方法基本型別引數的過載

閱讀2分鐘,掌握一個Java小細節,你值得擁有!

方法過載指的是方法名相同,引數列表不同(不同的引數型別或者引數順序或者引數個數)的情況。不過你真的瞭解麼?看看下面這個例子。

public class PrimitiveOverloading {
    void f1(char x){
        System.out.println("f1(char)");
    }
    void f1(byte x){
        System.out.println("f1(byte)");
    }
    void f1(short x){
        System.out
.println("f1(short)"); } void f1(int x){ System.out.println("f1(int)"); } void f1(long x){ System.out.println("f1(long)"); } void f1(float x){ System.out.println("f1(float)"); } void f1(double x){ System.out.println("f1(double)"); } public
static void main(String[] args) { PrimitiveOverloading over = new PrimitiveOverloading(); over.f1(5); } }

輸出結果是什麼?為什麼呢?讓我們實踐一下。
這裡寫圖片描述

你會發現常數5被當做int值處理,所以如果某個過載方法接受int型引數,它會被呼叫。至於其他情況,如果傳入的資料型別(實際引數型別)小雨方法中宣告的形式引數型別,實際資料型別就會被提升。
這裡寫圖片描述

如果沒有接受int的方法,就會考慮使用float方法->double方法。如果都沒有,就會編譯報錯。
這裡寫圖片描述

相關推薦

Java 細節——方法基本型別引數過載

閱讀2分鐘,掌握一個Java小細節,你值得擁有! 方法過載指的是方法名相同,引數列表不同(不同的引數型別或者引數順序或者引數個數)的情況。不過你真的瞭解麼?看看下面這個例子。 public class PrimitiveOverloading {

Java方法型別過載

無參無返回值方法的使用 如果方法不包含引數,且沒有返回值,我們稱為無參無返回值的方法。 定義方法: 例如:下面程式碼定義了一個方法名為 show ,沒有引數,且沒有返回值的方法,執行的操作為輸出 “ welcome to imooc. ” 注意哦: 1、 方法體

JAVA呼叫儲存過程--返回結果集(傳入基本型別引數,返回基本型別和結果集)

1  建立儲存過程 create or replace procedure examplepro( inparm1 in varchar2,inparm2 in number,outparm1 out number,result out type_cursor)  ...

Java泛型方法型別萬用字元的區別

泛型方法VS型別萬用字元(兩者可以混用):      1)你會發現所有能用型別萬用字元(?)解決的問題都能用泛型方法解決,並且泛型方法可以解決的更好: 最典型的一個例子就是:          

java基礎深入解析基本型別

 一、基本型別的簡介   基本型別的兩條準則:   Java中,如果對整數不指定型別,預設時int型別,對小數不指定型別,預設是double型別。   基本型別由小到大,可以自動轉換,但是由大到小,則需要強制型別轉換。所佔的位元組數:   byte: 1個位元組;   char: 2個位元組;  

Java中有了基本型別為什麼還要有包裝型別?

Java中基本資料型別與包裝型別有: 基本型別     包裝器型別   boolean Boolean char Character int Integer byte Byte short Short long

Java細節:List可以add(null)嗎?

在寫程式碼的時候,有時候遇到for迴圈,寫到下面的時候有一點猶豫。 List<Data> dataList = ...; for (Data d : dataList) { if (d != null) { // 我需要這個判斷嗎?

Java 細節

private static String fmt="%s*%s=s*s"; //String str=i+"*"+j+"="+(i*j); 在Java中,%d,%s表示的意思是佔位符。%d是一個整型佔位符,%s也是一個佔位符,標識一個字串型的資料 %"表示進行格式化輸出,"%"之後的內容為格式的定義:

Java細節——try/catch/finally/return不得不說的祕密

閱讀2分鐘,掌握一個Java小細節,你值得擁有! java面試經常能看到這道題目: try {} 裡有一個return語句,那麼緊跟在這個try後的finally {}裡的程式碼會不會被執行?什麼時候被執行?在return前還是後? t

Java 的8種基本型別和3種引用型別

1、計算機的記憶體單位       計算機中的資料都是以 0 和 1 來表示的,其中一個 0 或者一個 1 稱之為一位 (bit)。       8位稱為一個位元組 (Byte),兩個位元組稱為一個字 (Word) ,四個位元組稱為雙字 (Dword)。      1Byt

Java包裝類與基本型別進行比較的坑

今天使用Java的包裝類和基本型別做比較的時候發現了包裝本身存在的坑,參考的JDK版本是1.8.0_121,下面是例子程式碼: Short packShort=1; short baseShort=1; Integer packInt=1; int baseI

java中八種基本型別所佔位元組數

這是8中基本型別的記憶體中佔用位元組數(取值範圍是2的(位元組數X8-1)次方) 1.整型 型別 儲存需求 bit數 取值範圍 byte 1位元組

為什麼java中有了基本型別為什麼還要有包裝型別?

為什麼存在這兩種型別呢? 我們都知道在Java語言中,new一個物件儲存在堆裡,我們通過棧中的引用來使用這些物件;但是對於經常用到的一系列型別如int,如果我們用new將其儲存在堆裡就不是很有效——特別是簡單的小的變數。所以就出現了基本型別,同C++一樣,Java採用了相似

mybatis中傳入基本型別引數,傳入多個基本資料型別

mybatis3.2.6+spring4.0.2 關於傳入基本引數型別 以及多個基本型別引數的問題最近再練習框架,找到了一點心得分享出來,不對之處歡迎提出共勉1 引數型別string 一個引數方法:User getUserByName(String username);map

Java 的八種基本型別

開發十年,就只剩下這套架構體系了! >>>   

java中,方法引數基本型別和引用型別的區別

方法引數是基本型別時,傳遞的是值。 方法引數是引用型別時,傳遞的是記憶體地址值 當引數是基本型別時,在呼叫方法時將值傳遞到方法中,執行方法,執行結束方法退出,對原本main中定義的變數沒有任何操作(方法中沒有return)。即:此時只跟棧有關係,方法執行完之後(方法中沒有return),會彈棧。

java 使用省略號 代替多個相同型別引數 過載方法 Varargs

發現很多牛人寫出來的工具類,都有 xxx(String... s){} 這樣的方法,簡單學了一下,下面是測試的程式碼,最簡單的例子: public class TestVarargs { public static void s(int[] vs) { System.out.p

java引數傳遞?基本型別:引用型別

                              java引數傳遞?基本型別:引用型別 java通過引數傳遞不能改變對應基本型別的值,通

JAVA基本資料型別、引用資料型別-引數傳遞詳解

1:基本型別的引數傳值 對於基本資料型別,修改這個值並不會影響作為引數傳進來的那個變數,因為你修改的是方法的區域性變數,是一個副本。實參的精度級別應等於或低於形參的精度級別,否則報錯。 class JB{ void f(int x, int y){ x=x+1;

Java 之路 (十五) -- 泛型上(泛型類、泛型方法、有界型別引數、泛型與繼承、型別推斷)

Thinking in Java 中關於泛型的講解篇幅實在過長,前後嘗試閱讀這一章,但總是覺得找不到要點,很迷。於是放棄 Thinking in Java 泛型一章的閱讀,轉而官方教程,本章可以算作官方教程的中文版。 1.為什麼使用泛型 簡單來說