stastic java_static JAVA

static 关键字:

使用static修饰的变量是类变量,属于该类本身,没有使用static修饰符的成员变量是实例变量,属于该类的实例。

由于同一个JVM内只对应一个Class对象,因此同一个JVM内的一个类的类变量只需要一块内存空间,但对应实例变量而言,该类每创建一次实例,就需要为实例变量分配一块内存空间.

实例变量的初始化时机:

1.定义实例变量时进行初始化;2,非静态初始化块中对实例变量指定初始值;3,构造器总对实例变量指定初始值。

非静态初始化块将先获得执行的机会,在构造器执行之前执行。

1 public classInitTest2 {3

4 public static voidmain(String[] args)5 {6 Cat cat = new Cat("Kitty",2);7 System.out.println(cat);8 Cat c2 = new Cat("Jatfield",3);9 System.out.println(c2);10 }11 }12

13 classCat14 {15 String name;16 intage;17

18 public Cat(String name,intage)19 {20 System.out.println("执行构造器!");21 this.name =name;22 this.age=age;23 }24

25 //非静态初始化块总是在构造器执行之前获得执行。

26 {27 System.out.println("执行非静态初始化块");28 weight=2.0;29 age =0;30 //System.out.println("weight =:"+weight);

31 }32

33 double weight = 2.3;34 publicString toString()35 {36 return "cat [name = "+name+" age = "+age+" ,weight = "+weight+"]";37 }38

39 }

运行:

执行非静态初始化块

执行构造器!

cat [name = Kitty age = 2 ,weight = 2.3]

执行非静态初始化块

执行构造器!

cat [name = Jatfield age = 3 ,weight = 2.3]

隐式调用和显式调用:

当调用某个类的构造器来创建JAVA对象时,系统总是会先调用父类的非静态初始化块进行初始化,这个调用是隐式执行的,而且父类的静态初始化块总是会先执行,接着会调用父类的一个或多个构造器执行初始化,这个调用既可以通过super显式调用,也可以隐式调用。

类的继承关系: Object

程序会按如下步骤进行初始化:

1),执行Object类的非静态初始化块(如果有的话)

2),隐式或显式调用Object类的一个或多个构造器进行初始化,

3),执行Parent累非静态初始化块(如果有的话)

4),隐式或显式调用Parent类的一个或者多个构造器进行初始化,

5),执行Mid类非静态初始化块(如果有的话)

6),隐式或显式调用Mid类的一个或多个构造器执行初始化,

7),执行Sub类非静态初始化块(if have)

8),隐式或显式调用Sub类的一个或多个构造器执行初始化。

只要在程序创建java对象,系统总会先调用最顶层父类的初始化操作,包括初始化块和构造器,然后依次向下调用所有父类的初始化操作,最终执行本类的初始化操作返回本类的实例。对于调用父类的哪个构造器进行初始化,则分:

1),子类构造器执行体的第一行代码使用super显式调用父类的 构造器,系统将根据super调用里出传入的实参列表来确定调用父类的哪个构造器;

2),子类构造器中使用this显式调用本类中重载的构造器,系统将根据this调用里传入的实参列表来确定本类的另一个构造器;

3),子类构造器中 既没有super 也没有this调用,系统将会在执行子类构造器之前,隐式调用父类无参数的构造器。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值