Solo  当前访客:0 开始使用

重新出发000004-阅读文章"Java中的数组"。

2018-06-04 10:10:58 imadiaos
0  评论    0  浏览
package review.base.Java那些事儿;

public class 四_Java中的数组 {
    public static void main(String[] args){
        TestArrays ta = new TestArrays();
        ta.testObjectArrays();

        ta.thinking();
    }
}

class TestArrays{

    public void testObjectArrays(){
        // 第一种写法,直接{}
		char[] charArr1 = {'a','b','c'};
        // 第二种写法,实例化数组并直接赋值
		char[] charArr2 = new char[]{'J','a','v','a'};
        // 第三种,先实例化,以后再赋值。
		char[] charArr3 = new char[3];
        charArr3[0] = '1';
        charArr3[1] = '2';
        charArr3[2] = '3';

        /**
		 * 参考文章地址:https://zhuanlan.zhihu.com/p/27584309 
		 * 
		 * 经过反编译代码,确实和文章中提到的情况一样,得到的源码不一样。
		 * 
		 *     char[] arrayOfChar1 = { 'a', 'b', 'c' }; 
		 *
		 *     char[] arrayOfChar2 = { 'J', 'a', 'v', 'a' };
		 *
		 *     char[] arrayOfChar3 = new char[3]; 
		 *     arrayOfChar3[0] = '1'; 
		 *     arrayOfChar3[1] = '2';
		 *     arrayOfChar3[2] = '3'; */
		System.out.println(charArr1);
        System.out.println(charArr2);
        System.out.println(charArr3);

    }

    /**
	 * 思考,为什么改了charArr,而输出charArr2也会改变呢。 
	 */  
	 public void thinking(){
        char[] charArr = {'a','b','c'};         // charArr的引用指向了数组对象(假设为@100)
		char[] charArr2 = charArr;              // charArr和charArr2 同时指向了 @100
		charArr[1] = 'x';                       // 改变数组对象的值,不会引发指向的改变。只是改变了@100。 所以此时同样指向@100的charArr2看起来也变了
		System.out.println(charArr2);

        // 另一种情况
		char[] x = {'1','2','3'};
        char[] a = {'a','b','c'};
        char[] b = a;
        a = x;
        System.out.println(b);
        // 有点牵强,但是可以认为a的引用变了不会影响到b的引用。
	}
}
,
TOP