Java对象与Java对象引用的区别

1.什么是Java对象?
学Java的人可能听过这样一句话:万物皆对象。通俗点来讲就是:java对象就是一类事物的抽象化,然后这个对象有自己的状态,行为和标识等,再说白点就是这对象有自己的一些特征以及它可以干点啥。

2.什么是Java对象引用?
说到这个,我们就需要先说一下C语言中的指针,它可以直接操作内存,java中的对象引用是和C和C++中的指针是比较像的,但是也只是比较像而已,有人觉得java中的对象引用其实就是一个指针,但是实际上,java中的对象引用和C++中的引用在语法上更加接近,但是java中的这个对象引用和C++中的引用还是存在巨大的差别。

3.实例
在这里插入图片描述

特别注意:Java中的String一旦创建,是不可变的!!!!
例:
在这里插入图片描述
这个告诉我们需要记住一个点:如果两个引用指向同一个对象,那么不管哪个引用去改变这个对象,其结果是对象的内容都会发生改变,而且只有一个对象,但是记住了String是一个特例!!!

4.java对象的创建与C++对象创建的区别
在Java中:
在这里插入图片描述
在C++中:
在这里插入图片描述
在 Java 中,只有当你使用 new 操作符时,才会真正在内存中申请一块空间,创建一个新对象,并将该对象绑定到你所定义的变量名上。其它情况下,要么是将已有对象绑定到某个变量名上,要么就是定义的变量名是个空引用,没有绑定任何对象。

而在C++中,当你定义了一个变量 s 时,即使你没有给它赋值,也意味着你不但创建了一个新的标识符,同时还在栈中申请了对应的内存空间。因此,C++ 中定义的变量名不仅仅是个标识符,还自动关联着栈中的一块内存空间。而 C++ 中的 new 操作符表示的是在堆中申请内存,因为栈中的内存在运行时期大小是固定且有限的,因此需要动态内存分配的时候就需要用 new 来实现。

总结而言,Java 中的变量名仅仅是一个用于引用内存中实际对象的标识符,如果你没给它关联对象,它就为空引用。而 C++ 中的变量名(非指针类型),虽然也是标识符,但却始终关联着实际的内存空间,当我们看到一个变量(非指针类型)时,就知道它代表着一块实际的内存空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值