Java中的简单变量& C ++

时间:2008-12-03 21:27:56

标签: java c++ primitive

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

“在Java中,简单的数据类型(如int和char)就像在C中一样运行。”

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

在C ++中,像Java中的原语这样的简单变量也被分配了一个内存地址,因此C ++中的这些原始类型也可以有一个指针。但是Java中的原语并没有分配像Objects这样的内存地址。

我说错了吗?

谢谢!

5 个答案:

答案 0 :(得分:7)

几乎。

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

理由是为内存管理提供安全保障。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

正确。

在java中,您无法将引用(指针)传递给基本类型。 //实际上,Java中没有指针这样的东西。

基本类型只能通过Java中的值传递。 有一种解决方法,但除非你的情况需要,否则通常不建议这样做。 您可以使用包装类。 When to use wrapper class and primitive type

仅通过引用传递对象。

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

答案 4 :(得分:-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

我不知道这是不是你的要求,但我很无聊并希望发布某事