java中对象实体与对象的引用有何不同?

Python020

java中对象实体与对象的引用有何不同?,第1张

对象引用的目的地才是对象实体

在java引用对象的赋值中,实际上是对引用的赋值;而对象实体不发生变换。

特别能够说明问题的是在引用型对象用final 关键字修饰的时候,表示引用的确定而不是对象实体的不可变。

final StringBuffer s = new StringBuffer();

s.append("abc")

这样是可以的,因为s引用指向确定的StringBuffer 对象,对象实体变化是可以的。

但是如果是String的话,就不可以显式的更改了。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

对象是堆内存的一块区域,它负责存储具体的数据;

对象引用是栈内存的一块区域,它存的是对象的地址;

Java中我们无法直接操作堆内存里的对象,都是通过栈内存的对象引用来操作的。

比如 int a=3

a作为3的引用,存在于栈中,而3也存在栈中。对于java基本数据类型,对象和引用都会被保存在栈里面。

再举个例子String str=new String(“abc”);众所周知,一共创建了两个对象,str作为引用,保存在栈里面。new String(“abc”),可以看做是 “abc” 和new String(); new String()创建了一个对象,保存在堆中。“abc”创建了一个对象,保存在字符串常量池中。

你可以看看这张图,关于String类的内存分配是很有趣的,而且需要记住的是String类是final修饰的。 final修饰的方法不能被重写,final修饰的类不能被继承。

如果哪里说错了各位可以指出来一起交流,谢谢!