public static void main(String[] args) {
String str="hello"; Point p=new Point(1,2); Point[] arr2 = {new Point(1,2),new Point(3,4),new Point(5,6),p}; say(p,arr2,str); System.out.println(str); System.out.println("p:"+p);//6,6 System.out.println("arr2:"+Arrays.toString(arr2));// } public static void say(Point p, Point[] arr2,String str){ str = "world"; p.setX(4); p = arr2[2]; p.setX(6); arr2 = Arrays.copyOf(arr2, arr2.length-1); arr2[2].setX(8); arr2 = new Point[]{new Point(2,2),p}; arr2[arr2.length-1].setX(12); } }
例如下图,静态方法中p.setX(4);将p的x改为四就赋值成功,但是p = arr2[2]和p.setX(6);就没有赋值给p,所以这种赋值操作什么时候成功,什么时候不成功,什么时候截至,原因是什么?另外str的值为什么也没改变?
2.数组缩容以后,arr2[2].setX(8);将数组中的第三个元素x改为8,也就是最后一个,之后数组重新new了一个对象,又传了一个p,这样数组里应该有五个元素了,但是输出结果只有四个,之后将数组的最后一个元素的x改为12,但是输出结果只有四个元素,而且值还是4,2;第三个元素的x值为什么是12?