-1
public class Tester {
    public Tester(){
        System.out.println("Hello");
    }

    public Tester(byte b){
        System.out.println("byte");
    }

    public Tester(int i){
        System.out.println("int");
    }

    public static void main(String[] args) {
        Tester test=new Tester(12);
    }
}

印刷がintである理由を教えてください。他の整数も試しましたが、すべてintとして印刷されましたが、たとえば、1 2 3 4 5 6 7 ....これらの数値はバイトとも呼ばれますよね?では、なぜ int だけが呼び出されるのでしょうか。

4

3 に答える 3

5

デフォルトでは、バイトとしてキャストしない限り、intとして受け入れられます

バイトを取得したい場合は、次のようにします

Tester test=new Tester((byte)12);

出力バイト

于 2013-10-19T03:54:32.310 に答える
1

のデフォルトのタイプ12intなので、intコンストラクターを選択します。

byteコンストラクターを呼び出すには、明示的なキャストが必要です。

しかし、私が削除した場合 :public Tester(int i){ System.out.println("int"); }、どちらもバイトを出力せず、代わりにエラーがあります

コンストラクターを削除するintと、コンパイラーは呼び出す適切なコンストラクターを見つけることができないため、エラーになります。

于 2013-10-19T03:58:51.647 に答える