JAVA基础复习(五) 类加载时机_static_代码块_面向对象思想

本文探讨了静态变量的全局影响、类加载时机,特别关注工具类和静态方法的作用。讲解了类的初始化顺序,包括默认初始化、代码块和构造器,强调了静态代码块在类加载和对象创建中的特殊地位。还讨论了如何利用静态代码块合理分配复杂赋值和共通逻辑,以及面向过程编程中的注意事项。
摘要由CSDN通过智能技术生成

 

 修改静态变量之后,全局都会被修改;(类名.属性 重新赋值)

---

 类加载时机:-->main方法,new对象,访问静态成员,静态对象,反射,继承

 ----------------------------------------------------

关键字:包

--

 

 -------

一个类中全部都是静态方法-->工具类

注意事项

 

 习题:

 最后  的时候,生成Demo的对象,要先加载成员变量,最后才构造器赋值;成员变量到Dog里会输出一句dog然后再构造器"hello word";

解:main触发Demo的类加载,-->静态Cat,Cat中-->静态Dog;print"dog";返回到Cat输出"cat";返回到main中,输出"hello world";然后new Demo-->成员变量赋值-->生成dog前调用空参构造器输出"dog";

然后调用Demo构造器输出"demo"

"dog

cat

hello world

dog

demo"

构造器之前的不一定要生成对象,而生成对象就一定执行构造器了

 -----------------------------------------------------------------------------------------

代码块

 

 

 默认初始化-->代码块/显示初始化(按照书写顺序执行)-->构造器

 

总结,代码块在反编译中不存在:编译器智能的把写在后的代码块或者显示赋值,放到了(所有)构造器中。 

因此,只要生成对象,构造代码块都会执行。

也就是说,构造代码块(非静态,静态只会执行一次)都会放到构造器里。

注意:调用this()构造器的时候,会先调用成员变量的显示赋值。

1.如果成员变量的赋值依赖于一个复杂算法,不是一个赋值就能执行的。就需要构造代码块进行赋值。因此需要静态代码块给静态变量赋值;

2.因为构造代码块都会被放入构造器中,并且每次生成对象都会执行(非静态代码块)。就可以将所有构造器要执行的共同部分放入构造代码块。(提取公因式)。

-----------------静态代码块------------------

创建对象一定类加载,类加载不一定创建对象。比如main方法的所在类,一定会类加载,但是不一定会创建对象;

 

 

 ---

就是一个类的内加载只会加载一次;

 导包--------------------------

 一个java下的同一个类 ,是同一个编译单元;

不导包就就近原则;

导入另一个包下(尤其是同名类),需要导包;

 

 

 ---面向过程

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值