JAVA入门————Day08(数组)

数组概述:

1)数组是一种数据类型(引用类型)
2)数组是相同数据类型的元素的集合
3)在数组中元素这个概念其实就相当于基本类型的变量值
4)数组的长度一旦定义好,就不能改变了
5)数组是再内存中开辟一块连续的内存空间

数组的定义及初始化:

数组的定义及初始化形式有很多种,但是最常用的就两种,其余的样式也可以实现初始化及定义但是特别特别少有人用,反正我是目前没有遇到过那么用的,所以此次就只介绍两种常用的样式吧。
哦对了,记住!数组和变量一样必须定义且初始化,否则会编译错误。

//数组的定义及初始化:
// 第一种:
	数据类型[] 数组名 = new 数据类型[元素个数]//此种用于你知道元素个数但是不知道元素具体的值时使用,
	int类型数据,元素默认值是0	double类型数据,元素默认值是0.0
				boolean类型数据,元素默认值是false
				
//第二种:
	数据类型[] 数组名 = {
    
    元素值,元素值,元素值}//此种用于你知道每个元素具体的值时使用	

数组的访问:

//数组的访问:————访问的是数组中的元素
//通过(数组名.length)可以获取数组的长度(元素个数)
		int[] arr = new int[10];
		System.out.println(arr.length);//10
//给第二个数赋值100
		arr[1] = 100;
//通过下标/索引来访问数组中的元素
	//下标从0开始,最大到(数组长度-1)
	     arr[3.14]//编译错误,下标只能是整数类型
	     arr = {
    
    31.15,5.2};//编译错误,元素类型与数组类型不匹配,元素类型中有一个是double类型但数组确实int类型。
	     arr[3];//运行时会发生ArrayIndexOutOfBoundsException数组下标越界异常,数组元素下标的最大值是数组长度-1,举例:若一个数组有5个元素,那么最后一个元素的下标就是4,

数组的遍历/迭代:

//迭代/遍历:
	for(int i=0;i<arr.length;i++){
    
    //从0开始依次拿出数组中的每个元素的下标
		System.out.println(arr[i]);//每拿出一次下标则输出一次数组中下表对应的值
	}
	
//给数组中的每个元素赋值100
	for(int i=0;i<arr.length;i++){
    
    
		arr[i] = 100;
	}

数组的复制:

//若旧元素复制给新元素的时候两个元素的下标相同:
	int[] a = {
    
    1,58,15,99,56};
	int[] b = new int[5];
	for(int i=0;i<a.length;i++){
    
    
		b[i] = a[i]
	}
//在这里b数组的长度可以随意但是:
//--若b数组长度大于a数组长度,则末尾补默认值
//--若b数组长度小于a数组长度,则从末尾截取

//若不相同时:
        int[] a ={
    
    10,12,18,5,99};
        int[] b = new int[5];
//        方法1 arraycopy(灵活性高)
         System.arraycopy(a,1,b,0,4);
//        a:源数组名    1:源数组的起始下标  b:目标数组  0:目标数组的起始下标  4:要复制的元素个数
//        复制的元素个数不可以越界,举例:若从数组a的第2个元素开始复制,复制5个元素那么控制台就会报错,显示越界异常
//        其次目标数组和源数组的起始下标也不可以越界,举例:若目标数组b的元素有5个我却非要从第6个元素开始,那么就会控制台显示越界异常(原数组与之相同,起始位置也不可以越界)

//        方法2
		int[] a ={
    
    10,12,18,5,99};
        int[] b = Arrays.copyOf(a,6);
//        b:目标数组名
//        a:源数组名
//        6:目标数组长度(目标数组元素个数)
//  		6.1)--若目标数组长度大于源数组长度,则末尾补默认值
//  		6.2)--若目标数组长度小于源数组长度,则从末尾截取

数组的排序:

1)排序是对数组所施加的最常用的算法
2)排序算法:
2.1)最常见的排序算法:冒泡排序,快速排序,插入排序…等
2.2)若数据量小,用那种排序,系统的执行速度(效率)都不会有明显的差异
2.3)若数据量大(几十万,几百万):
当数据量大的时候,用不同的排序方式,最终的效率也是不同的,但是有一种方法一直是 最快的:Arrays.sort(数组名),此方法是java提供的数组元素升序的排序方法

数组的排序(升序)Arrays.sort(数组名):

//给数组的每一个元素赋值1-100之间的随机数
		int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
    
    //遍历数组
            arr[i] = (int) (Math.random() * 100) + 1;//给数组元素赋值1-100之间的数
            System.out.println(arr[i]);//输出每个元素
        }
//        升序
		Arrays.sort(arr);
//		控制台升序输出每个元素		
		for (int i=0; i < arr.length; i++) {
    
    //遍历数组
            System.out.println(arr[i]);//输出每个元素
        }
//		  控制台降序输出每个元素
		for(int i=arr.length-1;i>=0;i--){
    
    //从arr数组最后一个元素向arr数组第一个元素遍历
		System.out.println(arr[i]);//输出每个元素
		}	

找出数组的最大值:

假设一个元素为最大值,其次拿这个元素去和剩余的元素对比,若和它对比的元素比它大那么就将对比的内个元素值赋值给它,然后继续对比,直到比完所有元素

		int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
    
    //遍历数组
            arr[i] = (int) (Math.random() * 100) + 1;//给数组元素赋值1-100之间的数
            System.out.println(arr[i] + "\t");
        }
//        求数组元素的最大值
        int max = arr[0];//假设arr[0]为最大值
        for (int i=1;i<arr.length;i++){
    
    //遍历数组(从数组的第二个元素开始)
            if (arr[0]<arr[i]){
    
    //假设arr[i]大于arr[0]
                arr[0] = arr[i];//将较大值赋值给arr[0]
            }
        }

找出数组的最小值:

		int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
    
    //遍历数组
            arr[i] = (int) (Math.random() * 100) + 1;//给数组元素赋值1-100之间的数
            System.out.println(arr[i] + "\t");
        }
//        数组的最小值
        int big = arr[0];//假设arr[0]为最小值
        for (int i=1;i<arr.length;i++){
    
    //遍历数组(从数组的第二个元素开始)
            if (arr[0]>arr[i]){
    
    //假设arr[i]小于arr[0]
                arr[0] = arr[i];//将较小值赋值给arr[0]
            }
        }

数组的扩容:

数组的扩容:又创建了一个更大的新的数组,再将源数组数据复制进去了

		int[] arr = new int[10];//源数组
        int[] arrs = Arrays.copyOf(arr,arr.length+1);//扩容一位
/*
	arrs:新数组名
	arr:源数组名
	arr.length+1:源数组长度+1的数
*/ 
//既然能扩容那么就能缩容咯!往下看:
		int[] arr = {
    
    10,1,5,56,59,99};//源数组
		int[] arrs = Arrays.copyOf(arr,arr.length-1);//缩容一位
//缩容后将从末尾截取(选择)被抛弃的元素

后续更新声明:

后续更新的篇幅量会越来越大,而且我需要把每天上课老师讲的东西做笔记总结,然后吸收透彻后才会写博客,因此后续更新速度会较慢,望谅解。
还是老三样,觉得写的还可以的化点赞关注一下咯,若对篇章有任何意见或建议,评论提议,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_54177999/article/details/114382602
今日推荐