我在一些matrials中看到了这句话:
“在Java中,简单的数据类型(如int和char)就像在C中一样运行。”
我想知道他们在Java和Java中实际上是不同的。 C ++?
在C ++中,像Java中的原语这样的简单变量也被分配了一个内存地址,因此C ++中的这些原始类型也可以有一个指针。但是Java中的原语并没有分配像Objects这样的内存地址。
我说错了吗?
谢谢!
答案 0 :(得分:7)
几乎。
在java原语中也分配了内存,但这在内部发生,你无法获得引用。
理由是为内存管理提供安全保障。
答案 1 :(得分:0)
Java和C ++在简单类型方面存在一些差异。内存分配是不同的,因为Java隐藏了显式指针和引用的概念。您只需创建简单类型并指定一个值。另一个区别是Java为每个简单类型检查Java Simple Types使用标准化内存占用。另一方面,C ++依赖于它编译的平台。另一点(我不知道它是否有区别)是分配到简单类型是线程安全。我没有用C ++做过任何多线程编程,所以我不确定这是否是一个考虑因素。
答案 2 :(得分:0)
对于大多数基本的东西,它们的工作方式相同,但存在大量的细节差异。
答案 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
我不知道这是不是你的要求,但我很无聊并希望发布某事