1.什么是数组

数组(array)是一种用于存储多个相同类型数据的存储模型

2.数组定义格式

第一种:数据类型[] 数组名

​示例:

int[] arr;
double[] arr;
char[] arr;

第二种:数据类型 数组名[]

示例:

int arr[];
double arr[];
char arr[];

3.数组初始化

3.1概述:Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值

3.2动态初始化

初始化时只指定数组长度,由系统为数组分配初始值

格式:数据类型 [ ] 变量名 = new 数据类型[数组长度];

范例: int [ ] arr = new int[3];

3.3静态初始化

初始化时指定每个数组元素的初始值,由系统决定数组长度

格式:数据类型 [ ] 变量名 = new 数据类型[ ] { 数据1 ,数据2 ,数据3 ,……} ;

范例: int [ ] arr = new int[ ] { 1, 2 , 3 } ;

简化格式:数据类型 [ ] 变量名 = { 数据1 ,数据2 ,数据3 ,……} ;

范例: int [ ] arr = { 1, 2 , 3 } ;

3.4数组元素访问

什么是索引?

每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。

​这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。

索引是数组中数据的编号方式

作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名

特征①:索引从0开始

特征②:索引是连续的

特征③:索引逐一增加,每次加1

访问数组元素格式:数组名[索引];

示例:

public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];//输出数组名System.out.println(arr); //[I@880ec60(地址)//输出数组中的元素System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
}

4.Java中的内存分配

栈内存:存储局部变量

定义在方法中的变量,例如:arr

使用完毕,立即消失

堆内存:存储new出来的内容(实体,对象)

数组在初始化时,会为存储空间添加默认值

整数:0

浮点数:0.0

布尔:false

字符:空字符

引用数据类型:null

每一个new出来的东西都有一个地址值

使用完毕,会在垃圾回收器空闲时被回收

5.数组操作的两个常见小问题

5.1索引越界异常(ArrayIndexOutOfBoundsException)

public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];System.out.println(arr[3]);}
}

数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。

程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

解决方案

将错误的索引修改为正确的索引范围即可!

5.2空指针异常(NullPointerException)

public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];//把null赋值给数组arr = null;System.out.println(arr[0]);}
}

arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

解决方案

给数组一个真正的堆内存空间引用即可!

6.数组的输出

  • for循环遍历输出

  • 直接以数组名输出(只有char型数组可以输出内容,其他类型的输出的是内存地址)

public static void main(String[] args) {int[] arr = new int[]{1,4,7};char[] brr = new char[]{'1','2','3'};String[] crr = new String[]{"1","2","3"};System.out.println(arr);System.out.println(brr);System.out.println(crr);}

结果图:

  • 以Arrays.toString(数组名)输出(带格式输出)

public static void main(String[] args) {int[] arr = new int[]{1,4,7};System.out.println(Arrays.toString(arr));}

结果图:

  • 如果想打印多维数组可以使用Arrays.deepToString方法

 public static void main(String[] args) {int[][][] arr = new int[3][3][3];System.out.println(Arrays.deepToString(arr));}

结果图:

Java中的数组(Array)相关推荐

  1. Java中的数组Array

    1.数组的基本性质: ①java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object. ②数组实际上是一个容器,可以同时容纳多个元素(数组是一个数据的集合).数组中每一个元 素 ...

  2. java中set怎么建int型_使用Array.setInt来填充Java中的数组

    为了填充Java中的数组,我们使用Array.setInt()方法.java.lang.reflect.Array.setInt(Object array,int index,int value)方法 ...

  3. Java中的数组数据结构需要了解的要点

    首先,数组是Java中的对象.它们不是像int.short或long这样的基本类,也不是具有很多方法的全功能对象,但由于它们是对象,所以它们隐式地扩展了Object,这就是为什么可以使用数组引用(例如 ...

  4. java矩阵加法_在java中的数组加法?

    我到目前为止有一个程序要求用户选择一些元素.该程序然后要求用户选择数量由元素数量指示的次数.我将如何使用数组以及while或for循环找到这组数字的方差.我在高中时没有什么特别的感觉.下面是我当前的代 ...

  5. java面试题24 关于Java中的数组,

    java面试题24 关于Java中的数组,下面的一些描述,哪些描述是准确的:(        ) A 数组是一个对象,不同类型的数组具有不同的类 B 数组长度是可以动态调整的 C 数组是一个连续的存储 ...

  6. js解析java对象数组_js接收并转化Java中的数组对象的方法

    在做项目时,要向ocx控件下发命令,就要在js中得到java中的对象,然后拼成一种格式,下发下去...当对象是一个时比较简单,但如果对象是一个数组时,就略显麻烦了. 开始我以为有简单的方式,可以直接进 ...

  7. js中的数组Array定义与sort方法使用示例

    js中的数组Array定义与sort方法使用示例 Array的定义及sort方法使用示例 Array数组相当于java中的ArrayList  定义方法:  1:使用new Array(5  )创建数 ...

  8. [转载] java中对数组进行排序_如何在Java中对数组排序

    参考链接: Java中main()的有效变体 java中对数组进行排序 Java Array is like a container that can hold a fixed number of t ...

  9. java数组删除数组元素_如何在Java中删除数组元素

    java数组删除数组元素 When we create an array in Java, we specify its data type and size. This is used by JVM ...

最新文章

  1. @Autowire 和 @Resource 注解使用的正确姿势,别再用错的了!!
  2. 20201010《近代数学》第1节课 笔记
  3. 用python爬取网页数据并存入数据库中源代码_Python爬取51cto数据并存入MySQL方法详解...
  4. linux下expdp定时备份_Linux 自动备份 Oracle 数据库 Shell 脚本
  5. shell(一)——概述、变量、运算符
  6. Spring: Spring 从xml获取bean
  7. mysql分组按天统计数据_MySql按周,按月,按日分组统计数据
  8. java用hashmap_Java集合之HashMap的用法
  9. c语言输出七个换行6,多样例输出,如何去掉最后一个回车
  10. clickhouse SummingMergeTree表引擎
  11. 世界主要城市地铁地图
  12. 深度学习11-tf.data详解以及猫狗图片分类实战
  13. matplotlin 入门
  14. Javascript之基本包装类型
  15. Visual studio code清除终端数据
  16. 电磁场与电磁波公式总结
  17. 三菱485BD板学习和认识
  18. 缺陷报告.定义,报告,核心要素
  19. 阿里巴巴-新加坡南洋理工大学成立联合研究院 开展全方位AI合作
  20. canopen pdo通信c语言,CANopen通信之PDO通信

热门文章

  1. 输入三角形三条边,判断三角形的类型,并输出其面积、周长和类型。
  2. HID Global推出新一代门禁读卡器以及非接触式智能卡(BlackBerry 9900)
  3. maven 开源中国配置~
  4. mysql多主集群_mysql galera多主集群
  5. Python并行计算使用共享内存
  6. 我国新能源汽车充电桩市场前景广阔,华为、阿里、恒大纷纷入局
  7. Python二进制、八进制、十六进制数字的表示和转换
  8. 01 | 崩溃优化(上):关于“崩溃”那些事儿
  9. sql语句大全(详细)
  10. LabVIEW存储数据笔记——数据存储与读取