学习过程中遇到一个特性,java数组在其他函数中赋值,可以直接改变数组的值,但是如果使用new String[]
的方式就不行
public class code
{
public static void main(String[] args)
{
String[] name = new String[4];
add(name);
out(name);
}
public static void add(String[] a)
{
a[0] = "a";
a[1] = "b";
a[2] = "c";
a[3] = "d";
}
public static void out(String[] a)
{
for (int i = 0; i < a.length; i++)
{
System.out.println(a[i]);
}
}
}
结果是abcd
public class code
{
public static void main(String[] args)
{
String[] name = new String[4];
add(name);
out(name);
}
public static void add(String[] a)
{
a = new String[] {"a","b","c","d"};
}
public static void out(String[] a)
{
for (int i = 0; i < a.length; i++)
{
System.out.println(a[i]);
}
}
}
结果是 4个null
调用函数时,参数如果是引用类型,传到函数内的是内存地址,如果使用对应下标的方式赋值,可以直接修改掉原堆内存的值,但是如果用new String[]
方式定义数组,那么会开辟一块新的内存存储这个数组,变量存储的内存地址就会修改成新的数组的内存地址,打印的结果就是4个null
。
最后一次更新于2019-05-09 13:36
0 条评论