Java学习笔记3(数组)

数组

数组介绍

  • 数组是用来存储一组 相同数据类型 数据的数据结构
  • 数组的元素可以是简单类型的数据,也可以是引用类型的数据
  • 无论数组内容是减等类型还是引用类型,数组本身都是一种引用类型
  • 每个数组元素都有下标,下标从0开始

数组的创建

  • 数组定义方式有两种:

    数据类型[] 数组名字;
    数据类型 数组名字[];
    
  • 在数组定义中,不能指定数组的长度,而需在数组的创建阶段来指定

    int[] a;
    a=new int[3];
    String[] b=new String[5];
    
  • 赋值

    1. 通过元素下标赋值
    2. 通过for循环赋值
    for(int i=0;i<a.length;i++){
    	a[i]=i+100;
    }
    
  • 数组初始化

    1. 数组的动态初始化
    //数组的动态初始化
    public void m2(){
    	//1、声明变量
    	int[] a;
    	//2、为数组创建大小
    	a=new int[3];
    	//3、为数组元素赋值
    	a[0]=100;
    	a[1]=200;
    	a[3]=300;
    }
    
    1. 数组的静态初始化
    //数组的静态初始化:数组创建时就赋值
    public void m3(){
        int[] a={1,2,3,4,5};
        int[] b=new int[]{10,20,30};//在[]中不能指定数组的大小
    }
    
    • 通过下标可访问一维数组中的元素
    • 一维数组的长度,使用length属性
  • 打印数组元素 Array.toString

    int[] a={1,2,3,4,5};
    System.out.println(Arrays.toString(a));
    

数组作为参数和返回值

  • 一维数组作为参数
    1. 传数组的引用
    2. 创建数组直接传,本质上也是传数组的引用
    3. 传null
  • 一维数组作为返回值
    1. 返回数组的引用
    2. 直接创建一个数组返回,本质上是返回数组的引用
    3. 返回null

数组的遍历

  • 一维数组的遍历

    1. for循环遍历
    for(表达式1;表达式2;表达式3){ 循环体 }
    
    • 表达式1:声明一个变量并初始化

    • 表达式2:循环条件判断

    • 表达式3:修整变量

    1. foreach遍历
    for(数据类型 变量x : 遍历对象obj){
    		引用了x的语句
    }
    
    • 数据类型:表示的是数组中元素的类型

    • x:表示数组中的每一个元素的值

    • obj:表示的是遍历的数组对象

    (每一个foreach语句都能更改为for循环,但并不是所有的for循环都能更改为foreach语句

int[] a = {1, 2, 3, 4, 5};

//for循环遍历
for (int i = 0; i < a.length; i++) {
    System.out.println(a[i]);
}

//foreach遍历
for(int x : a ){
    System.out.println(x);
}

数组的排序

  • 使用Array.sort()对数组排序
    1. 实用于数值型数组byte,char,short,int,long,float,double
    2. 实用于String型数组(看首字母排序)

Java可变参数

  • 可变参数与数组作为方法参数时的区别

    1. 从个数来看:可变参数只能有一个,数组可以有多个

    2. 从定义位置来看:可变参数只能定义在参数列表的末尾,数组可以在任意位置

      ​ show( String s , char c , int… a )

      ​ show( int[] a , String s , char[] c )

    3. 从传参的形式来看:

      (1)可变参数可以传数组、努力了、0个参数、1到多个参数

      (2)数组可以传数组引用、数组对象、null

数组的浅拷贝和深拷贝

  • 数组浅拷贝

    在堆内存中不会新分配出空间,而是新增一个引用变量和之前的引用指向相同的堆空间

  • 数组深拷贝

    在堆内存中分配新空间,将之前的数组堆内存中的内容拷贝到新空间中

多维数组

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一堆数组,其每一个元素都是一个一维数组

  • 二维数组

    int[][] a =new int[2][5];
    int[][] b={{1,2},{3,4},{5,6},{7,8}};
    

    以上二维数组a可以看成一个两行五列的数组

    • 打印数组长度
    System.out.println(b.length);//打印整个数组b的长度
    System.out.println(b[0].length);//打印数组b中下标为0的长度,即{1,2}
    
    4
    2
    
    • 打印二维数组元素
    for (int i = 0; i <b.length ; i++) {
                for (int j = 0; j <b[i].length ; j++) {
                    System.out.print(b[i][j]+" ");
                }
    }
    

Arrays类

  • 数组的工具类java.util.Arrays
  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”)
  • 常用功能:
    • 给数组赋值:通过fill方法
    • 对数组排序:通过sort方法,按升序
    • 比较数组:通过equals方法比较数组中元素值是否相等
    • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作
int[] a = {1, 2, 3, 4, 5};
Arrays.sort(a); //数组进行排序:升序
Arrays.fill(a,0); //数组填充

冒泡排序

  • 冒泡排序
    1. 比较数组中,两个相邻的元素,如果第一个数比第二个数大,就交换他们的位置
    2. 每一次比较,都会产生出一个最大,或者最小的数字
    3. 下一轮则可以少一次排序
    4. 依次循环,直到结束
    public static int[] sort(int[] array){
        int temp=0;//临时变量

        //外层循环,判断我们这个要走多少次
        for (int i = 0; i <array.length ; i++) {
            //内层循环,比价判断两个数,如果第一个数比第二个数大,则交换位置
            for (int j = 0; j <array.length-1 ; j++) {
                if(array[j+1]>array[j]){
                    temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
        }
        return array;
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值