java数组详解

目录

一、数组的基本概念

1、数组的定义

2、一维数组

2.1、一维数组的创建及初始化

2.1.1、一维数组的创建

2.1.2、一维数组的初始化

 2.2、一维数组的使用

2.2.1、元素访问

2.2.2、遍历数组

 二、基本类型变量和引用类型变量

1、基本类型变量与引用类型变量的区别

2、引用变量

3、null

三、二维数组


一、数组的基本概念

1、数组的定义

数组可以看成是相同类型元素的一个集合,在内存中是一段连续的空间。这就类似于商场里的储物柜。

2、一维数组

2.1、一维数组的创建及初始化
2.1.1、一维数组的创建
//数据类型[] array=new 数据类型[N];

1.array代表数组名,可任取。

2. N代表一维数组中所存储元素的个数

2.1.2、一维数组的初始化

数组的初始化主要分为动态初始化以及静态初始化。动态初始化是指在创建数组时直接指定数组元素个数。静态初始化是指在创建数组时不直接指定数组元素个数,而是直接罗列具体的元素内容。具体如下:

//动态初始化
int[] array=new int[10];
//静态初始化
int[] array1={1,2,3,4,5};

注意:1、静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。

2、以上静态初始化为简写,完整形态还要在=后加上:new 数据类型[]。

3、数组也可以按照如下C语言个数创建,但不推荐

数据类型 array[N]={};

4、静态和动态初始化也可以分为两步,但是省略格式不可以分两步。 

//可行
int[] array1;
array1 = new int[10];
 //可行
int[] array2;
array2 = new int[]{10, 20, 30};
//不可行
int[] array3;
array3={1,2,3};

  5、如果没有对数组进行初始化,数组中元素有其默认值,各数据类型默认值如下:

 2.2、一维数组的使用
2.2.1、元素访问

数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素,也可以通过下标对数组进行修改。


int[] array={1,2,3};
System.out.println(array[0]);//1
System.out.println(array[1]);//2
System.out.println(array[2]);//3
array[2]=100;
System.out.println(array[2]);//100

注意:下标从0开始,介于[0, N)之间不包含N,N为元素个数,不能越界,否则会报出下标越界异常。

2.2.2、遍历数组

"遍历" 是指将数组中的所有元素都访问一遍。对于遍历数组,我们通常推荐使用for循环的方法遍历。

public class Main {
    public static void main(String[] args) {
        int[] array={1,2,3};
        int i=0;
       for(i=0;i<3;i++){
           System.out.println(array[i]);
       }
    }
}

但是,对于有些情况,我们很难知道数组的元素个数,在这里我们可以用“.length”来获取数组元素个数,如下:

public class Main {
    public static void main(String[] args) {
        int[] array={1,2,3};
        int i=0;
       for(i=0;i<array.length;i++){
           System.out.println(array[i]);
       }
    }
}

此外,我们还可以用 for-each 遍历数组 (for 循环的另外一种使用方式. ):

public class Main {
    public static void main(String[] args) {
        int[] array={1,2,3};
       for(int i:array){
           System.out.println(i);
       }
    }
}

 二、基本类型变量和引用类型变量

1、基本类型变量与引用类型变量的区别

基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值。

引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址。

int a=5;
int[] array={1,2,3};

上面a是内置类型的变量,因此其空间中保存的就是给该变量初始化的值。array是数组类型的引用变量,其内部保存的内容可以简单理解成是数组在堆空间中的首地址。

2、引用变量

public class Main {
    public static void main(String[] args) {
        int a=10;
        func(a);
        System.out.println(a);//10
    }
    public static void func(int a) {
        a=100;
    }
}

基本变量在以上操作中,值没有改变,但是引用变量会变:

public class Main {
    public static void main(String[] args) {
        int[] a={1,2,3};
        func(a);
        System.out.println(a[0]);//100
    }

    public static void func(int[] a) {
        a[0]=100;
    }
}

同时,如果进行以下操作,a的地址就是b的地址,也就是说,a与b相同:

public class Main {
    public static void main(String[] args) {
        int[] a={1,2,3};
        int[] b={100,200};
        int i=0;
        a=b;
        for(i=0;i<a.length;i++){//遍历a数组
            System.out.print(a[i]+" ");
        }
        System.out.println();
        for(i=0;i<b.length;i++){//遍历b数组
            System.out.print(b[i]+" ");
        }
    }
}

 结果如下:

由此,可看出引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该 地址,引用变量便可以去操作对象。 

3、null

null 在 Java 中表示 "空引用" , 也就是一个不指向对象的引用. null 的作用类似于 C 语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行任何读写操作. 一旦尝试读写, 就会抛出 NullPointerException. 

三、二维数组

二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组.

数据类型[][] array=new 数据类型[行][列]{};//基本语法

二维数组的用法和一维数组并没有明显差别, 因此不再赘述.  

以上便是本篇全部内容,觉得有帮助的可以一键三连支持一下哦~感谢支持!!!

  

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值