[Java] 数据的初始化

一、变量的分类

局部变量:在方法体或初始化块以及for等结构中声明的变量,java不会为这些变量赋初值

成员变量:体现在面向对象语言中的变量,java会按照默认初值为这些变量赋初值(final变量需要声明就赋值)

二、成员变量初始化
数据成员默认值

特别的,char(\u0000 空值)、boolean(false)、对象引用(null)

声明时初始化

成员变量可以被能产生值的表达式赋值,在该成员变量前未声明的变量不可赋值给这个成员变量,但static变量可以,因为static变量最先初始化或被赋值。

class test{
	int a = 1;
    int b = c;   // 报错
    int b = static d;  // 可以
    int c = 2;
    static int d = 3;
}
构造方法

用于初始化类的对象,方法名与类名相同,没有返回值类型。

class Animal{
	String name;
    int age;
    Animal(String name,int age){     // 构造方法1
		this.name = name;
        this.age = age;
    }
    Animal(String name){   // 构造方法2  与构造方法1 这种只有参数列表个数不同成为方法重载
		this.name = name;
    }
}
静态变量初始化

静态变量是类的数据成员,声明语句只会在第一次被使用时加载,全局共享一个变量,没有副本。

初始化块

静态初始化块:用static修饰只会在第一次被使用时加载,加载的顺序按照类定义的顺序执行,不会提前加载。

class Animal{
    String name;
	static{
		name = "未命名";
        age = 99;    // 不可执行
    }
    int age;
}

实例初始化块:每次生成对象时都会被加载

class Animal{
	String name;
    {
		name = "未命名";
        age = 99;    // 可行,static最先被声明
    }
    static int age;
}
初始化顺序

首次使用某个类时(创建对象或访问类的静态成员时),这个类才被载入内存。

  1. 类的所有静态变量分配空间并赋默认值
  2. 声明时的初始化赋值
  3. 静态初始化块赋值
  4. 创建对象时,为实例成员变量赋默认值,赋初始化值
  5. 实例初始化块赋值
  6. 构造方法赋值

不要吝惜点个赞哦~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值