java_关于数组

数组:
1.概念:一组相同类型的数据的组合
数组也是一种引用类型,

2.名称:数组名称不是固定的,与存放的数据类型有关
如:存放一组int类型的数据 int[]
String String[]
Scanner Scanner[]

3.元素的概念:数组中的每个数据都是数组的元素

4.数组的声明和初始化(第一次赋值):
-(1)静态初始化:
元素类型[] 变量名 = {元素1,元素2….};
-(2)动态初始化:
–规定数组长度
元素类型[] 变量名 = new 元素类型[元素个数];
只规定个数的写法时,有相应类型的默认值
整数类型时: 有length个0
浮点数类型: 有length个0.0
字符类型: 有length个’\u0000’
(表示0对应的字符,u指Unicode字符集)
布尔类型: 有length个false
引用类型: 有length个null
–不规定数组长度
元素类型[] 变量名 = new 元素类型[]{元素1,元素2…};

5.数组的长度(数组元素的个数):变量名.length

6.数组的下标(index):
index = [0,变量名.length-1]

7.数组元素的访问(查看):
变量名[index];
元素的遍历,(从头到尾,依次查看):
(1)

    for(int i=0;i<变量名.length;i++){
        System.out.println(变量名[i]);
    }

(2)

System.out.println(Arrays.toString(变量名));

8.数组元素的覆盖(赋值,替换):
语法格式:变量名[index] = value;

        /*定义一个长度为5的int数组arr1,
         分别存储1,3,5,7,1
        */
        int[] arr1 = new int[5];
        arr1[0] = 1;
        arr1[1] = 3;
        arr1[2] = 5;
        arr1[3] = 7;
        arr1[4] = 1;
        /*for循环遍历*/
        for(int i=0;i<arr1.length;i++){
            System.out.println(arr1[i]);
        }

9.数组间的赋值
就是变量间的赋值
数组间的变量赋值:通过一个变量对数组的元素进行修改
与之相关的元素也会发生变化
如:int[] a = {1,2,3};
int[] b = a;
b[0] = 20;——a[0]也会变成20

/**
数组间的赋值
*/
import java.util.Arrays;
public class ArrayDemo04{
    public static void main(String[] args){
        int[] arr1 = {1,3,5,7,100};
        int[] arr2 = arr1;
        System.out.println(Arrays.toString(arr2));
        /*将arr2的第一个元素改为1000*/
        arr2[0] = 1000;
        System.out.println(Arrays.toString(arr2));
        System.out.println(Arrays.toString(arr1));
        /*
         数组间的变量赋值:通过一个变量对数组的元素进行修改
         与之相关的元素也会发生变化
         如:int[] a = {1,2,3};
         int[] b = a;
         b[0] = 20;------a[0]也会变成20
        */
        /*基本数据类型变量间的赋值*/
        int a = 5;
        int b = a;
        b = 10;
        System.out.println(a);//还是5
    }
}

10.ArrayIndexOutOfBoundsException:
数组下标越界异常。
当下标小于<0或者>length-1时,就会报异常

11.引用类型之Arrays
是数组的工具类,此类提供了很多对数组操作的方法
如:
Arrays.toSring(数组名);将数组的元素一一拼接成字符串
[元素1,元素2,…]

/**
 使用步骤:
 1导包
 2调用
*/
import java.util.Arrays;
public class ArrayDemo05{
    public static void main(String[] args){
        int[] scores = {1,2,3,10,100};
        System.out.println(Arrays.toString(scores));
        //创建5个长度的布尔数组
        boolean[] fs = new boolean[5];
        System.out.println(Arrays.toString(fs));
        //查看fs数组的第六个元素
        //System.out.println(fs[5]);
        /*数组下标越界异常,编译检查不出,运行时才会出现,造成程序中断结束*/
    }
}

12.数组的复制
数组的特点:一经创建,长度不可变

---系统复制法:System.arrayCopy(src,start1,des,start2,length)
src--原数组
start1--原数组复制开始位置的下标
des--目标数组
start2--目标数组复制开始位置的下标
length--复制长度
import java.util.Arrays;
public class ArrayDemo06{
    public static void main(String[] args){
        int[] num = {99,100,98,99,100};
        /*创建一个新数组num1,存入和num一样的元素*/
        int[] num1 = new int[num.length];
        /*系统复制法*/
        System.arraycopy(num,0,num1,0,num.length);
        System.out.println(Arrays.toString(num1));
        /*创建一个数组num2存储元素1000 99 100 98 99 100*/
        int[] num2 = new int[num.length+1];
        num2[0] = 1000;
        System.arraycopy(num,0,num2,1,num.length);
        System.out.println(Arrays.toString(num2));
    }
}

—工具类提供的方法:

元素类型[] 变量名 = Arrays.copyOf(src,newLength);
功能解释:从原数组的0下标元素,复制到长度为
newlength的新数组中,存放元素的开始位置也是0下标
/**
 有扩容或缩容的效果
*/
import java.util.Arrays;
public class ArrayDemo07{
    public static void main(String[] args){
        int[] num = {1,2,3,4,5};
        int[] num1 = Arrays.copyOf(num,num.length);
        System.out.println(Arrays.toString(num1));
        /*创建一个int的数组num2,长度为10,存储num1前5个元素,为num1的内容*/
        int[] num2 = Arrays.copyOf(num,10);
        System.out.println(Arrays.toString(num2));
        /*创建一个int的数组num3,长度为4,存储num1前4个元素,为num1的内容*/
        int[] num3 = Arrays.copyOf(num,4);
        System.out.println(Arrays.toString(num3));
    }
}

猜你喜欢

转载自blog.csdn.net/yc_hen/article/details/81230507