Java基础(五):Java数组声明与初始化

目录

1、数组声明与定义区别

2、初始化时机

2.1、初始化方法

2.2、数组初始化方式

1、静态初始化

2、动态初始化

3、区别


1、数组声明与定义区别

        对于变量来说,java定义就是声明

       例如:  int[] a;  我们可是说它是定义也可以说它是声明

2、初始化时机

2.1、初始化方法

        初始化或者直接在声明时完成,或者放到构造函数里进行,或者用{}扩起来

没初始化时,编译器只会提示说identifier expected。

public class StudentTest {

    private int i ;
    /**
     *  Label identifier expected 缺标号标识符
     *  Destructor Identifier expected 缺析构函数标识符
     *  Pointe type identifier expected 缺指针类型标识符
     *  
     *  编译器提示说identifier expected
     **/
//此处若给变量赋值,会报错,JAVA所有的除定义或声明语句之外的任何语句都必须在方法内部(而方法又必须在某个类内部,不存在游离于类外部的方法或成员)
//    i = 2;
    /**
     * 1、声明时初始化
     **/
    private int j = 2;

    /**
     * 2、{}初始化
     **/
    {
        Student stu = new Student();
        stu.name = "dd";
    }
    /**
     * 3、构造器初始化
     **/
    Student stu = new Student("dd");
}

  Java语言中数组必须先初始化,然后才可以使用。

   初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值

注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值:

            基本数据类型的整数类型(byte、short、int、long)默认值是0;

            基本数据类型的浮点类型(float、double)默认值是0.0;

            基本数据类型的字符类型(char)默认值是'\u0000';

            基本数据类型的布尔类型(boolean)默认值是false;

            类型的引用类型(类、数组、接口、String)默认值是null。

2.2、数组初始化方式

1、静态初始化

初始化时由程序员显式指定每个数组元素的初始值,系统决定数组的长度

    1. arrayName = new type[]{element1,element2,element3...}

       int[] arr2;
       arr2 = new int[]{1,2,3}; 

   2 简化的静态初始化方式   

       type[] arrayName = {element1,element2,element3...};

       int[] arr1 = {1,2,3};

2、动态初始化

初始化时由程序员指定数组的长度,由系统初始化每个数组元素的默认值。

    arrayName = new type[length];

   int[] arr3 = new int[3];

注意:不要同时使用静态初始化和动态初始化,也就是说,不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。

    一旦数组完成初始化,数组在内存中所占的空间将被固定下来,所以数组的长度将不可改变。

3、区别

        String[] str = {"1","2","3"}; 这种形式叫数组初始化式(ArrayInitializer),只能用在声明同时赋值的情况下。

         String[] str = new String[]{"1","2","3"}是一般形式的赋值,=号的右边叫数组字面量,数组字面量可以用在任何需要一个数组的地方。

方式一:
int[] arr1 = {1,2,3};//正确

int[] arr11;
arr11 = {1,2,3};//错误写法 编译不同过


方式二和方式三,声明和内存分配是分开的,这一步是在栈空间分配一个引用,存放的是一个引用,null
方式二直接赋值
int[] arr2; 
arr2 = new int[]{1,2,3};
方式三 默认初始化,基本类型是 0 布尔类型是 false 引用类型为null
int[] arr3;
arr3 = new int[3];
到这一步的时候jvm才开始在内存堆区域分配空间,并赋值

            

  • 33
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值