我们说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));
}
}
答案 0 :(得分:8)
它被称为autoboxing。基本上,当您在需要它们作为对象的上下文中使用它们时,Java编译器会将原始数据类型转换为对象。
答案 1 :(得分:4)
由于Java中有8种原始类型,因此它不是纯粹的面向对象语言。但原始类型使Java更有效率。
答案 2 :(得分:2)
因为原始类型是自动装箱(用java术语)到目标类型。 例如,int包装在整数对象中。
答案 3 :(得分:2)
是的你是对的... Java不是纯粹的面向对象,因为它支持使用的原始数据类型,如int,byte,long ......等,它们不是对象......
以上概念称为 autoboxing 。
Autoboxing :Autoboxing是Java编译器在基元类型和相应的对象包装类之间进行的自动转换
来源:http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
答案 4 :(得分:2)
Java是纯粹面向对象的,因为Java中的每个东西都被视为一个Object。但是,Java并不是纯粹的面向对象,因为它仍然支持违反OOP原则的原始数据类型。
答案 5 :(得分:0)
ava不是纯粹的面向对象,因为它支持原始数据类型,如int,byte,long为True,但是我们在java中有类似Integer Character类的类,当隐式执行时从原语到这些类的转换称为autoboxing。这也可以明确地完成。
答案 6 :(得分:0)
Java不是纯粹的面向对象语言,原因如下。
根据OOP,一切都应该是一个对象。
答案 7 :(得分:0)
在您的上下文中,它是称为自动装箱,因为您只是将非原始值传递给Object参数,它将自动将其转换为对象类型。
答案 8 :(得分:0)
因为如果使用原语java不是纯粹的面向对象。有关详细信息,请参阅此link
答案 9 :(得分:0)
Java不是纯粹的面向对象编程语言 满足编程语言是面向对象然后它满足 哎呀概念 封装/数据隐藏 遗产 多态性 抽象化 所有预定义类型都是对象 通过向对象发送消息来执行所有操作 所有用户定义的类型都是对象。 这些都是事情。有人说java支持原始数据类型,比如int,float,所以它不是面向对象的,但它基于Wrapper类INTGER,FLOAT 事情java suppourt static keyword它不遵循oops所以java不是纯粹的面向对象语言
答案 10 :(得分:0)
是.Java不是纯粹的面向对象,因为它包含不是对象的原始数据类型。在您的方案中,您将int值传递给函数。这背后的原因是 autoboxing 。 以下提供的链接可能有助于理解自动装箱。 click here