2019-07-16 09:36:07 6204浏览
今天千锋扣丁学堂Java培训老师给大家分享一篇关于Java面试题static关键字的详细介绍,文中通过示例代码介绍的非常详细,下面我们一起来看一下吧。
package com.ant.param; public class StaticFieldDemo { public static void main(String[] args) { Foo f1 = new Foo(); Foo f2 = new Foo(); Foo f3 = new Foo(); System.out.println(f1.id + " " + f2.id + " " + f3.id ); } } class Foo{ int id; }
上面的代码我们很熟悉,根据Foo构造出的每一个对象都是独立存在的,保存有自己独立的成员变量,相互不会影响,他们在内存中的示意如下:
package com.ant.param; public class StaticFieldDemo { public static void main(String[] args) { Foo f1 = new Foo(); Foo f2 = new Foo(); Foo f3 = new Foo(); System.out.println(f1.id + " " + f2.id + " " + f3.id + " " + Foo.i); } } class Foo{ int id; static int i=0; public Foo(){ id = i++; } } 运行结果如下: 0 1 2 3
程序执行过程内存图如下所示:
第2步:继续加载类
第3步:继续加载类
package com.ant.param; public class StaticFieldDemo { private static void print(){ System.out.println("hello"); } public static void main(String[] args) { StaticFieldDemo.print(); } }
package com.ant.param; public class StaticBlockDemo { public static void main(String[] args) { Foo foo = new Foo(); } } class Foo{ //代码块,在创建对象的时候执行,使用很少,和构造器差不多 { System.out.println("创建对象了!"); } //静态代码块,在类加载期间执行,用于加载配置文件或者其他信息等 static{ System.out.println("类加载了!"); } public Foo(){ System.out.println("调用了构造器!"); } }
【关注微信公众号获取更多学习资料】 【扫码进入JavaEE/微服务VIP免费公开课】