Java之数组

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

目录

数组(Array)

一、数组概念

数组:

  • 普通的讲:一组数
  • 本质上:数组是一个容器,用来装数据
数组(array)的定义:(了解)
就是把一组雷同数据类型的数据,按照一定的顺序排列,组合到一起。
我们把这组雷同数据类型的变量,数据,用一个统一的名称进行管理。这个统一的名称,叫做数组名。
此中的每一个数据我们称为元素(element),怎样表示一个元素,通过下标,索引(index)
这个数组的元素的个数,我们称为数组的长度(length)
二、怎样声明一个数组

语法格式:
元素的数据类型[] 数组名;
三、怎样为数组初始化

1、数组本身初始化:

​    确定数组的长度,确定元素的个数
​    本质上,申请一整块连续的空间,用来装数据
  1. 语法格式:
  2.    数组名 = new  元素的数据类型[数组的长度];
复制代码
2、数组的元素初始化

​    如果数组的元素不赋值,有初始值,有默认初始值。
  1. 数据类型:
  2. 基本数据类型(8种)
  3. 引用数据类型:类、接口、数组、枚举
  4. byte,short,int,long : 默认为0
  5. float,double:0.0
  6. boolean:false
  7. char:\u0000  Unicode编码值为0的字符
  8. 引用类型:默认为null
  9. 也可以手动初始化。
复制代码
2.1 一维数组

语法格式:
数组名[下标] = 值;
  1. // 动态初始化
  2. int[] arr = new int[3]; // 定义一个数组并且给定其长度,目前默认数值都是0 这是属于动态初始化
  3. arr[0] = 3;
  4. arr[1] = 9;
  5. arr[2] = 8;
  6. // 静态初始化
  7. int[] arr[] = new int[]{3,9,8}; // 定义一个数组,并且赋值,这属于静态初始化
复制代码
  1.     public static void main(String[] args){
  2.         //请组长把本组的每一个学员的成绩,录入,并保存
  3.         //后续可能需要,找最高分,最低分,排序,....
  4.         //这么做不方便后面的统一管理,例如:排序等
  5.                 /*
  6.                 int s1 = 89;
  7.                 int s2 = 87;
  8.                 int s3 = 56;
  9.                 */
  10.         //int a;//声明变量
  11.         //int[] scores;//声明数组
  12.         //scores = new int[5];//数组的初始化,确定数组的长度,一共可以装5个int的整数
  13.         //元素的数据类型:int
  14.         //数组名:scores
  15.         //数组的长度:scores.length,值是5
  16.         //下标的范围:0~4
  17.         //元素有哪些?scores[0],scores[1],scores[2],scores[3],scores[4]
  18.         int[] scores = new int[5];
  19.                 /*
  20.                 System.out.println("第一个元素的值是:" + scores[0]);
  21.                 System.out.println("第二个元素的值是:" + scores[1]);
  22.                 System.out.println("第三个元素的值是:" + scores[2]);
  23.                 System.out.println("第四个元素的值是:" + scores[3]);
  24.                 System.out.println("第五个元素的值是:" + scores[4]);
  25.                 //System.out.println("第五个元素的值是:" + scores[5]);//错误的,会导致数组下标越界异常
  26.                 */
  27.         for(int index = 0; index<5; index++){
  28.             System.out.println("第"+ (index+1)+"个元素的值是:" + scores[index]);
  29.         }
  30.         scores[0] = 89;//第一个元素,第一个数据
  31.         scores[1] = 87;//第二个元素,第一个数据
  32.         scores[2] = 56;//第三个元素,第一个数据
  33.         scores[3] = 99;//第四个元素,第一个数据
  34.         scores[4] = 78;//第五个元素,第一个数据
  35.         //赋值之后再遍历,挨个看看元素的值
  36.         for(int index = 0; index<scores.length; index++){
  37.             System.out.println("第"+ (index+1)+"个元素的值是:" + scores[index]);
  38.         }
  39.     }
复制代码
</ol>七、十大内部排序算法


  • 选择排序
直接选择排序、堆排序


  • 交换排序
​        > 冒泡排序、快速排序

  • 插入排序
直接插入排序、折半插入排序、Shell排序


  • 归并排序
  • 桶式排序
  • 基数排序
八、数组的工具类:Arrays

在java.util包
(1)Arrays.sort(数组名):从小到大排序
(2)Arrays.toString(数组名):把数组的元素拼接成一个字符串,[元素1,元素2,元素3...]
(3)Arrays.fill(数组名,value值):把数组每一个元素都填充为value值
(4)Arrays.fill(数组名,from,to, value值):把数组[from,to)的位置填充为value值
(5)Arrays.copyOf(原数组名,新数组的长度):用一个新数组接收一下
新数组 = Arrays.copyOf(原数组名,新数组的长度);
(6)Arrays.copyOfRange(原数组名,from, to):to可以高出原数组的下标范围,新数组的长度是to-from,to不包含
新数组 = Arrays.copyOfRange(原数组名,from, to);
(7)Arrays.binarySearch(数组名,要查找的value值)
这个方法的条件,必须保证数组是有序,否则结果是不保证正确的
  1. int[][] arr = new int[3][2];
  2. int[][] arr = new int[3][2];
  3. arr[0] = new int[2];
  4. arr[1] = new int[3];
  5. arr[2] = new int[4];
  6. int[][] arr = new int[3][];
  7. arr[0] = new
复制代码
九、数组的异常


  • 数组脚标越界异常(ArrayIndexOutOfBoundsException)
    1.   public static void main(String[] args) {
    2.         //    1、二维数组的声明和初始化
    3.         int[] arr = new int[]{1, 2, 3};  //一维数组
    4.         //    静态初始化
    5.         int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5}, {1, 2, 4}};
    6.         //    动态初始化1
    7.         String[][] arr2 = new String[2][2];
    8.         //    动态初始化2
    9.         String[][] arr3 = new String[3][];
    10.         //2.如何调用数组的指定位置的元素
    11.         System.out.println(arr1[0][1]);
    12.         System.out.println(arr2[1][1]);
    13.         arr3[1] = new String[4];
    14.         System.out.println("arr3 = " + arr3[1][0]);
    15.         //    3、获取数组的长度
    16.         System.out.println("arr1.length = " + arr1.length);
    17.         System.out.println("arr1[0].length = " + arr1[0].length);
    18.         System.out.println("arr1[1].length = " + arr1[1].length);
    19.     //    4、如何遍历二维数组
    20.         for (int i = 0; i < arr1.length; i++) {
    21.             for (int j = 0; j < arr1[i].length; j++) {
    22.                 System.out.print(arr1[i][j] +",");
    23.             }
    24.             System.out.println();
    25.         }
    复制代码
    访问到了数组中的不存在的脚标时发生。
  • 空指针异常(NullPointerException)
  1.    为什么从0开始?
  2.    数组名也是一个变量,而且是一个引用数据类型的变量。
  3.    数组名存储的是这块连续内存空间的首地址。
  4.    第一个元素:数组名[0]表示距离首地址的偏移量为0
  5.    第二个元素:数组名[1]表示距离首地址的偏移量为1
复制代码
arr引用没有指向实体,却在操作实体中的元素时

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表