Java中数组赋值为何导致原数组被修改?
发布时间 - 2026-01-13 00:00:00 点击率:次java中数组是引用类型,变量赋值仅复制引用而非创建新数组,因此对副本的修改会直接影响原始数组。
在Java中,int[]看似“基本类型数组”,
实则是一个对象引用类型。这意味着声明 int[] arr = {1, 2, 3, 4}; 时,arr 并不直接存储数组元素本身,而是保存一个指向堆内存中该数组对象的引用(reference)。
当执行 int[] y = arr; 时,Java 并未创建新数组,而是将 arr 中存储的引用值(即内存地址)复制给了 y。此时 arr 和 y 指向同一块堆内存中的同一个数组对象:
int[] arr = {1, 2, 3, 4}; // arr → [1,2,3,4](堆中)
int[] y = arr; // y → 同一地址,共享同一数组
y[0] = 15; // 修改堆中第0个元素 → arr[0] 也变为15
System.out.println(Arrays.toString(arr)); // 输出: [15, 2, 3, 4]✅ 这正是输出为 [15, 2, 3, 4] 的根本原因:你从未显式修改 arr,但通过 y 修改了它所引用的同一对象。
⚠️ 注意事项:
- 此行为与 int x = 5; int y = x; y = 10;(基本类型赋值)完全不同——后者 x 不受影响,因为 int 是值传递。
- 所有数组(无论 int[]、String[] 还是自定义类数组)均遵循此引用语义。
- == 比较两个数组变量时,判断的是引用是否相同(即是否指向同一对象),而非内容是否相等。
? 若需真正独立的副本(深拷贝语义),应显式复制数组,例如:
int[] y = Arrays.copyOf(arr, arr.length); // 创建新数组,内容相同但独立 // 或 int[] y = arr.clone(); // 返回新数组对象(推荐用于一维基本类型数组) // 或(Java 8+) int[] y = Arrays.stream(arr).toArray();
此时修改 y[0] 将不再影响 arr,因为二者已指向不同内存区域。
总结:理解“数组是对象,赋值即传引用”是避免意外共享状态的关键。在需要隔离数据时,务必主动复制,而非依赖简单赋值。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速搭建高效简练网站?
简历在线制作网站免费版,如何创建个人简历?
历史网站制作软件,华为如何找回被删除的网站?
如何快速搭建支持数据库操作的智能建站平台?
python中快速进行多个字符替换的方法小结
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
创业网站制作流程,创业网站可靠吗?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
Laravel如何为API生成Swagger或OpenAPI文档
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何快速搭建安全的FTP站点?
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何选择可靠的免备案建站服务器?
用yum安装MySQLdb模块的步骤方法
Bootstrap CSS布局之列表
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
网站制作价目表怎么做,珍爱网婚介费用多少?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel模型事件有哪些_Laravel Model Event生命周期详解
佛山企业网站制作公司有哪些,沟通100网上服务官网?
微信小程序 五星评分(包括半颗星评分)实例代码
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何确保西部建站助手FTP传输的安全性?
黑客如何通过漏洞一步步攻陷网站服务器?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Java垃圾回收器的方法和原理总结
Laravel如何使用Service Container和依赖注入?(代码示例)
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
linux写shell需要注意的问题(必看)
如何在建站之星绑定自定义域名?
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel如何处理表单验证?(Requests代码示例)
在线制作视频的网站有哪些,电脑如何制作视频短片?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】

