Java-Day07

文章详细阐述了Java编程中静态方法不能引用非静态方法的原因,解释了类加载过程中的静态成员变量初始化和代码块执行顺序。同时,介绍了不同访问权限修饰符的作用,以及构造代码块与构造器的执行顺序。此外,还强调了静态代码块在类加载时执行的特点和静态成员方法的调用行为。
摘要由CSDN通过智能技术生成

关于在IDEA中遇到 无法从静态上下文中引用非静态方法

静态方法跟着类加载而加载,但是成员方法只有在创建对象时才能使用,所以当使用静态方法时,非静态方法不一定创建(加载)了,因此无法从静态方法中引用非静态方法。静态成员变量与其类似,在赋值时,静态成员变量不能对成员变量进行赋值。

代码块

代码块:由若干条Java语句组成,并且用一对大括号括起来的结构,叫代码块。

构造代码块内部属于局部变量,在里面定义变量,就是一个仅在构造代码块中生效的局部变量。

显式赋值和构造代码块赋值按照书写顺序进行赋值。创建对象后,先对变量默认初始化,然后构造代码块和显式赋值的代码只会执行一次,并不会执行多次。

**代码块跟着对象的创建而执行,在同一个类中,构造代码块总是先于构造器而执行。**

静态代码块随着类加载的过程而执行,静态代码块可以看作在类加载的过程中,会自动调用的静态方法!用于给静态成员变量赋值!

**静态成员方法只有调用才会执行,并不是在类加载过程中就执行。**

访问权限修饰符

访问级别由严格到宽松的顺序为:

1.private:只能在同一类中才能够访问,私有的,外面谁都不能用。

2.缺省(默认):同一包中的子类或者其他类能够访问,同包中都可以使用。

3.protected:不同包的子类能够访问。

4.public:不同包的其他类可以访问。

对于类的访问权限控制,只有public(对其他任意类都可见)---(缺省)不写任何关键字,表示同包下的其他类可见。

类中结构的访问权限修饰符则为以上4种。

***局部变量不能使用访问权限修饰符***

类的访问权限总是大于类中结构的访问权限

关于类加载、static执行顺序

访问类的静态成员,一定会出现该类的加载。

在类加载时,就已经触发了静态成员变量的默认初始化,然后按上下顺序对静态变量或者静态代码块来执行显式赋值或者代码块赋值。

普通成员变量只有在创建对象时才会创建并执行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值