Java学习之数组的简单用法

要是觉得内容枯燥,您可以点击左下角的播放按钮,让您在音乐的熏陶下愉快的阅读

本文总字数:1792

 

•概念

  其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。

  数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配;

  而数组的定义语法有两种:

  • 静态初始化
  • 动态初始化

静态初始化

  • 简化格式

    • 数据类型 数组名称 = {值, 值,…}
    • int[] x = {0,1,2,3};
  • 完整格式

    • 数据类型 数组名称 = new 数据类型[] {值, 值,…}
    • int[] y = new int[]{0,1,2,3};

  在开发之中,对于静态数组的初始化强烈建议使用完整语法模式;

  这样可以轻松地使用匿名数组这一概念。

public class TestArray {

    public static void main(String[] args) {
        System.out.println(new int[] {1,2,3}.length);
    }
}

  使用静态方式定义数组的时候,最好写上完整格式。

动态初始化

  • 数据类型[ ] 数组名称 = new 数据类型[长度]

    • int[] a = new int[10];//动态初始化数组,先分配空间

  需要注意的是数组属于引用数据类型,所以在数组使用之前一定要开辟空间(实例化);

  如果使用了没有开辟空间的数组,则一定会出现  NullPointerException  异常信息;

•数组中的简单操作

  • 数组的访问通过索引完成,即 a[0],a[1],.......,a[9] 

  • 通过  a.length 获取数组 a 的长度

•arraycopy

参数

   System.arraycopy(src, srcPos, dest, destPos, length); 

  • src 表示源数组

  • srcPos 表示源数组中拷贝元素的起始位置

  • dest 表示目标数组

  • destPos 表示拷贝到目标数组的起始位置

  • length 表示拷贝元素的个数

  需要注意的是在进行数组拷贝时,目标数组必须有足够的空间来存放拷贝的元素,否则就会发生下标越界异常。

复制代码
public class TestArray {

    public static void main(String[] args) {

        int[] a = {0,1,2,3,4};
        int[] b = new int[10];
        for(int i = 0;i < b.length;i++)
            b[i] = -1;
        
        System.arraycopy(a, 0, b, 1, a.length);
        
        for(int x : b)
            System.out.print(x+" ");
    }
}
复制代码

输出结果

  

数组填充

  java 中的数组初始值都为零,若想要快速填充一个其他值,可以用  Arrays.fill  方法;

  但只能填充一个一维数组,多维数组得用循环。

   int[] array = new int[10]; 

  • Arrays.fill(arrayname,value)

    • Arrays.fill(array,50);//array[0,...,9] = 50; 
  • Arrays.fill(arrayname,a,b,value)

    • 填充区间 [a,b)
    • Arrays.fill(array,2,5,50);//array[2,..,4] = 50;
  • 填充多维数组

  • 复制代码
    public class TestArray {
    
        public static void main(String[] args) {
    
            int array[][]=new int[10][10];
    
            for(int i=0;i < 10;++i)
                Arrays.fill(array[i],50);
        }
    }
    复制代码

 

posted @   MElephant  阅读(106)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示