Java基础4(数组)

本文详细介绍了Java中的数组,包括数组在JVM内存区域的分布、静态与动态初始化、基本操作如获取长度、设置和获取元素,以及处理数组时可能遇到的异常。通过多个示例代码展示了数组的使用,包括二维数组的处理和综合练习,帮助读者深入理解Java数组。
摘要由CSDN通过智能技术生成

JVM中的内存区域

  1. 方法区
    类的存放区域。

  2. 变量的存放区域。当我们新建一个方法的时候,就会新建一个栈,也就是一个方法就对应着一个栈。

  3. 数组的存放区域。
  4. GC(垃圾回收器)
    当我们创建了一个数组,但是却没有使用,那么数组的存在会占用内存,没有意义,就相当于垃圾,我们不需要了的,当JVM 的内存不够用了的时候,就会去清理这些没有被引用的对象所占用的内存空间。

数组的定义
就是当有多个 相同类型 的常量值有序 存放起来的时候,那就可以定义一个数组,就相当于excel的一列数据。数组中的索引相当于excel中一列数据中对应的行数,元素就是表格中的内容,所以我们使用的是元素,索引只是我们用来记录元素的位置的,数组中的第一个元素对应的索引是0,第二个元素对应的索引是1,以此类推。

定义的语法:数据类型[] 数组名

int[] ages;//定义一个int类型的数组,名称为args
int ages[];//这是另一种定义的方法,但是不推荐,因为要看到名称才知道是数组,只看到数据类型不能确定是数组,可读性不强。

数组的初始化
为数组分配内存,来存放数组的数据(也就是堆)

  1. 静态初始化
    当知道元素是什么的时候就使用静态初始化
    语法:数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,…}
//先定义后初始化
String[] s;
s = new String[]{
   仙女1,仙女2,仙女3}
//定义数组的同时初始化
int[] a = new int[]{
   1,2,3,4};
//简单方式,可以省略new之后的 数组元素类型[]
int[] a1 = {
   1,2,3,4};
  1. 动态初始化
    只设置数组的元素个数,数据由JVM自行生成。各数据类型的默认值如下图:
    各种数据类型的初始值
    语法:数据类型[] 数组名 = new 数据类型{元素个数};
int[] ages = new int[5];//5表示元素的个数。

数组的元素的操作

  1. 获取元素的个数
    语法:数组名.length
int[] nums = {
   1,2,3,4,5};
int size = nums.length;//size等于nums数组的长度,也就是数组中有多少个元素。
  1. 设置数组元素
    语法:数组名[索引] = 值;
int[] nums = {
   1,2,3,4,5};
nums[2] = 333;//执行这个语句之后,数组就变成了{1,2,333,4,5},因为索引是从0开始的,索引为2,对应的就是第三位的数据。
  1. 获取数组中的元素
    语法:元素类型 变量名 = 数组名[索引];
    需要确定索引是否存在
int[] nums = {
   1,2,3,4,5};
//获取第四个数据
int i = nums[3];//第四个数据,索引值为3.
  1. 为数组中的指定索引位置设值
    方法一:for
int[] nums = {
   1,2,3,4,5};
for (int i = 0;i < nums.length;i++){
   
   System.out.print(nums[i]+",");
 }

方法二:for-each
不会涉及到索引,使用定义的变量去接收每次变量出来的元素。

int[] nums = {
   1,2,3,4,5};
for(int i:nums){
   
	System.out.print(i);
}
  1. 操作数组过程中可能存在的问题和原因
    NullPointerException:空指针异常(空引用异常)
    操作了一个尚未初始化或者没有分配内存空间的数组
    ArrayIndexOutOfBoundsException:数组的索引越界异常
    操作的数组的索引不在[0,数组名.length-1]范围内

练习

  1. ArrayDemo1.java(重点)

需求:定义数组和数组的静态初始化操作

步骤:

(1)先定义后初始化数组(不能使用简写方式)

(2)定义数组,同时初始化

(3)打印数组长度

(4)数组赋值为空,并演示空指针错误

public class ArrayDemo1 {
   
    public static void main(String[] args){
   
        //先定义后初始化
        int[] a;
        a = new int[]{
   1,2,3,4};
        //定义数组同时初始化
        String[] s = new String[]{
   "张三","李四"};
        //打印数组长度
        System.out.println("数组a的长度为"+a.length);
        
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值