java中一维数组详细使用方法,数组扩容,main方法中的String[] args数组等

本文详细讲解了一维数组的基础概念,包括数组结构优缺点、定义与初始化、下标越界处理,以及如何在方法中传递数组。还介绍了存储引用类型、main方法中的String[]args数组和数组扩容技巧。适合初学者理解数组在信息技术中的核心运用。

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

目录

一、一维数组概念;

二、数组结构的优点和缺点;

三、定义一个一维数组;

四、初始化一个一维数组;

五、下标越界异常;

六、在方法中传递数组;

七、一维数组中存储引用类型;

八、main方法中的“String[] args”数组;

 九、数组扩容;


一、一维数组概念;

1、数组是一种引用数据类型,不是基本数据类型,数组的父类是Object。

2、数组中可以存储“基本数据类型的数据;“也可以存储“引用数据类型“的数据;

3、因为数组是引用类型,所以数组对象在“堆”内存当中;

4、若数组中存储的是“对象”,实际存储的是对象的内存地址;

5、数组创建后,数组长度就无法改变;

6、所有数组的“整个数组的内存地址“就是第一个元素的内存地址;

7、所有数组都有length属性,用来计算数组长度;

8、数组中每一个元素都有下标,第一个为0,第二个为1,最后一个为:length-1;

9、数组中元素类型要统一,int类型的数组里只能存储int类型元素;

10、一个数组在内存中的存储,内存地址是连续的;

二、数组结构的优点和缺点;

优点:查询某个下标上的元素时效率极高;(因为内存存储是连续的,并且数据类型一样,所占空间大小也一样,所以知道第一个元素的内存地址,就可以计算出任何一个下标上的元素)

缺点:1、增删元素效率低;(因为数组是连续的,增加或者删除,会涉及到后面的元素统一向前或向后移动)

2、数组没有办法存储大量数据;(因为存储是连续的,数据量大,内存很难找到这么大的内存空间)

三、定义一个一维数组;

语法格式:

        int[] arr;
        double[] arr1;
        String[] arr2;
        Object[] arr3;
        boolean[] arr4;

四、初始化一个一维数组;

两种方式:

        //静态初始化
        int[] arr={1,2,3,4,5};
        //动态初始化
        int[] arr1=new int[5];//里面元素默认值为0;
        String[] arr2=new String[10];//里面元素默认值为null;

五、下标越界异常;

        //静态初始化
        int[] arr={1,2,3,4,5};//5个元素最后一个元素下标为4
        System.out.println( arr[5]);
        //ArrayIndexOutOfBoundsException(报出下标越界异常)

六、在方法中传递数组;

示例:

public class Text {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr={1,2,3,4,5,6};
        Text.printArr(arr);//给静态方法传递
        //创建Text对象
        Text t=new Text();
        t.printArry(arr);//用引用调用实例方法传递数组
    }
    //定义一个静态方法,参数传递数组
    public static void printArr(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
    //定义一个实例方法
    public  void printArry(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

七、一维数组中存储引用类型;

示例代码:

public class Text {
    public static void main(String[] args) {
        //定义一个类型为A的数组你,里面只能存储A类型的对象
        A[] a={new A(),new B(),new C()};//因为B、C都是继承A,所以也可以存储进去
        
        //也可以这样,先创建对象
        A n1=new A();
        A n2=new B();
        A n3=new C();
        //在创建A类型的数组;
        A[] arry={n1,n2,n3};
    }
}
//类A
class A{
}
//类B继承A
class B extends A{
}
//类C继承A
class C extends A{
}

八、main方法中的“String[] args”数组;

1、main方法中的数组只有JVM来调用,调用的时候会自动传递一个数组;

2、默认传递的数组长度为0;(也就是一个空数组)

 

3、这个数组是让用户输入的,例如在控制台运行class文件的时候:(其中abc,def,efg就是用户输入的)

 4、也可以在IDEA软件里输入;

        输入位置:RUN------>Edit configuratins......-------->program arguments 中输入args的值

例如:进入系统需要输入用户名和密码;输入错误或者不输入就进不去系统(例如账户是“zhangsan”,密码是“123”);

public class Text {
    public static void main(String[] args) {
        //用户名和密码是两个字符串,如果不是两个就进不去系统
       if(args.length!=2){
           System.out.println("输入有误!");
           return;
       }
       String u=args[0];
       String p=args[1];
       //例如用户名为张三,密码为123,此处字符串在equal前是为了避免空指针异常
       if ("zhangsan".equals(u)&&"123".equals(p)){
           System.out.println("欢迎使用此系统");
       }else{
           System.out.println("账号或密码错误!");
       }
    }
}

在IDEA中输入

因为密码为456,所以进入不了系统

 

如果输入正确:

 

则会进入系统

 

 九、数组扩容;

        因为数组一旦创建就不可以改变长度,所以扩容就只能创建一个大容量的数组,然后将小容量的数组拷贝到大数组中;

使用System中的arraycopy方法进行拷贝:

System.arraycopy(原数组,原数组从哪个位置(下标)开始拷贝,目标数组,拷贝到目标数组哪个位置(下标),拷贝长度);

例如:

        //原数组        
        int[] a={1,2,3,4,5,6};
        //目标数组
        int[] b=new int[20];
        //从a数组下标为1的位置开始拷贝,到b数组下标为3的位置,拷贝长度为3
        System.arraycopy(a,1,b,2,3);

b中数组输出:

欢迎小伙伴参考学习,人非圣贤,若有不足欢迎指正; 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张同学%

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值