Java基础知识
关于final
非final的成员变量在堆中,final类型的变量存放在方法区的常量池中。
常量池:通常 指的是运行时常量池,它是方法区的一部分,一个jvm实例只有一个运行常量池,==各个线程之间共享运行常量池。==
hashCode()与equals()
如果两个对象equals()方法相等则它们的hashCode返回值一定要相同,如果两个对象的hashCode返回值相同,但它们的equals()方法不一定相等。
两个对象的hashCode()返回值相等不能判断这两个对象是相等的,但两个对象的hashcode()返回值不相等则可以判定两个对象一定不相等。
值传递
==Java语言的方法调用只支持值传递。==当一个对象被当做参数传递到一个方法之后,此方法可以改变这个对象的属性,并返回变化后的结果。那么这里使用的是值传递还是引用传递。
这里采用的是值传递。
在对象当做参数传递时。对象的属性会被改变,这是因为对象当做参数时,参数传入的是对对象地址的拷贝,方法中的对象与参数对象所指的是同一片内存空间。
1 | public class Test { |
1 | x:小李 |
总结
Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的。
下面再总结一下Java中方法参数的使用情况:
- 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型》
- 一个方法可以改变一个对象参数的状态。
- 一个方法不能让对象参数引用一个新的对象。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 有啥好卷的!