当前位置: 首页 > 知识库问答 >
问题:

他们在爪哇语中说“每件事物都是一个物体”。是真的吗?

虞唯
2023-03-14

我打字的时候

int a = 5;

a是物体吗?

谁能给我解释一下在java中每样东西都是一个对象?

共有3个答案

彭正谊
2023-03-14

不,这不是一个物体。Java不是纯粹的面向对象语言,因为原语静态。为了使原语变量成为对象,java引入了整型、布尔型等包装类。

朱兴运
2023-03-14

在java中并非如此。例如,int实际上是一个原语。在java中,一切都是一个对象,它扩展了对象。其他一切都不是。

例如,你不能像对象一样操作命名空间(java术语中的包),但是在Erlang或Clojure中你可以。

尽管java提供了自动装箱功能,可以将原语转换为对象。如果你说

Integer a = 5;

java将5放入整数引用中。如果你想阅读有关自动装箱的信息,请点击这里:自动装箱文档。java中的对象:对象

如果你正在寻找一种从技术上来说一切都是对象的语言,你可以试试Common Lisp。在Lisp中,即使是T(代表布尔真)也是一个对象。

晏德佑
2023-03-14

每个对象都是java。lang.Object(注意:java.lang.Object没有超类。)

然而,有很多东西不是物体。

  • 原语和引用
  • 字段(字段本身不是内容)
  • 局部变量和参数
  • 泛型类(在Java 8中可能会更改)
  • 方法(在Java 8中会发生变化)
  • 代码块(在Java8中会发生变化)

将代码块作为对象是Java8中最令人兴奋的特性之一。以下示例都是闭包,因此是对象。

x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println("I am a Runnable"); }

例如,这里的代码块将作为Runnable对象传递

new Thread(() => { System.out.println("I am a Runnable"); }).start();

http://mail.openjdk.java.net/pipermail/lambda-dev/2011-September/003936.html

 类似资料: