5

プリミティブ データ型はオブジェクトではないため、Java は純粋なオブジェクト指向ではないと言っていますが、以下のコードでは、オブジェクトがどのようにプリミティブ データ型を保持しているのでしょうか。

public class Test{

    public Object meth(Object obj){
        System.out.println(obj instanceof Object);//It prints true
        System.out.println("Value = "+obj);//It prints "Value = 1"
        return obj;
    }


    public static void main(String[] args) {
        int a = 1;
        System.out.println(new Test().meth(a));
    }
}
4

12 に答える 12

8

これはオートボクシングと呼ばれます。基本的に、Java コンパイラは、プリミティブ データ型をオブジェクトにする必要があるコンテキストで使用するときに、プリミティブ データ型をオブジェクトに変換します。

于 2013-03-18T05:20:48.720 に答える
4

Java には 8 つのプリミティブ型があるため、純粋なオブジェクト指向言語ではありません。しかし、プリミティブ型は Java をより効率的にします。

于 2013-03-18T05:23:37.887 に答える
2

Java のすべてのものがオブジェクトとして扱われるため、Java は純粋にオブジェクト指向です。ただし、Java は純粋なオブジェクト指向ではありません。これは、OOP の哲学に違反するプリミティブ データ型をサポートしているためです。

于 2013-03-18T06:20:43.200 に答える
2

プリミティブ型は (Java 用語で) 目的の型に自動的にボックス化されるためです。たとえば、int は整数オブジェクトにラップされます。

于 2013-03-18T05:21:28.590 に答える
2

はい、そうです... Javaは純粋なオブジェクト指向ではありません.int、byte、longなどのプリミティブデータ型をサポートしているため、オブジェクトではありません...

上記の概念はautoboxingと呼ばれます。

オートボクシング:オートボクシングは、Java コンパイラがプリミティブ型とそれに対応するオブジェクト ラッパー クラスの間で行う自動変換です。

ソース: http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

于 2013-03-18T05:23:53.067 に答える
0

Java は純粋にオブジェクト指向プログラミング言語ではない プログラミング言語を満足させるのはオブジェクト指向であり、Oops の概念を満足させる これらは事です。Java は int ,float のようなプリミティブ データ型をサポートしているため、オブジェクト指向ではないと言う人もいますが、Wrapper クラス INTGER ,FLOAT に基づいていますが、Java は static キーワードをサポートしているため、oops に従わないため、Java は純粋なオブジェクト指向言語ではありません。

于 2015-06-08T12:50:19.477 に答える
0

あなたのコンテキストでは、非プリミティブ値を Object 引数に渡すだけなので、 自動ボクシングと呼ばれ、オブジェクト型に自動的に変換されます。

于 2014-01-08T15:27:56.347 に答える