为了账号安全,请及时绑定邮箱和手机立即绑定

为什么返回值类型为 void时,方法里的String类型的值没有输出来,而数组的值却输出来了?

为什么返回值类型为 void时,方法里的String类型的值没有输出来,而数组的值却输出来了?

import java.util.Arrays; public class King22 { public static void main(String args[]) { String i="111"; String[] i1={"bbb","aaa"}; num(i,i1); System.out.println(i); System.out.println(Arrays.toString(i1)); } public static void num(String i,String[] i1){ i="1111"; i1[0]="22220"; i1[1]="23633"; } }结果为:111[22220, 23633]
查看完整描述

2 回答

已采纳
?
Caballarii

TA贡献1123条经验 获得超629个赞

传入num方法的String i和String[] i1都是传入的变量的地址。

对于String类型,地址内的内容不可变,只能变更地址(String类型不可变的真正含义),所以i="1111"就改变了i的地址,而main方法里的i还是原来的地址,所以String类型不改变。

对于String[]数组类型,num里得到是i1的地址,地址内的内容是可变的,所以i1里的值重新赋值以后就在main方法里得到了体现。

查看完整回答
1 反对 回复 2016-06-01
?
不停地追逐

TA贡献10条经验 获得超4个赞

楼上的说的很正确,就是这个原因,num方法里面改变的是i的地址信息和数组所对应的地址里面的值,所以你在main方法里输出的时候显示的是i在main里的地址所对应的值,和已改变内容的数组的值

查看完整回答
1 反对 回复 2016-06-03
  • 2 回答
  • 1 关注
  • 1476 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信