【Java入门】数组

【Java入门】数组,第1张

目录

一、数组的定义及初始化

1、数组的定义

2、数组的创建及初始化

1.数组的创建

2.数组的初始胡

二、数组的使用及内存分布

1、数组的使用

1.数组的访问

2.数组的遍历

1.for循环遍历

2.for each遍历

        *** 作

2、数组的内存分布

 三、数组相关的函数

1、将数组转变为字符串toString

2、拷贝函数1 copyOf

3、拷贝函数2 copyOfRange

4、拷贝函数3 System.arraycopy

5、拷贝函数4 clone

6、排序 sort

7、填充 fill

8、计算数组长度 length



 

一、数组的定义及初始化 1、数组的定义

数组就是存放相同元素的一个集合,比如要记录每个学生的成绩,如果一个元素一个元素的定义,需要好多个,因为成绩都是一个类型的数据,这个时候我们可以使用一个数组,很容易解决问题

2、数组的创建及初始化 1.数组的创建

类型[] 数组名={元素};

类型[] 数组名=new int[]{元素};

类型[] 数组名=new int[长度];

2.数组的初始胡

 静态初始化:

2.1中的前两个,如下

        int[] array1={1,2,3,4,5};
        int[] array2=new int[]{1,2,3,4,5};

动态初始化:

2.1中的第三个,如下:

        int[] array3=new int[5];
二、数组的使用及内存分布 1、数组的使用 1.数组的访问

          数组名[合法下标]这样就可以访问到数组里的元素,如下访问下标为0与2的元素,要注意的是数组的下标是从0开始的

public static void main(String[] args) {
        int[] array1={1,2,3,4,5};
        System.out.println(array1[0]);
        System.out.println(array1[2]);
    }

1

2.数组的遍历 1.for循环遍历

 通过循环来控制下标进而对数组每个元素进行访问

public static void main(String[] args) {
        int[] array1={1,2,3,4,5};
        for (int i = 0; i < 5; i++) {
            System.out.print(array1[i]+" ");
        }
    }

1 2 3 4 5 

2.for each遍历

这种遍历与循环不同,是没有用到下标的

public static void main(String[] args) {
        int[] array1={1,2,3,4,5};
        for(int x:array1){
            System.out.print(x+" ");
        }
    }

1 2 3 4 5

使用:for(int x:数组名) {

        *** 作

}

2、数组的内存分布

1.数组名:是一个引用变量,他里面存储了对象的地址

        int[] arr1={1,2,3,4,5};         //把arr1叫做引用变量-----简写
        System.out.println(arr1);       //输出[I@14ae5a5:这个[代表是数组类型,I代表是整数,@后面是地址的哈希值

2.数组名是个引用变量,他存储在Java虚拟栈里,而数组的每个元素是通过关键词new创建的,他存储在堆区

 三、数组相关的函数

使用以下函数前先要进行导包,在第一行加入import java.util.Arrays;

import java.util.Arrays;
1、将数组转变为字符串toString

先看代码

public static void main(String[] args) {
        int[] array1={1,2,3,4,5};
        String ret=Arrays.toString(array1);
        System.out.println(ret);
    }

[1,2,3,4,5]

使用:Arrays.toString(数组名),之后会将数组元素用逗号隔开,开头与结尾加[],转变为字符串

2、拷贝函数1 copyOf
public static void main(String[] args) {
        int[] array1={1,2,3,4,5};
        int[] array2=new int[5];
        array2=Arrays.copyOf(array1,5);

        System.out.println(Arrays.toString(array2));
    }

 将array1拷贝给array2

[1,2,3,4,5]

使用:int[] 目标数组名=Arrays.copyOf(待拷贝数组,拷贝长度);

如果长度过长有扩容的效果,如果过小就会部分拷贝

3、拷贝函数2 copyOfRange
 public static void main(String[] args) {
        int[] array1={1,2,3,4,5};
        int[] array2=new int[5];
        array2=Arrays.copyOfRange(array1,1,5);

        System.out.println(Arrays.toString(array2));
    }

这个函数实现了部分拷贝

[2,3,4,5]

使用:int[] 目标数组名=Arrays,copyOfRange(待拷贝数组名,下标1,下标2); 

从下标1拷贝到下标2

4、拷贝函数3 System.arraycopy
 public static void main(String[] args) {
        int[] array1={1,2,3,4,5};
        int[] array2=new int[5];
        System.arraycopy(array1,0,array2,0,5);

        System.out.println(Arrays.toString(array2));
    }

相较于前2个函数,这个函数比较灵活

[1,2,3,4,5]

使用:System.arraycopy(待拷贝数组名,待拷贝开始的下标,目标数组名,目标数组的接受下标,拷贝长度); 

5、拷贝函数4 clone
public static void main(String[] args) {
        int[] array1={1,2,3,4,5};
        int[] array2=new int[5];

        array2=array1.clone();
        System.out.println(Arrays.toString(array2));
    }

 这个函数拷贝比较暴力,直接拷贝过去,不需要传任何参数

[1,2,3,4,5]

使用:int[] 目标数组名=待拷贝数组名.clone(); 

6、排序 sort
public static void main(String[] args) {
        int[] array1={2,1,3,5,4};
        Arrays.sort(array1);

        System.out.println(Arrays.toString(array1));
    }

 传入数组名后直接排序

排序后:

[1,2,3,4,5] 

使用:Arrays.sort(待排序的数组名); 

7、填充 fill

1.全部填充

public static void main(String[] args) {
        int[] array1=new int[5];
        Arrays.fill(array1,60);

        System.out.println(Arrays.toString(array1));
    }

[60,60,60,60,60] 

使用:Arrays.fill(待填充数组名,填充元素);,上述代码填充60,后输出全是60

2.局部填充

public static void main(String[] args) {
        int[] array1=new int[5];
        Arrays.fill(array1,1,4,9);

        System.out.println(Arrays.toString(array1));
    }

 [0,9,9,9,0,0]

使用:Arrays.fill(待填充数组名,起始下标,终止下标(不包括),填充元素); ,以上代码给从1到4(不包括4)的下标元素填充9

8、计算数组长度 length
public static void main(String[] args) {
        int[] array1=new int[]{1,2,3,4,5};
        int n=array1.length;

        System.out.println(n);
}

 5

使用:int n=数组名.length; 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/876597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存