天天看点

Java——数组声明,赋值等一些细节问题数组的使用

Java——数组

  • 数组的使用

数组的使用

(数组既可以是基本类型,也可以是引用类型)

//1. 声明数组     
 int[ ] a;
 //2. 分配空间:一块连续的空间
 a = new int[6];   
 //3. 赋值
 a[0] = 8;
 //4. 处理数据
 a[0] = a[0]+5;
           

数组创建中各步骤的逻辑原理

在数组中,当声明数组时(启用栈内存),就是在栈中创建一个指向堆内地址的变量a;

而在分配空间时(启用堆内存),就是在堆内分配一个连续空间,将空间的首地址(0x…开头的16进制)赋值给栈内引用好的变量a。

最后就是在堆空间内进行赋值操作。

数组的创建方式:

  1. 声明并分配空间(表示数组的中括号可以在任意的相关位置,不受限制):

    int[ ] a = new int[6];

    int [ ] a = new int[6];

    int a[ ] = new int[6];

  2. 声明并赋值(在赋值的过程中就同时也将数组的空间根据其长度来分配 好了,简单声明时不规定相关数组长度):

    int[ ] a = new int[]{1,2,19,36,54};

    int[ ] a = {1,234,43,67};

另外值得注意的是:

  • 数组元素存在默认初始化,对比如下:
public class ArTest {
    public static void main(String[] args){
        int i ;
        int a ;
        System.out.println(a);
    }
}
           
结果:
Java——数组声明,赋值等一些细节问题数组的使用
运行失败
public class ArTest {
    public static void main(String[] args){
        int[] i ;
        int[] a = new int[3];
        System.out.println(a[0]);
        //System.out.println(i[0]);
    }
}

           
运行结果:
Java——数组声明,赋值等一些细节问题数组的使用
运行成功,值为0

由此我们可以看出,在java中各类型数据以及数组未进行初始化的时候并没有默认值,可以存在同时不报错,但是如果运用的话就会报错,而各类型的数组在分配空间后,同时并未给定具体值的情况下都拥有一个默认值。

个人认为可以这么理解,由于在数据或数组声明的时候都并未给其分配相应的空间,则不占其中内存,自然也就不会报错。而数组在分配空间时,需要一个值进行空间占位,所以会有默认值。

  • 声明:就好像客人预定了酒店,但是没有入住,所有房间都是空的他也可以随时取消,
  • 分配空间:就好像办理入住手续后,哪怕他没有入住,但是在系统中他的房间已经被占用了。

对于默认值:

  • int :0
  • String:null
  • boolean:false
  • char: (是’ ')