前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >九、JavaSE进阶之【数组】。

九、JavaSE进阶之【数组】。

作者头像
百思不得小赵
发布2022-12-01 11:47:23
1900
发布2022-12-01 11:47:23
举报
文章被收录于专栏:小赵Java总结

目录

第一章:基本概念

1.1基本性质

  1. 数组是同一种类型数据的集合;即能够存放多个相同类型的数据的容器。
  2. Java中,数组是一种引用类型,存储在堆中,父类为Object,一旦被创建长度是不可变的,元素类型必须统一。
  1. 数组可以存储基本数据类型引用数据类型的数据
  2. 数组中如果存的是Java对象的话,实际存储的是对象的引用(内存地址)。
  3. 数组分类:一维、二维、多维……。
  4. 所有的数组对象都有length属性,用于获取长度。
  5. 数组在内存方面存储时,数组中的元素内存地址是连续的
  6. 所有数组都是以第一个元素内存地址作为整个数组内存地址
  7. 下标从0开始,最后一个元素下标为length-1.

2.1 数组的优缺点

优点:检查某个下表上元素时效率高。

为什么检查效率高?

  1. 每一个元素内存地址空间上是连续的
  2. 每个元素类型相同所占空间大小一样
  3. 知道了元素内存地址,占空间大小,下标,可以计算元素的位置。

缺点: 1.由于数组每个元素内存地址连续,随机增删改效率太低。 2.数组不能存储大数据量,因为数组空间上很难找到一块大的内存空间。

第二章:一维数组

1.1基本语法

初始化一维数组: 静态初始化:int[] arry1={1,100,200}; 动态初始化:int[] arrys=new int[5]; //初始化一个长度为5的int类型数组,每个元素值为0(默认). String[] arrys=new String[6]; //初始化一个长度为6的String类型的数组,每个元素默认值为:null

代码演示:

代码语言:javascript
复制
int[] arr = new int[3];
arr[0] = 3; //给数组编号(角标)为0的空间中存放int类型的常量值3
System.out.println(arr[1]);//输出数组编号为1空间中的值。
代码语言:javascript
复制
public class Text{
    public static void main(String[] args) {
        //初始化一个静态类型的数组
        int[] arr1={2,5,8,9,6,};
        //访问第3个元素
        System.out.println(arr1[2]);
    }
}

一维数组的遍历:

代码语言:javascript
复制
public class Text{
    public static void main(String[] args) {
        //初始化一个静态类型的数组
        int[] arr1={2,5,8,9,6,};
        //遍历输出一维数组中的元素
        for (int i=0;i<arr1.length;i++){
            System.out.println(arr1[i]);
        }
    }
}

第三章:二维数组

1.1基本特性

  1. 二维数组是特殊的一维数组,二维数组中每个元素为一维数组。
  2. 二维数组初始化:

静态初始化: int[][] arry={{1,2,3},{1,2,3},{1,2,3}}

代码语言:javascript
复制
int[][] arr=new int[2][3];
arr[0][0]=11;

动态初始化:int[][] arrys=new int[2][3]; //初始化一个两行三列的二维数组

代码语言:javascript
复制
public class Text{
    public static void main(String[] args) {
        //初始化一个静态类型的二维数组
        int[][] arr1={{1,2,3},{1,2,3},{2,3,1}};
        //输出第1行第3列的元素
        System.out.println(arr1[0][2]);
    }
}

二维数组遍历:

代码语言:javascript
复制
public class Text{
    public static void main(String[] args) {
        //初始化一个静态类型的二维数组
        int[][] arr1={{1,2,3},{1,2,3},{2,3,1}};
           //遍历输出二维数组中的元素
        for (int i=0;i<arr1.length;i++){
            for(int j=0;j<arr1[i].length;j++){
                System.out.print(arr1[i][j]);//第i个一维数组中第j个元素
            }
        }
    }
}

第四章:数组常见异常总结

1.1数组角标越界异常

代码语言:javascript
复制
public class Demo10 {
    public static void main(String[] args) {
        int arr[] = new int[3];
        System.out.println(arr[3]);
    }
}

2.1数组空指针异常

代码语言:javascript
复制
public class Demo10 {
    public static void main(String[] args) {
        int arr[] = new int[3];
        //System.out.println(arr[3]);
        arr = null;
        System.out.println(arr[3]);
    }
}

数组工具类:Arrys.sort();//排序 Arrys.binarySearch();//二分查找

第五章:简单练习

1.数组求和

代码语言:javascript
复制
public class Demo01 {
    public static int getSum(int []nums){
        int res = 0;// 求和结果
        int length = nums.length;// 获取长度
        for (int i =0;i<length;i++){
            res += nums[i];
        }
        return res;
    }

    // 数据类型... 形式参数 可变长度参数 就是数组
   /* public static int getSum1(int... nums){
        int res = 0;// 求和结果
        int length = nums.length;// 获取长度
        for (int i =0;i<length;i++){
            res += nums[i];
        }
        return res;
    }*/

    public static void main(String[] args) {
        int nums[] = {23,17,40,20};
        int sum = getSum(nums);
        System.out.println("数组的求和结果:"+sum);
    }
}

2.求最值

代码语言:javascript
复制
public class Demo02 {
    /**
     * 求数组最大值
     * @param nums
     * @return
     */
    public static int getMax(int nums[]){
        int max = nums[0];// 默认最大值为第一个元素
        for (int i = 1;i<nums.length;i++){// 遍历数组的每一位
            if (max<nums[i]){// 判断当前为是否比max大
                max = nums[i];// 用大值替换max值
            }
        }
        return max;
    }
    public static void main(String[] args) {
        int nums[] = {7,23,44,16,32,99,34,13};
        Arrays.sort(nums);
        //int max = getMaxIndex(nums);
        //System.out.println("最大值是:"+max);
        System.out.println(Arrays.toString(nums));
        System.out.println(nums[nums.length-1]);
    }
}

今天的分享就到这里啦!!~希望对大家有帮助的话多多支持下 ~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 第一章:基本概念
    • 1.1基本性质
      • 2.1 数组的优缺点
      • 第二章:一维数组
        • 1.1基本语法
        • 第三章:二维数组
          • 1.1基本特性
          • 第四章:数组常见异常总结
            • 1.1数组角标越界异常
              • 2.1数组空指针异常
              • 第五章:简单练习
                • 1.数组求和
                  • 2.求最值
                  • 今天的分享就到这里啦!!~希望对大家有帮助的话多多支持下 ~
                  相关产品与服务
                  对象存储
                  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档