当前位置: 首页 > news >正文

引用vs指针

指针是[内存地址],可以乱跑、可以运算;
引用是[对象别名/安全句柄],只能指向对象,不能乱跑、不能运算。
Java只有引用,没有真正指针

1. 最本质区别

指针(C/C++)

  • 本质就是一个数字:内存地址
  • 你可以:
    p++ 往后跳 4 字节
    p-- 往前跳
    强转成任意类型
    访问非法地址 → 直接崩溃
  • 完全裸露操作内存

引用(Java)

  • 本质是对象的安全句柄(JVM 内部实现可能用地址,但你碰不到)
  • 只能做两件事
  1. 让它指向某个对象
  2. 通过它调用对象的方法 / 访问字段
  • 绝对不能做:
    ref++
    加减运算
    强转成数字
    访问任意内存地址

2. 空的含义不一样

指针空:NULL

  • 就是地址 0
  • 你依然可以写 (int*)NULL + 100,只是会炸

引用空:null

  • Java 里 null 就是 “不指向任何对象”
  • 不是地址 0,也不是有效内存
  • 你对它做任何 . 调用 → 抛 NullPointerException(空指针异常,名字坑人)

3. 能否修改 “指向目标”?

Java 引用 可以改变指向
Student a = new Student();
Student b = new Student();
a = b; // a 现在指向 b 的对象 → 引用变了
引用变量本身可以换对象,但不能改地址、不能运算。

C 指针
int *p = &x;
p++; // 地址直接+4(int大小)
不仅能换目标,还能在内存里乱跑。

4. 安全天差地别

  • 指针:威力大、危险大,越界直接段错误 / 野指针
  • 引用:JVM 托管,绝对不会让你访问非法内存
    最多报空指针、数组越界,不会让程序直接炸系统

5. 超级通俗比喻
指针 = 一张详细门牌号 + 可以乱改的地图
你可以把地址 + 10,跑到别人家、甚至荒地。
引用 = 一张只能指向房子的名片

  • 可以换房子(换对象)
  • 不能乱改号码
  • 没房子就是 null

Java 引用表面上不是地址,但底层 JVM 里,它本质就是「经过 JVM 严格包装、管制的内存地址」。
不能直接碰,但 JVM 自己就是用地址找对象的。

http://www.jsqmd.com/news/654878/

相关文章:

  • 从Prompt注入到训练数据投毒:生成式AI全链路隐私攻击图谱(2024最新ATTCK for AI v2.1)
  • R| 纵向数据可视化:用增强版云雨图(Raincloudplots)揭示时间序列变化
  • 802.11AX资源调度探秘:NDP反馈报告(NFR)机制详解
  • 2026年4月佛山顺德五金模具定制供应商深度对标指南——金属制品与五金配件采购避坑全攻略 - 精选优质企业推荐官
  • Windows虚拟机CPU跑满?别急着重启,用perf和火焰图揪出QEMU-KVM里的“电老虎”
  • 2026移民美国中介排名及行业服务参考 - 品牌排行榜
  • 甘肃万通技工学校教学方法大揭秘,专业是否靠谱一看便知 - 工业设备
  • 抖音无水印批量下载实战指南:3分钟搞定高效内容管理
  • 双硬盘用户必看!DISM++安装Win10 22H2时如何避免误删数据盘(含DiskGenius分区详解)
  • 3步掌握StreamFX:OBS视频特效插件的终极指南
  • 重磅合作|大宇云与胡润独角兽E签宝达成代理合作,共启数字化服务新征程 - 速递信息
  • Qt_笔记
  • 终极Windows更新修复方案:Reset Windows Update Tool完整指南
  • 如何彻底掌控你的数字记忆:WeChatMsg让你的聊天数据真正属于你
  • 图论——岛屿数量
  • 牛客Top200---合并区间 (Java实战:从图解到代码的完整通关)
  • 别再到处找了!2024最新银河麒麟V10全版本(飞腾/龙芯/兆芯)官方下载与安装保姆级教程
  • 2026兰州好吃的涮羊肉指南:滩羊肉店推荐-清真羊胜记铜锅涮肉・爆肚 (天水路店),好吃不踩雷 - 栗子测评
  • 打通业财壁垒,破解“两张皮”难题——融智天费用控制系统业财一体化体验 - 业财科技
  • 可扩散模型(Diffusion Models)详解:从原理到应用
  • Qt桌面应用现代化改造:用AdvancedDockingSystem打造可拖拽停靠的‘IDE级’主界面(搭配自制Ribbon菜单)
  • 2025年500米分辨率的地形粗糙度栅格数据(全球/全国)
  • django-push-notifications错误处理与调试:解决常见推送问题
  • 农历计算的技术挑战与lunar-javascript的解决方案:构建高效的传统历法系统
  • 如何理解Tomcat、Servlet、Catanalina的关系
  • 5分钟掌握OpenTwins数字孪生开源平台:从零到实战部署指南
  • 3个步骤教你掌握百度网盘秒传脚本:永久分享文件不再失效
  • 2026年炒外汇交易平台排行与推荐指南:从技术到市场口碑一览 - 速递信息
  • LDO的实战指南:从参数解析到稳定设计
  • 刚柔并济,适配多样需求——融智天费用控制系统灵活管控体验 - 业财科技