You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java是否有指针?针对两种矛盾说法的技术疑问求解

Java 是否存在指针?

两种说法的立足点不同,本质上都没有错:

  • 从底层实现和概念本质来看,Java存在指针
    Java中的所有引用类型变量,本质上就是JVM封装后的指针。比如你写Object obj = new Object();时,栈上存储的obj变量本身保存的就是堆内存中实际Object实例的起始地址,这个地址指向的逻辑和C/C++的指针完全一致。把obj赋值给其他变量、作为参数传递给方法时,传递的也是这个地址的值,修改引用指向的对象属性时,所有持有该引用的变量都能感知到变化,这也是指针的典型特性。
  • 从开发者可直接操作的语法层面来看,Java没有暴露原生指针
    和C/C++不同,Java没有提供任何语法允许你直接获取指针的数值、对指针做加减偏移等运算,也不允许指针指向任意内存地址,更不需要开发者手动释放指针指向的内存空间。Java语法中没有*解引用、&取地址这类操作符,也不存在int*这类原生指针的声明方式,所有的内存管理、指针越界检查都由JVM自动处理,普通开发者完全感知不到指针的存在,也不需要直接和指针打交道。

简单来说,Java把指针做了一层安全封装藏在了底层,只给开发者提供了更安全的引用操作,所以才会出现两种完全相反的说法。

内容的提问来源于stack exchange,提问作者Sky Herobrine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:36:03