Java学习笔记(五)--二维数组 冒泡排序 选择排序 Arrays数组工具类

二维数组

1.二维数组:一个元素为一维数组的数组。
2.动态初始化方式一(指定有多少个长度相同的一维数组):

数据类型[][] 变量名=new 数据类型[m][n];

m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数

需求:请定义一个二维数组,二维数组有三个一维数组,每个一维数组有两个元素。
1.打印二维数组名称
2.打印每一个一维数组
3.不给元素赋值打印元素
4.赋值后打印元素

    //定义一个二维数组,二维数组有三个一维数组,每个一维数组有两个元素
    int[][] arr=new int[3][2];
    //打印二维数组名称
    System.out.println(arr); //[[I@7629b854
    //打印每一个一维数组
    System.out.println(arr[0]); //[I@2d04cf67
    System.out.println(arr[1]); //[I@16cc8a48
    System.out.println(arr[2]); //[I@4e8a88a9
    //不给元素赋值打印元素
    System.out.println(arr[0][1]); //0
    System.out.println(arr[1][1]); //0
    System.out.println(arr[2][1]); //0
    //赋值后打印元素
    arr[0][1]=10; 
    arr[1][1]=20;
    arr[2][1]=30;
    System.out.println(arr[0][1]); //10
    System.out.println(arr[1][1]); //20
    System.out.println(arr[2][1]); //30

二维数组内存图:
二维数组内存图

动态初始化方式二(指定二维数组中有多少个一维数组,每个一位数组的长度不固定):

数据类型[][] 变量名=new 数据类型[m][];

m的数据必须给,后面的数据可以不给

给二维数组的一维数组元素赋值时只能使用下面的方式:

arr[0]=new int[2];
arr[0][0]=1;
arr[0][1]=2;

不能用下面的方式:

arr[0]={1,2};
arr[1]={2,3,4};
arr[2]={4};  **这种方式是错误的**

3.二维数组的静态初始化:

数据类型[][] 变量名=new 数据类型[][]{{元素…},{元素…},{元素…}};

简化格式:

数据类型[][] 变量名={{元素…}{元素…}{元素…}};

需求:定义一个里面有3个长度一样的一维数组的二维数组(使用静态初始化)

int[][] arr={{1,2,}{3,4},{5,5}}; //new int[3][2];
int[][] arr={{1,2},{3,4,5},{5,6}}; //new int[3][];

需求:定义一个里面有3个长度不一样的一维数组的二维数组,并遍历.

int[][] arr={{23},{1,4,5},{6,7,8}};
for(int i=0;i<arr.length;i++){
    for(int j=0;j<arr[i].length;j++){
        System.out.print(arr[i][j]);
    }
    System.out.println();
}

形式参数

如果形式参数是基本类型:形式参数的改变,不影响实际参数。
如果实际参数是引用类型:形式参数的改变,直接影响实际参数。


冒泡排序

1.基本概念:相邻两个元素进行比较,小的放前面,大的放后面。
第一次比较结束,最大值在最大索引处;
第二次比较结束,次大值在次大索引处;
……
2.代码实现:

for(int i=0;i<arr.length-1;i++){
    for(int j=0;j<arr.length-1-i;j++){
        if(arr[j]>arr[j+1]){
            int temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=arr[j];
        }
    }
    printArr(arr); //打印数组的方法
}

选择排序

1.基本概念:从0索引开始,依次和后面的元素进行比较。
第一次比较结束,最小值出现在最小索引处;
第二次比较结束,次小值出现在次小索引处;
……
2.代码实现:

for(int i=0;i<arr.length-1;i++){
    for(int j=i+1;j<arr.length;j++){
        if(arr[i]>arr[j]){
            int temp=arr[j];
            arr[j]=arr[i];
            arr[i]=temp;
        }
    }
    printArr(arr);
}

Arrays数组工具类

成员方法:
public static String toString(int[] a):把数组转换成字符串。
public static void sort(int[] a):对数组进行排序(有重载)。
需求:把字符串中的字符进行排序。
* 举例:”dacgebf”
* 结果:”abcdefg”

public static void main(String[] args) {
        //使用冒泡排序
        String s = "dacgebf";
        //转换成字符数组
        char[] chs = s.toCharArray();
        /*//使用冒泡排序对字符根据ascii码表进行排序
        for (int i = 0; i < chs.length-1; i++) {
            for (int j = 0; j < chs.length-1-i; j++) {
                if (chs[j]>chs[j+1]) {
                    char temp = chs[j];
                    chs[j] = chs[j+1];
                    chs[j+1] = temp;
                }
            }
        }*/

        //使用Arrays里面的sort()方法给字符数组进行排序
        Arrays.sort(chs);
        //打印数组
        System.out.println(Arrays.toString(chs));

    }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值