java基础_引用数据类型_数组_1
什么是数组
数组就是用来存储固定大小的同类型元素。这是菜鸟教程对于数组的解释。在我看来,数组就是为了方便我们不必重复定义相同类型的变量,从而便于我们代码的实现。
    int a = 1;                     
    int b = 2;                    
    ......                        
    System.out.println(a);     
    System.out.println(b);    
    ......
    ==============================
    int []arr = new int[4];
    arr[4] = {1,2,3,4};
    for(int i = 0;i < arr.  length;i++){
        System.out.println(arr[i];)
    }
数组的实现
- 首先声明变量
    int []arr ;//int arr[] 也可以,无所谓。
    //本质上就是开辟一个空间
- 创建数组
    []arr = new int[5]; //new int[5] 指的是创建一个新的数组(本质上是个地址),其中的 5 指的是数组大小 。然后就是把新创建的数组赋值给[]arr。
也可以将声明数组与创建数组一同完成
    int []arr = new int[5];
            //或者
    int []arr = {1,2,3,4} 
数组的注意事项
- 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型,但是不能混用。
- 数组创建以后,如果没有赋值的话,有默认值。
int ,short ,byte ,long ,默认值是 0 。
float , double ,默认值是 0.0 。
char 的默认值是 \u0000 。
boolean 的默认值是 false 。
String 的默认值是 null 。- 数组属于引用类型,数组型数据是对象。
- 数组的下标是从 0 开始的。(感觉没必要但是还是说下吧)
赋值机制
- 基本数据类型赋值,这个值就是具体数值,也就是值传递(值拷贝),而且相互影响。
    int a = 1;int b = a;
    b = 2;//则此时输出 b ,则值为 2 。
- 数组在默认情况下是引用传递(地址拷贝),赋的值是地址。
    int []arr1 = {1,2,3};
    int []arr2 = arr1;//把arr1的地址赋值给arr2
    arr[0] = 10;//如果此时输出则为{10,2,3}
                //因为arr的地址与arr1相同
值传递(值拷贝)和引用传递(地址拷贝)的区别
值传递,说的是基本数据类型的赋值机制。如:int a = 1;其中的“ 1 ”可以看做具体的值(在栈中)。但数组不同,它采用的是引用传递。如:int []arr = { 1 },当中“ {1} ”可以看做一个地址,这个地址在栈中,而通过这个地址在堆中找到 数据“ 1 ”。
    int n1 = 10;
    int n2 = n1;
    n2 = 80;
    int []arr1 ={1,2,3};
    int []arr2 = arr1;
    arr[0] = 10;
效果结果:(老韩的教学截图)

数组拷贝
其实就是地址的变化。
    int []arr1 = {10,20,30};
    int []arr2 = new int[arr1.length];//创建相同大小的数组
    for(int i = 0;i < arr1.length;i++){//遍历,把arr1的值全部拷贝给arr2.其中arr[i]是具体的值并不是地址,因此并无影响
        arr2[i] = arr1[i];
    }
    //更换地址这一段代码可有可无
    arr2 = arr1;
    //把arr1的地址给arr2,那么arr2的地址所代表的空间就被销毁了,比渣男还狠,玩完不仅甩了人家,还把它干掉。
    for(int i = 0;i < arr2.length;i++){
        System.out.println(arr2[i]);//输出
    }
百金买骏马,千金买美人
我寻思下辈子当个小狗也挺好的,可以随便撒谎,嘿嘿...
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号