应用于对象时,点运算符的工作

时间:2015-11-21 02:28:10

标签: java

我正在研究点运算符的工作原理,它与C ++中的*运算符相同,即它们都解决了我们解除引用的目的。当我们将dot应用于某个类或某个对象时,我们进入类/对象的堆,并且可以访问类的静态变量或方法,以及方法的实例变量。

现在我的疑问是,当我通过使用点运算符将一些方法应用于对象时,也就是说,现在我可以使用存储在我的方法中的实例变量中的数据。但是现在当我尝试更改这些实例变量的数据时,它往往会发生变化。据我所知,我不能改变像java这样的语言方法中的数据。

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:1)

  

据我所知,我无法改变像java这样的语言方法中的数据。

Java是按值传递的......但是对于引用类型(数组或类的实例),值是引用。

dot"运算符"正在对参考文献执行操作。

在Java中,你通常只是忘记了那里存在一个引用并且(在心理上)将对象和对象的引用视为同一个事实的事实。 (有一个引用可用,即使在实例方法的情况下引用当前对象的字段......它是this,并且您正在隐式使用它。)

这与C ++不同。在C ++中,对象类型和类型的引用(指针)是不同的,它们的值(对象和引用)同样是不同的。您可以创建,传递和使用对象,而无需引用它。并且编译器不会阻止您具有实际上不指向对象的引用。后者的行为未定义......

同样在C ++中,您可以创建并传递对非对象的引用。例如,您可以传递对变量的引用。你不能用Java做到这一点。