精华内容
下载资源
问答
  • 复习内容: 数组的声明和初始化、数组的长度、数组访问、java.lang.ArrayIndexOutOfBoundsException数组下标越界异常、二维数组、java.lang.NullPointerException空指针异常 如有错误,欢迎在评论区指出,非常感谢! ...

    Java数组

    2021/4/5 周一
    复习内容: 数组的声明和初始化、数组的长度、数组访问、java.lang.ArrayIndexOutOfBoundsException数组下标越界异常、二维数组、java.lang.NullPointerException空指针异常

    如有错误,欢迎在评论区指出,非常感谢!


    数组是一种类型(与基础数据类型不一样),它能一次性定义多个同类型的变量,存放多个同类型数据。

    一、声明数组

    // 数据类型[] 数组名;
    int[] arr;
    
    // 数据类型 数组名[];
    int arr[];
    

    数据类型就是数组里存储元素的类型,[]代表数组,千万不要写漏。

    以上两种方式都可以用来声明数组,但是一般建议使用第一种。

    此时只是声明了数组,数组变量还没有被初始化。注意,在声明时不要规定数组的长度。

    二、数组初始化

    1. 动态初始化-只确定长度
    // 数据类型 []数组名 = new 数据类型[数组长度];
    int[] arr = new int[20];
    

    或者如果数组brr已经被定义了,直接将等号后面new的数组变量赋值给brr也可以

    int[] brr;
    brr = new int[20]; // 这样也可以
    

    此方式创建数组对象时,只需要指定数组的长度,数组中所有的元素的值默认为"零",具体各数据类型的"零"值为:

    数据类型 “零”
    byte short int long 0
    float double 0.0
    boolean false
    char ’ '(空格)
    引用数据类型 null

    注意此方式创建数组对象必须使用 new 关键字,且 = 前后数据类型一致

    2. 动态初始化-确定长度和内容
    // 数据类型 []数组名 = new 数据类型[]{v1,v2,v3,v4,...};
    int[] arr = new int[]{v1,v2,v3,v4,...};
    

    此方式创建数组时,数组中的元素值也依次为{ }里所给定的元素。

    注意,[ ]内必须为空,不能在[ ]内指定数组长度,而是由{ }里元素的个数来决定数组的长度

    此方式也可以定义和赋值分开:

    int[] brr;
    brr = new int[]{v1,v2,v3,v4,...}; // 这样也是可以的
    
    2. 静态初始化
    // 数据类型 []数组名 = {v1,v2,v3...};
    int[] arr = {v1,v2,v3...};
    

    数组的静态初始化也是确定长度和内容的。

    注意,此方式不能先定义后赋值。即如果先声明数组,再用此种方式赋值是不可以的:

    int[] brr;
    brr = {v1,v2,v3...}; // 编译错误!!!
    

    三、数组的属性

    数组有一个长度属性,获得数组长度的方式为:数组名.length

    int len = arr.length; // 获得数组arr的长度
    

    在Java中允许数组的长度为0,即包含0个元素,这样的数组对象仍是一个Java对象,而且不同于null。虽然没有意义,但在语法上是合法的:

    int[] arr = new int[0];
    System.out.println(a.length);    // 输出结果为0
    

    四、访问数组元素

    访问数组元素的方式为:数组名[下标]

    arr[0]; // 访问数组a的第1个元素
    

    下标的取值范围 [0,数组长度),下标为0表示数组的第1个元素,下标的最大值为 数组长度-1

    不能超过下标范围进行元素访问,否则将引发数组中最常见的:
    java.lang.ArrayIndexOutOfBoundsException 数组下标越界异常

    比如

    int []arr ={1,2,3,4};
    

    这个数组的长度为4,如果调用arr[4],运行时就会报数组越界异常:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    	at review.ErrorTest.main(ErrorTest.java:21)
    

    异常提示了发生错误的时候,下标的值为4

    因为下标为0表示数组的第1个元素,即这个数组的元素只有arr[0]=1, arr[1]=2, arr[2]=3, arr[3]=4,没有arr[4]

    五、二维数组

    如果数组中的元素也是数组,这样就可以组成多维数组,比如二维数组、甚至更多层次的三维数组等等(当然一般超过三维也没什么实际用处了,所以主要掌握二维数组就好了)。

    1.数组声明

    与一维数组声明类似,多一个[ ]

    // 数据类型 [][]数组名;
    int[][] arr ;
    
    2.数组初始化

    (1) 初始化一维数组(指定一维数组长度)

    数据类型 [][]数组名  = new 数据类型[二维数组长度][一维数组长度];
    int[][] arr = new int[3][4];
    

    arr这个二维数组里有3个元素,都是长度为4、数据类型为int的一维数组,此时可以取某个数组里的元素的值,不过因为没给出具体值,所以默认为0。

    可以再给一维数组里的元素赋值,如:

    arr[0][0] = 11; // 第一个数组里的第一个值
    arr[1][0] = 21; // 第二个数组里的第一个值
    arr[2][0] = 31; // 第三个数组里的第一个值
    

    另外要知道,二维数组真正存储的其实是一维数组的地址信息

    (2) 不初始化一维数组(不指定一维数组长度)

    数据类型 [][]数组名  = new 数据类型[二维数组长度][];
    int [][] arr = new int[3][];
    

    此时只说明了arr这个二维数组里有3个元素,都是数组,但这些一维数组并没有初始化过,即arr这个二维数组中的arr[0]、arr[1]、arr[2]这3个数组都是null。

    所以此时不可以取一维数组里具体元素的值,否则运行会报错
    java.lang.NullPointerException 空指针异常

    int [][] arr = new int[3][]; // 一维数组没有初始化
    System.out.println(arr[0][1]);
    
    -----------------控制台输出--------------------
    Exception in thread "main" java.lang.NullPointerException // 空指针异常
    	at review.ErrorTest.main(ErrorTest.java:21)
    

    由于一维数组arr[0]的变量没有指向任何数组对象,这个时候对该数组名进行 . 和 [ ] 的访问就会报空指针异常错误。

    需要继续将一维数组初始化后才能进行取值,而且由于一维数组分别进行初始化,所以他们的长度可以不一样

    数组名[下标] = new 数据类型[数据长度];
    arr[0] = new int[4];
    arr[1] = new int[3];
    arr[2] = new int[2];
    System.out.println(arr[0][1]);
    

    当然此时控制台还是输出0,因为数组里的元素还没有赋值,默认为0

    (3)静态初始化

    // 数据类型 [][]数组名 = new 数据类型[][]{{v1,v2,...},{v3,v4,..},{v5,...}...};
    int [][] arr = new int[][]{{v1,v2,...},{v3,v4,..},{v5,...}...};
    

    与一维数组的静态初始化类似,直接给出了二维数组中的所有一维数组的所有内容

    展开全文
  • 数组下标越界异常  查看调用的数组或者字符串的下标值是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序...

    数组下标越界异常

     查看调用的数组或者字符串的下标值是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。

    展开全文
  • java数组

    2021-02-13 00:14:44
    数组 数组是相同类型数据的有序集合 ...ArrayIndexOutofBoundsException:数组下标越界异常 数组是相同数据类型的有序集合 数组也是对象,数组元素详单与对象的成员变量 数组长度是确定的,不可变,如果越界报数

    数组

    数组是相同类型数据的有序集合

    数组描述的是相同类型的诺干个数据,按照一定前后次序排列而成

    每一个数据称作一个元素,通过下标来获取

    定义

    int[] nums

    int nums[];

    静态初始化:创建+赋值

    动态初始化:包含默认初始化

    特点

    长度是固定的

    元素是相同类型

    元素可以是任何类型

    数组对象本身是在堆中的

    ArrayIndexOutofBoundsException:数组下标越界异常

    数组是相同数据类型的有序集合

    数组也是对象,数组元素详单与对象的成员变量

    数组长度是确定的,不可变,如果越界报数组下标越界异常

    展开全文
  • 一、Java中数组的定义 一维数组: String[] arrays 或者是String arrays[] 两种都行,推荐第一种 二、数组的初始化 ...数组下标超出数组长度,数组越界异常(运行时异常)。 初始化就是为数组开辟内...

    一、Java中数组的定义
    一维数组: String[] arrays 或者是String arrays[] 两种都行,推荐第一种
    二、数组的初始化
    注意:

    1. 数组属于引用数据类型, 在使用之前一定要开辟空间(实例化),否则就会产生"NullPoninterException"。
    2. 通过数组下标索取来取得元素,下标默认从0开始。数组下标超出数组长度,数组越界异常(运行时异常)。
      初始化就是为数组开辟内存空间,并为每个数组元素赋值
      初始化的两种方式:
      1)动态初始化:只指定长度,由系统给出初始化值
      int[] arrs=new int[10]; 一维数组
      int[][] arrs = new int[8][4]; 二维数组
      2)静态初始化:给出初始化值,又系统决定长度
      简化格式: int[] arrays = {1, 2, 3, 4, 5}; 一维数组
      String[][] arrays = {{“1”,“2”,“3”},{“1”,“2”,“3”}}; 二维数组
      完整格式(推荐): int[] arrays = new int[]{1, 2, 3, 4, 5} ;一维数组
      char[][] arrays = new char[][]{{‘1’,‘2’,‘3’}; 二维数组{‘1’,‘2’,‘3’}};

    三、Arrays类
    Arrays位于Java.Util包里, 主要包含操作数组的各种方法
    四、Arrays常用的方法

    1. sort
      void Array.sort(Object[] array)
      功能:对数组按照升序排序
      在这里插入图片描述
    2. Arrays.toString(Object[] array)
      功能:返回数组的字符串形式
      在这里插入图片描述
    3. Arrays.deepToString(Object[][] arrays)
      功能:返回多维数组的字符串形式
      在这里插入图片描述
    展开全文
  • 数组下标越界异常三、应用1.求整数数组的累加和2.求数组元素最大值四、增强型for循环1.增强型for循环2.foreach循环应用五、冒泡排序1.如何对变量a,b进行交换2.冒泡排序3.排序过程 一、数组 1.使用数组的原因 定义多...
  • 数组 — 一种引用数据类型 一、一维数组的定义与使用 ...数组下标越界会报错(数组越界异常----是一个运行时异常) 数组中每个元素都有默认值,默认值是对应数据类型的默认值 数组长度的计算方...
  • Java数组

    2020-10-06 14:38:57
    数组 本质上就是能 “批量” 创建相同类型的变量(在Java中,数组中包含的变量必须是相同类型)。...数组下标不要越界使用,否则会报错(编译阶段不报错,运行报异常) 二维数组定义: 数据类型[][] 数组变量名
  • 1、数组定义  数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。  注:数组是...
  • 异常的解释是 “数组下标越界 “,调用的下标超出了数组的范围 新手出现这种情况一般是定义变量时长度没有控制好,比如本来只能放10个元素的,放了11个元素; 但是大多数出现这种情况是使用第三方插件包时,第三方...
  • Java数组定义与使用

    2018-10-16 16:02:12
    Java数组-引用数据类型 数组初始化 动态初始化(声明并开辟数组) ...数组下标超出数组长度,数组越界异常(运行时异常) 2.数组中每个元素都有默认值,默认值是该数据类型的默认值。 3.数组名...
  • java 数组 ...数组下标 (从0开始)超出长度 ,数组就会越界,就会报错数组下标异常。 数组中每个元素都有默认值,默认值是该数据类型的默认值。 .length (属性):取得数组长度。 package array; pub...
  • 数组的定义与使用 1.java数组动态初始化(只要看见new 就在堆上...如果索引下标超过数组长度,会抛出数组越界异常(运行时异常) b.动态初始化后的数组,每个元素都有默认值。 c.查看数组的长度: 数组名称.length ...
  • 特点:1、数组是可以保存一组相同数据类型的一种数据结构2、定义一个数组必须有固定的长度,且不能修改长度3、数组拥有边界检查,尝试获取不在数组范围内的值时,会出现数组下标越界异常(ArrayindexOutOfB...
  • 由于 C 语言并不具有类似 Java 等语言中现有的静态分析工具的功能,可以对程序中数组下标取值范围进行严格检查,一旦发现数组上溢或下溢,都会因抛出异常而终止程序。也就是说,C 语言并不检验数组边界,数组的两端...
  • JAVA基础课程 数组

    2017-07-10 14:03:15
    JAVA基础课程 数组 2017-6-30 一、数组定义: 什么是数组?...所谓数据结构,简单说就是把...数组下标越界异常提示: java.lang.ArrayIndexOutOfBoundsException 数组的定义: //数组定义 //数据类
  • 数组:定义一组变量 一.一维数组 定义数组:定义数组变量 ...下标不要越界(不要超过范围,否则将报错(java.lang.ArrayIndexOutOfBoundsException)数组下标越界异常 数组名.length可以获得数组长度 数组再定义之后...
  • Java动态数组原理分析

    2019-08-17 23:58:37
    一、数组的原理和特点; 数组:一组能够存储相同数据类型的变量的集合。 当我们有一组相同类型的数据需要存储,如果此时使用...3、数组拥有边界检查,尝试获取不在数组范围内的值时,会出现数组下标越界异常(Arra...
  • 由于 C 语言并不具有类似 Java 等语言中现有的静态分析工具的功能,可以对程序中数组下标取值范围进行严格检查,一旦发现数组上溢或下溢,都会因抛出异常而终止程序。也就是说,C 语言并不检验数组边界,数组的两端...
  • 数组定义与使用

    2019-10-19 18:12:09
    1.数组的创建 //动态初始化:数据类型[ ] 数组名称 = new 数据类型 [长度] { 初始化数据 }; int[] arr = new int[3]{1, 2, 3};...2.在使用数组时,注意数组下标越界问题 数组越界异常java.lang.ArrayIndexOutO...
  • java中的数组

    2020-07-14 23:17:15
    数组下标(从0开始)超出数组长度,数组越界异常(运行时异常) 数组中每个元素都有默认值,默认值是该数据类型默认值 数组名称.length(属性):取得数组长度 /** * 数组动态初始化 * Author: qqy */
  • 异常类处理

    2020-12-05 11:25:28
    异常类名 异常 抛出 VirtualMachineError Java虚拟机(JVM)运行错误 NoClassDefFoundError 定义错误 LinkageError 动态链接失败 AWTError AWT错误 ArithmeticException ...数组下标越界异常 ...
  • 什么是异常?定义:异常是程序在执行过程中,发生不正常的情况。在java中,异常是一种描述出错信息的对象。...(int x =9\0)java.lang.ArrayIndexOutOfBoundsException数组下标越界异常,在访问数组元素,下标为负数...
  • 详解Java异常的分类

    2020-12-11 17:12:29
    下面介绍几种常见的异常类型,便于在出错时对程序进行查错: (1)Exception 各种异常的根类 如果你不知道将发生的异常集体属于哪,而可以肯定种这个...编程时要记住Java数组下标是从0开始的,数组下标最大值为数组长
  • Java异常

    2020-10-31 14:55:48
    例:数组下标越界异常(ArrayIndexOutOfBoundsException) 2.运行期异常 由系统检测,用户的Java程序可以不做处理,系统将他们交给缺省的异常处理程序 例:找不到文件异常 FileInputStream write = new FileInputStream...
  • java 一维数组

    2018-05-13 22:42:00
    数组的概念?有什么特点? 数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放...数组越界异常 通常就是找不到下标了,每个数组的索引都有一个范围,即0~len...
  • 异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。在Java异常处理机制中,引进了很多用来描述和处理异常的类,称为异常类。异常定义中包含了该类异常...
  • Java笔记-08 异常

    2020-02-11 21:57:04
    异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。 在Java异常处理机制中,引进了很多用来描述和处理异常的类,称为异常类。异常定义中包含了该类...
  • 数组下标越界:ArrayIndexOutOfBoundsException 该异常产生的原因:数组访问的时候,数组的下标超出了数组的范围。通俗点来讲就是你定义一个数组存放5个数据,但是你却要输出第6个元素,就会产生这个异常。 空指针...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 142
精华内容 56
关键字:

java数组下标越界异常定义

java 订阅