猿问

为什么返回值类型为 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]


qq_呼吸着丶没有迩旳空气_03294320
浏览 1477回答 2
2回答

Caballarii

传入num方法的String i和String[] i1都是传入的变量的地址。对于String类型,地址内的内容不可变,只能变更地址(String类型不可变的真正含义),所以i="1111"就改变了i的地址,而main方法里的i还是原来的地址,所以String类型不改变。对于String[]数组类型,num里得到是i1的地址,地址内的内容是可变的,所以i1里的值重新赋值以后就在main方法里得到了体现。

不停地追逐

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

相关分类

Java
我要回答