基本タイプに関するリロード

6372 ワード

基本タイプは、小さなタイプから大きなタイプに自動的に昇格します.このプロセスが重荷にかかわると、
いくつかの混同を引き起こす可能性があります.
package example;

public class Test {

    /**
     *  
     */
    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タイプリロード:f 1(char)f 2(int)f 3(int)byteタイプリロード:f 1(byte)f 2(short)f 3(int)shortタイプリロード:f 1(short)f 2(short)f 3(int)f 4(long)
 
 
結論:入力されたデータ型がメソッドで宣言されたパラメータ型より小さい場合、実際のデータは向上します.
charタイプが異なり、charパラメータのメソッドが適切に見つからないがintパラメータメソッドが存在する場合、
charはint型に直接昇格した.
 
 
逆に、入力される実際のパラメータが大きく、形式パラメータタイプが小さい場合は、強制タイプ変換(狭窄変換)により、
タイプが自動的に下がることは期待できません.そうしないと、コンパイラが間違っています.