Java——数组

一、数组的基本概念

1.1 数组的创建及初始化

T[] 数组名 = new T[N];

T:表示数组中存放元素的类型
T[]:表示数组的类型
N:表示数组的长度

public static void main(String[] args) {
        //. 静态初始化
        int[] score = {60,81,93,17};
        int[] score3 = new int[]{30,40,50,60};
         //动态初始化
        int[] score2 = new int[10];
}
  1. 动态初始化:在创建数组时,直接指定数组中元素的个数.
  2. 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定.

1.2数组的访问方式

数组在内存中是一段连续的空间,下标都是从0开始的,数组可以通过下标访问其任意位置的元素。
在这里插入图片描述

public static void main(String[] args) {

        int[] score = {60,80,93,17};
        //下标访问
        System.out.println(score[0]);
        System.out.println(score[1]);
        //fori
        for (int i = 0; i < score.length; i++) {
            System.out.println(score[i]);
        }
        //foreach
        for (int n:score) {
            System.out.println(n);
        }
  }

注意事项
1. 数组是一段连续的内存空间,可以通过下标来快速访问数组中任意位置的元素.
2. 下标从0开始,介于[0, N)之间,N为元素个数,不能越界,否则会报出异常.

二、基本类型变量与引用类型变量的区别

基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值;
引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址.

!

public static void func() {
    
    int a = 10;
    int b = 20; 
    int[] arr = new int[]{1,2,3};
    
}

2.2认识null

null 在 Java 中表示 “空引用” , 也就是一个不指向对象的引用.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、数组的应用场景

3.1 数组排序(冒泡排序)

给定一个数组, 让数组升序 (降序) 排序.

在这里插入图片描述

算法思路 :
1. 将数组中相邻元素从前往后依次进行比较,如果前一个元素比后一个元素大,则交换,一趟下来后最大元素就 在数组的末尾 .
2. 依次从上上述过程,直到数组中所有的元素都排列好.

public static void main10(String[] args) {
        int[] arr = {9,2,5,7};
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1-i; j++) {
                if(arr[i]<arr[j]) {
                    int tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;
                }
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

3.2 二分查找

针对有序数组, 可以使用更高效的二分查找.

在这里插入图片描述
算法思路 :
先取中间位置的元素, 然后使用要查找的元素与数组中间元素进行比较:
如果相等,就返回该元素的下标 ;
如果小于,以类似方式到数组左侧查找 ;
如果大于,以类似方式到数组右侧查找.

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,0};
        int k = 7;
        int left = 0;
        int right = arr.length - 1;
        while (left <= right) {
            int mid = (left+right)/2;
            if(arr[mid] == k) {
                System.out.println(mid);
                break;
            }else if(arr[mid] < k) {
                left =  mid + 1;
            }else {
                right = mid - 1;
            }
        }
    }

结论: 如果要查询的数据较大,二分查找就非常方便,一次砍一刀.
同时也要注意:left<=right,这个经常疏忽,导致查询结果有偏差.

四、二维数组

二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组.

**4.1基本语法 **
数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

4.1访问方式

   public static void main(String[] args) {
        
        int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
        //System.out.println(arr[0][1]);
        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();
        }
    }

与君功勉:如果说学习有捷径可走,那么它就是勤奋;如果说知识就是力量,那么它就是实践。

在这里插入图片描述

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

web图解

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

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

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

打赏作者

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

抵扣说明:

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

余额充值