大佬,代码中方法块变量没定义也可以赋值吗?

本文讨论了Java中变量初始化的顺序,解释了成员变量在类实例化时的初始化过程,并对比了C++中的声明与定义。同时,介绍了内存模型中的栈内存、堆内存和方法区,强调了方法作为逻辑片段不占用内存,而对象的属性在内存中有独立存储。
摘要由CSDN通过智能技术生成

public class Demo {
    {
        a = 10;
    }
    int a=0;
    public static void main(String[] args) {
        System.out.println(new Demo().a);
    }

}
//a没定义为什么没报错

你有点误解。a是声明了的。
成员变量按照其声明的顺序会被初始化,这个动作发生在所有事件之前,也就是编译器会在使用类的时候立刻将非静态成员变量初始化。
然后才是非静态初始化块。(非静态初始化块执行的时候其实是放在构造函数里最先执行的,然后才是构造函数里的赋值语句)

所以你的代码其实可以改成这样:

public class Demo

{

    {

        a = 10;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值