一个java的问题,求解惑
public class Arraytest{
public static void main( String[] args)
{
String[] str1 = new String;
str1 = new String("tian");
str1 = new String("kong");
str1 = new String("nan");
String[] str2 = new String;
System.arraycopy( str1, 0, str2, 0, str1.length);
str2 = "fengyun";//这一行
System.out.println(str1);
System.out.println(str2);
}
}
刚学java, 学到了数组
这个程序我是这样理解的, 见图
那么我觉得复制了之后str1和str2应该指向同一个位子nan那里呀,
为什么改变了 str2的值,str1的值没有变呢 ,帮忙解解惑,
这样希望能看明白。
每次赋值都会生成一个一个新的对象 public static void main(String[] args) {
String[] str1 = new String;
str1 = new String("tian");
str1 = new String("kong");
str1 = new String("nan");
String[] str2 = new String;
System.arraycopy( str1, 0, str2, 0, str1.length);
str2 = "fengyun";//这一行
System.out.println(str1);
System.out.println(str2);
///////////////////////////////////////////////////////////
String[] str3 = new String;
str1 = new String("tian");
str1 = new String("kong");
str1 = new String("nan");
String[] str4 = new String;
str4 = str3;
str4 = "fengyun";
System.out.println(str3);
System.out.println(str4);
}
你比较这两段看看,这里面涉及到一个引用类型和值类型之间的操作。第一种操作,是把值分辨赋给数组二;而第二种则是将数组4指向数组3的地址,对3和4的值进行操作,实际上是对相同的数据在进行操作。 看看,学习学习 再学习学习,温故而知新 再看看,温故而知新 看看看,学习学习
页:
[1]