java数组

数组

数组的基本概念

数组:相同类型的元素的集合(一个数组中可以存储多个值)

特点:数组内部可以划分为多个空间,且这些空间是连续的,一旦空间数量确定就不能更改

数组是一个非常重要的数据结构

java中的数组是引用类型,属于对象(与基本类型有区别)

数组中可以存储基本类型,也可以存储引用类型,取决于声明数组时,可以存储的数据类型

数组的创建

数组创建的三种方式

(1)声明数组的同时,根据指定长度分配内存空间,但数组中元素都为默认的初始化值

/*
               数组声明语法:
                    数组类型   名称[]
                    数据类型   [] 名称;  常用
         */
//int a,d[];//a只是一个int整数,d表示数组
//int [] b,c;//b,c都表示数组
 /*
            创建数组1
 */
        int[] a=new int[5];//数组创建 必须指定长度
        //System.out.println (a);//[I@1b6d3586 默认输出是数组在内存中的地址
        System.out.println (Arrays.toString ( a ));//Arrays.toString ( a )将数组中的元素拼接成字符串表示
        
        char[] c=new char[5];
        System.out.println (Arrays.toString ( c ) );
        
        float[] f=new float[5];
        System.out.println (Arrays.toString ( f ) );
        
        String[] s=new String[5];
        System.out.println (Arrays.toString ( s ) );
        
//        int b=10;
//        System.out.println (Integer.toHexString ( 460141958 ) );

(2)创建数组的同时,为数组的每个空间赋值,同时也确定了数组的长度

  /*
            数组创建2
  */
        int []x=new int[]{1,2,3,4,5,6,7};//直接赋值
        System.out.println (Arrays.toString ( x ) );
        

(3)隐式创建

 /*
            数组创建3
 */
        int[]y={1,2,3,4,5,6,7};
        System.out.println (Arrays.toString ( y ) );

数组元素的访问

数组在创建之初,会给每个空间分配编号(索引/下标)

通过编号可以对某个空间进行访问

索引(编号)特点:

​ 整数(int)

​ 从0开始

​ 最大的索引 数组长度-1

 int [] a=new int[5];
        System.out.println (a.length );//数组长度
          a[0]=10;
          a[1]=5;
          a[2]=3;
          a[3]=20;
          a[4]='c';
         //a[5]=30;  //此时出现了运行时异常,数组溢出
        System.out.println ( Arrays.toString ( a ) );

数组元素的遍历

int []a={1,2,3,4,5};
for (int i = 0; i <a.length ; i++) 
{
            System.out.println (a[i]);
}

增强for循环

/*
 a:需要遍历的数组
            int t:声明一个变量
             每循环一次,从数组中取出一个元素,赋给变量t,进入到循环体,重复操作,直到数组中元素遍历完成
*/
 for(int t:a)
{
            System.out.println (t );
}

数组排序

冒泡排序

每一次取出相邻的两个元素进行比较,把较大的值向后移动,

例如:

5,4,3,2,1

4 3 2 1 5

3 2 1 4 5

2 1 3 4 5

1 2 3 4 5

public static void main(String[] args) {
        int[] a ={5,4,3,2,1};
        for (int i = 0; i < a.length-1 ; i++) {//控制循环次数
            for (int j = 0; j < a.length-1-i; j++) {//相邻元素比较
                if(a[j]>a[j+1]){
                    int t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
                
            }
        }
        System.out.println ( Arrays.toString ( a ) );
    }

选择排序

假设第一个元素最大值,与之后的每一个位置上的元素进行比较,满足条件交换位置

  int []a={5,4,3,2,1};
        for (int i = 0; i <a.length-1 ; i++) {
            for (int j = i+1; j < a.length; j++) {
                if(a[i]>a[j]){
                    int t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
            }
            
        }
   System.out.println ( Arrays.toString ( a ) );

选择排序的优化(减少交换的次数)

public class Xuanze {
    public static void main(String[] args) {
        int [] a = {4,5,2,3,1};
        for (int i = 0; i < a.length-1; i++) {
            int minIndex = i;
            for (int j = i+1; j < a.length; j++) {
                if(a[minIndex]<a[j]){
                    minIndex=j;//记录最小值的位置
                }
                if(a[i]>a[j]){
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

二维数组

二维数组的概念

二维数组(多维数组):数组中的每一个元素又是一个数组。

二维数组的创建

   public static void main(String[] args) {
        
        /*
            二维数组:
              数组的数组
              二维数组中的每一个元素又是一个一维数组
              
               声明语法:
                    int[][]a;
                    int a[][];
         */
        
        //创建二维数组{{0,0,0},{0,0,0},{0,0,0}}
        //创建了一个长度为3的二维数组,二维数组里面的每一个一维数组长度是3
        int[][]a=new int[3][3];
        System.out.println ( a[1][2]);
        int [][]b=new int[][]{{101,80,70,60},{102,80,70,60},{103,80,70,60}};
        int[][]c={{101,80,70,60},{102,80,70,60},{103,80,70,60}};

        //{null,null,null}
        //{{1,2,3,4},{0,0},{0,0,0,0,0}}
        //此种情况,只创建了二维数组,里面的一维数组为null
        int[][]d=new int[3][];
        d[0]=new int[]{1,2,3,4};
        d[1]=new int[2];
        d[2]=new int[5];
        //System.out.println ( d[1][2]);
        
        int[][]x =new int[][]{{101,80,70,60},{102,80,70,60},{103,80,70,60}};
        //二维数组的遍历
        for (int i = 0; i < x.length; i++) {
            for (int j = 0; j < x[i].length; j++) {
                System.out.print(x[i][j]+" ");
            }
            System.out.println ( );
        }   
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JIANG++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值