数组

本文聚焦Java数组,介绍其创建方式,可存放基本数据类型变量和对象。阐述三种访问方式,包括随机访问、foreach遍历和C语言风格遍历。指出Java数组是特殊类,数组变量是对象,继承自Object类。还说明数组随机访问效率高,但因无法动态增删,适用于存储静态数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java可以通过数组和容器来存放一组对象,数组的存储空间在初始化时已经确定且以后不能更改,因此数组不支持添加和删除操作,与之相反容器在创建以后可以动态的添加和删除。本文只讨论数组,容器将在后面的文章中讨论。

数组创建

数组既可以存放基本数据类型变量也可以存放对象。数组创建示例如下:

//数组创建示例
class Phone{
}
public class Test{
    public static void main(String[] args){
        //基本数据类型初始化
        int i1[] = {1,2,3,4,5,6,7,8};
        int i2[] = new int[2];
        i2[0] = 1;
        i2[1] = 2;
        int i3[] = new int[] {1,2,3,4};
        //对象类型初始化
        Phone o1[] = {new Phone(), new Phone()};
        Phone o2[] = new Phone[2];
        o2[0] = new Phone();
        o2[1] = new Phone();
        Phone o3[] = new Phone[]{new Phone(), new Phone()};
    }
}

数组访问

数组有三种访问方式:随机访问、foreach遍历数组、C语言风格遍历数组。下面将分别演示三种访问方法:

public class Test{
    public static void main(String[] args){
        int arr[] = {1,2,3};
        System.out.println("随机访问数组");
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println("foreach遍历数组");
        for(int i: arr){
            System.out.println(i);
        }
        System.out.println("c语言风格遍历访问数组");
        for(int i=0; i< arr.length; i++){
            System.out.println(arr[i]);
        }
    }
}
/*
程序输出:
随机访问数组
1
2
3
foreach遍历数组
1
2
3
c语言风格遍历访问数组
1
2
3
*/

随机访问数组时,数组的下标范围是[0,length-1],即数组的第一个元素是array[0],最后一个元素是array[length - 1],如果下标不在这个范围内将引发错误。

数组是类吗?数组变量是对象吗?

一般有此疑问的人都使用过C/C++数组,在C/C++中数组不是类,其变量也不是对象, C/C++ 数组仅支持随机访问即下标访问操作。对于Java来说,数组是一个特殊的类,数组变量是对象,数组继承自Object类,除了Object类提供的成方法和数据以外,数组类只有一个成员变量length用来获取数组的长度。 下面的测试代码可以证实数组是类:

public class Test{
    public static void main(String[] args) {
        int arr[] = {1, 2, 3};
        System.out.println(arr.getClass().toString());
        System.out.println(arr.getClass().getSuperclass().toString());
    }
}
/*
输出:
class [I
class java.lang.Object
 */

可以看到变量arr是“[I”类的一个对象,并且它的父类是java.lang.Object,在Java中java.lang.Object是任何类的父类。虽然类名“[I”看起来奇怪但它终究是一个类,我们无法找到它的定义,它是由虚拟机在运行时定义的。

最后

数组的随机访问效率很高,但是它不能动态的增删数据限制了它的使用场景,它只适用于存储数量固定的一组数据,我们称之为静态数据,如性别( 男、女)就可以使用数组来存储。

【水煮Java】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值