Java中“指针”的解释以及对“引用”的理解
Java中“指针”的解释以及对“引用”的理解
初学Java面对对象编程,对于一些概念还真的有点难以理解,主要是因为不由自主的联系到以前学过的C语言知识,时不时的影响着自己对Java语言的认识,如今自己对于Java的一些概念解释和理解记录下来,以便于以后回顾:
一、引用:
在Java语言的教材中关于创建对象格式是这样规定的:
类名 引用变量 = new 类名();
对于这句话的解释是:创建一个对象,将对象的地址赋值给引用变量,此时变量就持有了对象的引用;而此时我们就可以通过引用变量来访问对象中的所有成员。需要注意的是:引用变量存放的位置是栈内存,对象存放的位置是堆内存;
举一个不是太恰当的例子:就像在电脑上下载了一个软件,把软件安装到了某一个硬盘下的某一个文件夹中,为了能够方便的打开这个软件,都会在桌面上创建一个快捷方式,若要打开软件,直接在桌面上双击软件快捷方式即可,而不是每一次使用的时候都到安装软件的文件夹下找 .exe 文件打开它,显然这种情况就相当于Java中的“引用”。快捷方式和 .exe文件的位置是不一样的,通过快捷方式打开软件。
说到引用了,再提一下C、C++语言中的引用概念:
例如 : &b=a;此时变量b就持有了对变量a的引用,但是a,b变量的地址是相同的,这不同于Java语言中对象的引用。
我认为:不管是对于Java还是C、C++,可以把“引用”理解成“别名”,只是他们的引用变量在各自的语言中存储地址有些偏差罢了。
二、指针:
自从学了C,C++语言之后,再学Java语言发现一个问题:Java中也是含指针的。(我不要你觉得,我要我觉得)
看一个例子: Person p= new Person();
实例化对象Person类;把对象的地址赋值给了变量p,此时变量p指向了对象,那么这不就是C、C++中的指针吗,和C++、C里面的指针定义很像,没毛病。所以呢,如果把p变量理解成指针变量,我认为也是可以的。
总的来说吧,我认为每个语言有每个语言的特色,不应该拿看待C、C++语言的眼光来过度看待Java,如果要是先学的Java语言,再学习C++语言,那会不会就把C++语言中的“指针”就给理解成Java中的“引用”了呢!
最新文章
- hibernate配置文件hibernate.cfg.xml的详细解释
- 中文字号VS英文字号(磅)VS像素值
- Java实现emf图片自己留转png(jpg)图片字节流
- 使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)
- docker warning ipv4 forwarding is disabled. networking will not work
- phpdesigner 的配置
- python flask应用部署
- 转:CentOS设置时区
- UltraEdit常用配置&;搭建Java/C开发环境
- python中的类简单讲解
- 更新证书错误Code Sign error: Provisioning profile ‘XXXX'can't be found
- kafka rebalance 部分分区没有owner
- js 获取页面高度和宽度(兼容 ie firefox chrome),获取鼠标点击位置
- Spark里边:Worker源代码分析和架构
- iOS开发——应用图标上显示消息数量
- java中static关键字的作用
- hdu--1104--Remainder(简单的bfs)
- 卷积神经网络经验-CS231n笔记
- js 匹配2个字符串相似度
- Visual Studio2015安装过程以及单元测试
热门文章
- Cron表达式(七子表达式)
- NC235250 牛可乐的翻转游戏
- 练习-用if语句替换三元运算符和选择结构-标准的switch语句
- datax开启hana支持以及dolphinscheduler开启datax任务
- Note -「狄利克雷前缀和」
- 云表平台VS永中office,谁更胜一筹?
- 使用Three.js实现炫酷的赛博朋克风格3D数字地球大屏 🌐
- Sharding-jdbc 5.1.2案例
- 应用集成-在Hexo、Hugo博客框架中使用Gitalk基于Github上仓库项目的issue无后端服务评论系统实践
- Java SE 12 新增特性