Java C++;观点

Java C++;观点,java,c++,Java,C++,我最近读了这篇文章: 第一个答案过于简明扼要,让我无法确切理解,其他人都写了15页的文章来解释什么应该是一个简单的主题。以下规则正确吗(如果正确,则非常简单): (二)。java指针与C++指针使用->相同。 < java指针与使用C++ =指针上的指针相同。 4.)所有函数都按值传递(因此按值传递Java指针) (这忽略了内存管理的差异,比如java指针上的值是好的,而C++上的指针意味着你可能需要担心内存管理) 最让人困惑的是,我所见过的任何人都没有用清晰的英语表达这套规则/理解Java正

我最近读了这篇文章:

第一个答案过于简明扼要,让我无法确切理解,其他人都写了15页的文章来解释什么应该是一个简单的主题。以下规则正确吗(如果正确,则非常简单):

<命名为与不是原语的类型相关的事物(java谈吐中的对象引用)是C++中的指针。p> (二)。java指针与C++指针使用->相同。

< java指针与使用C++ =指针上的指针相同。

4.)所有函数都按值传递(因此按值传递Java指针)

(这忽略了内存管理的差异,比如java指针上的值是好的,而C++上的指针意味着你可能需要担心内存管理)


最让人困惑的是,我所见过的任何人都没有用清晰的英语表达这套规则/理解Java正在做什么(选择15页和图表)。第二个最让人困惑的因素是java使用的“引用”一词与C++不同。如果你想在java中做什么比较,在C++中,指针和我创建的规则是最简单的消化java行为的术语。

< P> <强>点1是正确的。< /强>

Object o = new Object();
Object o = new Object();

o.hashCode();
Dog d = new Dog();

Dog d2 = new Dog();

System.out.println(d == d2);//This will print false

d2 = d;

System.out.println(d == d2);//This will print true
变量o存储指向对象在内存中位置的指针

第2点也是正确的。

Object o = new Object();
Object o = new Object();

o.hashCode();
Dog d = new Dog();

Dog d2 = new Dog();

System.out.println(d == d2);//This will print false

d2 = d;

System.out.println(d == d2);//This will print true
这是调用存储在o中的对象的hashCode方法

第3点,再次更正。

Object o = new Object();
Object o = new Object();

o.hashCode();
Dog d = new Dog();

Dog d2 = new Dog();

System.out.println(d == d2);//This will print false

d2 = d;

System.out.println(d == d2);//This will print true
在第一个输出中,d不等于d2,因为指向对象的指针不同。在第二个输出中,d等于d2,因为它们都指向同一位置

第4点在技术上是正确的。

Object o = new Object();
Object o = new Object();

o.hashCode();
Dog d = new Dog();

Dog d2 = new Dog();

System.out.println(d == d2);//This will print false

d2 = d;

System.out.println(d == d2);//This will print true
原语是按值传递的。 A. 将对象传递给函数时,它是将指针的副本传递给对象,而不是传递给对象本身。指向对象的指针正在按值传递给函数。希望这个片段可以帮助解释它

public void example(int i, Object o) {}

public static void main(String[] args) {

    Object o = new Object();

    example(3, o);//This is passing the number 3 to the function. It also passes by vlue a pointer to where object o is stored in memory.
}

Java总是按值传递。即使在传递对象时,它也会按值传递。因此:
void示例(inti,Object o){o=null;}
,使用您的示例,
main
方法中的
o
不会为null。读这篇文章:我喜欢人们投票否决你的方式。他们的迂腐使得新的java程序员从C++中变得简单,最后一段也很混乱。在Java中传递对象到函数不像在C++中引用对象。@ C++中通过引用的java java与传递指针有很大的不同。在Java中只能传递基本值和引用。根据价值。你所有的观察都是正确的。Java没有“C++引用”这样的东西。这就是为什么不能用Java编写交换函数。