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... 等,它们不是对象...

以上概念称为自动装箱

自动装箱:自动装箱是 Java 编译器在基本类型与其对应的对象包装类之间进行的自动转换

来源:http ://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

于 2013-03-18T05:23:53.067 回答
0

因为如果使用原语 java 不是纯粹面向对象的。有关更多详细信息,请点击此链接

于 2014-04-17T13:04:57.037 回答
0

ava 不是纯面向对象的,因为它支持原始数据类型,例如 int、byte、long 它的 True ,但是我们在 java 中有类似 Integer Character 类的类,隐式完成从原始到这些类的转换称为自动装箱。这也可以明确地完成。

于 2013-09-30T09:44:43.300 回答
0

由于以下原因,Java 不是纯面向对象的语言。

  1. Java 支持原始数据类型。
  2. Java支持静态,这些属于类而不是对象。
  3. java支持枚举。

根据 OOP,一切都应该是一个对象。

于 2013-10-20T10:35:42.780 回答
0

在您的上下文中,它被称为自动装箱,因为您只是将非原始值传递给 Object 参数,它会自动将其转换为对象类型。

于 2014-01-08T15:27:56.347 回答
0

Java不是纯粹的面向对象的编程语言以满足编程语言是面向对象然后它满足oops概念封装/数据隐藏继承多态抽象所有预定义的类型都是对象所有操作都是通过向对象发送消息来执行的所有用户定义的类型都是对象。这些是东西。有人说java支持原始数据类型,如int,float,所以它不是面向对象的,但即使它基于Wrapper类INTGER,FLOAT东西java支持静态关键字它不遵循oops所以java不是纯面向对象的语言

于 2015-06-08T12:50:19.477 回答
0

不,这不是因为数据类型不是类,不像 c# 中的数据类型是类。是的,包装类稍后在 java 中引入,但是有自动装箱和装箱的概念,这使情况变得复杂。

于 2015-09-19T16:46:37.793 回答
0

是的。Java 不是纯粹的面向对象的,因为它包含不是对象的原始数据类型。在您的情况下,您将 int 值传递给函数。它起作用的原因是自动装箱. 以下提供的链接可能有助于更好地理解自动装箱。 点击这里

于 2017-06-03T14:33:57.287 回答