5

我在一些材料中看到了这句话:

“在 Java 中,像 int 和 char 这样的简单数据类型的操作与在 C 中一样。”

我想知道实际上它们在 Java 和 C++ 中是不同的吗?

在 C++ 中,像 Java 中的原语这样的简单变量也被分配了一个内存地址,因此 C++ 中的这些原语类型也可以有一个指针。然而,Java 中的原语没有像对象那样分配内存地址。

我对么?

谢谢!

4

5 回答 5

7

几乎。

在 java 中,原语也被分配了内存,但这发生在内部,您无法获得引用。

第三个原因是为内存管理提供安全性。

于 2008-12-03T21:31:18.573 回答
0

在简单类型方面,Java 和 C++ 之间存在一些差异。内存分配是不同的,因为 Java 隐藏了显式指针和引用的概念。您只需创建简单类型并分配一个值。另一个区别是 Java 对每个简单类型检查Java Simple Types使用标准化的内存占用。另一方面,C++ 依赖于编译它的平台。另一点(我不知道这是否有区别)是分配给简单类型是线程安全的。我没有在 C++ 中做过任何多线程编程,所以我不确定这是否是一个考虑因素。

于 2008-12-03T22:19:39.067 回答
0

正确的。

在java中,您不能将引用(指针)传递给原始类型。//事实上Java中没有指针这种东西。

在 Java 中,原始类型只能按值传递。有一种解决方法,但除非您的情况需要,否则通常不建议这样做。您可以使用包装类。何时使用包装类和原始类型

只有对象通过引用传递。

原始类型也分配在堆栈上,对象分配在堆上。

于 2012-07-08T06:33:27.293 回答
0

对于大多数基本的东西,它们的工作方式相同,但有很多细节差异。

  • Java 中没有无符号数字类型(除了 char,它在技术上但不是语义上的数字)
  • Java 的“原始类型”只能存在于堆栈上(作为局部变量)或堆上的对象内部,但不能直接存在于堆上。
  • char 类型非常不同——在 C 中,它被定义为包含一个字节(字节可能有也可能没有 8 位),而在 Java 中,它被定义为 16 位。
于 2008-12-05T01:25:32.093 回答
-1

原语存储在堆栈中并按值传递。

int x = 5;
int y = x;

y++;

// y = 6
// x = 5

对象存储在堆上并通过引用传递。

Object a = new Object();
Object b = a;

b.someAction();

// A and B point to the same object and both have had the 'someAction()' performed

我不知道这是否是你的要求,但我很无聊,想发布一些东西

于 2008-12-03T21:33:35.200 回答