首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

静态代码和非静态代码区别

静态代码在第一次创建对象的时候执行一次,之后再也不执行。 非静态代码每创建一次对象就执行一次。...("静态代码"); } { System.out.println("非静态代码"); } } public class TestStatic{ public...非静态代码 构造代码 ==========分隔符================ 非静态代码 构造代码 当调用一个类里面的静态方法的时候,静态代码也会执行 例子 class...("测试静态代码会不会执行"); } static { System.out.println("静态代码"); } { System.out.println...Cat.f(); } } 执行结果 静态代码 测试静态代码会不会执行 注意程序的唯一入口main方法也是静态方法 它同样也遵循静态方法的规则,所以它由系统在创建对象之前就调用.

1.2K50
您找到你想要的搜索结果了吗?
是的
没有找到

(转) Java 静态代码和非静态代码

参考:http://uule.iteye.com/blog/1558891 Java中的静态代码是在虚拟机加载类的时候,就执行的,而且只执行一次。...如果static代码有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码只会被执行一次。 非静态代码是在类new一个实例的时候执行,而且是每次new对象实例都会执行。...代码的执行顺序 主调类的静态代码 对象父类的静态代码 对象的静态代码 对象父类的非静态代码 对象父类的构造函数 对象的非静态代码 对象的构造函数 示例代码 public class StaticBlockTest1...{ //主调类的非静态代码 { System.out.println("StaticBlockTest1 not static block"); }...Parent static block //父类的静态代码 Children static block //子类的静态代码 Parent not static

1.1K10

普通代码 静态代码 构造代码......傻傻分不清

代码的定义 在Java中,使用{ }括起来的代码被称为代码代码的分类 根据其位置和声明方式不同: ?...图片来自网络 面试题: 构造静态执行顺序 在上面分类描述中,我们已经给出了答案;接下来我们跑一跑测试代码,根据代码执行结果来验证这些答案 无继承关系 package com.milo.java7...静态代码 作用有两个:(1)给类的静态变量赋值;(2)声明静态变量; 作用在类的Body中,对类中的静态变量初始化: public class APP { static int x, y; /...args) { x--; myMethod(); System.out.println(x + y + ++x); } } 输出:23 注意,如果静态代码中的代码改为...: static { int x = 5; // 声明一个静态变量 } 则只是在声明静态变量,而且这个静态变量的作用域只在这个代码中,而不是进行初始化,最后的输出结果是3。

92920

Java——代码(普通、构造静态

代码编写中,使用{}声明的程序就属于代码,而根据其出现的位置,及声明关键字的不同,分为四种:普通代码、构造静态、同步代码(多线程中涉及) 1、普通代码 在方法中使用{}定义起来的一段代码...将普通代码中提取到类中使用,就形成了构造代码。...3、静态代码 如果代码中使用了static关键字定义,则该代码静态代码: 在非主类中定义的; 在主类中定义的; 【举例】:非主类中定义的静态 protected void onCreate...由以上运行可知,静态最先执行,并且只执行一次。...以上可以发现,静态优于主方法先执行。 4、总结 代码对于现阶段开发意义不大,了解即可。

1.9K10

关于java中普通代码、构造代码静态代码

常用于对类的初始化,每个静态代码只会执行一次(类在内存中加载时执行,类在内存中加载后类已经存在)由于JVM在加载类时会执行静态代码,所以静态代码先于主方法执行。...如果类中包含多个静态代码,那么将按照"先定义的代码先执行,后定义的代码后执行。 ps:1 静态代码不能存在于任何方法体内。...2 静态代码不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。 构造:直接在类中定义且没有加static关键字的代码称为{}构造代码。...1"); } { System.out.println("这里是A中的普通代码2"); } } 执行结果: 这里是静态代码 这里是普通代码A 这里是A中的普静态代码1 这里是A中的普通代码...1 这里是A中的普通代码2 这里是普通代码B 优先级总结:静态代码>Main()>构造代码

1.3K30

Java中静态代码和构造代码

静态代码:     在java中使用static关键字声明的代码静态用于初始化类,为类的属性初始化。每个静态代码只会执行一次。...由于JVM在加载类时会执行静态代码,所以静态代码先于主方法执行。 注意: 静态代码不能存在于任何方法体内。 静态代码不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。...静态代码、构造代码、构造函数同时存在时的执行顺序: 静态代码 > 构造代码 > 构造函数; 下面来举几个例子说明: 构造方法 public class Test { static...第二构造 构造方法 第一代码 第二构造 构造方法 第一代码 第二构造 构造方法 */ 静态代码 /*静态代码:在java中使用static关键字声明的代码。...静态用于初始化类,为类的属性初始化。 每个静态代码只会执行一次。 由于JVM在加载类时会执行静态代码,所以静态代码先于主方法执行。

1.1K10

Java中静态代码、构造代码、构造函数、普通代码

("静态代码"); } }   ②、执行时机   静态代码在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码以及构造函数。...如果一个类中有多个静态代码,会按照书写顺序依次执行。后面在比较的时候会通过具体实例来证明。   ③、静态代码的作用   一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码。...比如一个项目启动需要加载的很多配置文件等资源,我们就可以都放入静态代码中。   ④、静态代码不能存在任何方法体中   这个应该很好理解,首先我们要明确静态代码是在类加载的时候就要运行了。...对于静态方法,在类加载的时候,静态方法也已经加载了,但是我们必须要通过类名或者对象名才能访问,也就是说相比于静态代码静态代码是主动运行的,而静态方法是被动运行的。   ...⑤、静态代码不能访问普通变量   这个理解思维同上,普通变量只能通过对象来调用,是不能放在静态代码中的。

1.3K20

Java中静态代码、构造代码、构造函数、普通代码

使用static{//Code...}的格式代表静态代码。...一个类中若有多个静态代码,则顺序执行它们。另一方面,静态代码也不能访问非静态域。  静态代码的作用:一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码。...2.构造代码  Java使用{//Code...}的格式代表构造代码,对比于静态代码,其只少了static关键字的修饰。...%d个执行\n", ++i); } } 控制输出: 静态代码代码第1个执行 执行main方法 构造代码第2个执行 构造函数第3个执行 普通代码第4个执行 执行顺序:  静态代码->...1个执行 父类的静态代码第2个执行 子类的静态代码第3个执行 父类的父类的构造函数第4个执行 父类的构造函数第5个执行 子类的构造函数第6个执行  根据Demo-2代码实验可知,涉及继承的代码执行顺序是这样的

1.5K20

静态代码、非静态代码、构造函数三者执行顺序

主要探讨一下关于静态代码,非静态代码,构造函数的执行顺序。 如有错误,欢迎指出。 首先: 静态成员变量和静态代码的优先级是一样的,先定义的先执行。...在创建一个对象的时候会执行非静态代码和构造函数 再者是执行顺序: /* * *(1)父类静态成员和静态初始化,按在代码中出现的顺序依次执行。...* *(2)子类静态成员和静态初始化,按在代码中出现的顺序依次执行。 * *(3)父类实例成员和实例初始化,按在代码中出现的顺序依次执行。 * *(4)执行父类构造方法。...,变成第二步执行 //非静态代码 { System.out.println("A"); } } 输出: B A A 所以验证: 1.静态成员变量和静态代码的优先级是一样的...2.在创建一个对象的时候会执行非静态代码和构造函数。

45820

为什么要用静态代码,怎么使用静态代码

1、为什么要用静态代码 随着类的加载而执行,而且只执行一次,不需要每次调用这个变量都给它赋值 2、静态代码是什么 静态代码优先级高于非静态代码静态代码要先执行,只执行一次,执行完即销毁。...{ static { System.out.println("BlockTest静态代码执行"); } { System.out.println...BlockTest c9 = new BlockTest(); } } class Coder { static { System.out.println("coder静态代码...("coder无参构造执行"); } } 结果: BlockTest静态代码执行 main coder静态代码 Coder构造代码执行 coder无参构造执行 Coder构造代码执行 coder...无参构造执行 Coder构造代码执行 coder无参构造执行 Coder构造代码执行 coder无参构造执行 Coder构造代码执行 coder无参构造执行 Coder构造代码执行 coder无参构造执行

40810

Java中类的静态代码、构造代码、构造方法、普通代码

静态代码 a.定义格式 在Java类(静态代码不能定义在方法中)中,通过static关键字和{}声明的代码: public class Person { static{...System.out.println("静态代码"); } } b.执行时机 静态代码在类加载的时候执行,并且仅执行一次,如果一个类中有多个静态代码,将按照书写顺序执行。...c.静态代码的作用 一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码。比如一个项目启动需要加载的很多配置文件等资源,就可以都放入静态代码中。...d.静态代码不能访问普通成员变量,只能访问静态成员变量 构造代码 a.定义格式 在Java类中通过{}声明的代码: public class Person { static{...图1-1 代码清单1-1运行结果 父类和子类执行顺序   首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有构造代码,如果有就执行父类的构造代码

3.4K10

Java 静态代码,构造代码,构造函数执行顺序

静态代码 关键字static,实例如下: public class FileUploadUtils { static { try { InputStream in...具体说,静态代码是由类调用的。...类调用时,先执行静态代码,然后才执行主函数的,总的来说,静态代码是和类一起的,优先级最高,类加载的同时,静态代码同时也执行,但只执行一次,所以作用一般是用来加载一些配置代码,或者加载某些文件配置。...构造代码 构造代码的作用同样是给对象进行初始化。对象一建立就运行构造代码了,而且优先于构造函数执行。...也就是说,构造代码中定义的是不同对象共性的初始化内容。 运行结果: 可以看出来,静态代码只执行一次,而每次创建对象都会调用共同的构造代码,而构造函数也只在创建对象时执行该对象的构造函数。

75810

Java static(三) – 静态代码

静态代码 static代码也叫静态代码,是在类中独立于类成员的static语句,可以有多个,位置可以随便放,它不在任何的方法体内 JVM加载类时会执行这些静态代码,如果static代码有多个...,JVM将按照它们在类中出现的先后顺序依次执行它们 每个静态代码只会被执行一次 实例说明 // 父类 public class ParentStatic { private static...String pstr = "父类静态变量"; static { System.out.println("执行父类静态代码:" + pstr); }..."; static { System.out.println("执行子类静态代码:" + cstr); } public ChildStatic(...,便执行父类的静态代码(父类有父类还会往上找父类静态) 父类ParentStatic加载完成,继续加载子类ChildStatic,发现子类有静态代码,执行子类静态代码 类ChildStatic加载完成

24730

静态代码、构造代码以及构造函数的加载顺序

这是子类的静态代码 before new Child() 这是父类的构造代码 这是父类的构造方块 这是子类的构造代码 这是子类的构造方法 结论: 首先,静态代码,...加载的时候,将静态成员变量(类变量),构造代码静态代码以及静态方法加载到方法区的静态部分,非静态方法以及构造方法加载到方法区的非静态部分。...总结:静态代码是最先执行的,然后执行父类的构造代码以及父类的构造方法,接着去执行子类的非静态代码以及子类的构造方法。...顺序为:初始化父类静态代码->初始化子类静态代码->初始化父类构造代码->初始化父类构造方法->初始化子类构造代码->初始化子类构造方法  根据输出结果,"before new Child()..."是在是在执行完静态代码以后然后才输出的,这就证明静态代码是不需要创建对象就可以执行的,只要加载完类文件就可以执行,而构造代码以及构造方法是在执行创建对象的时候才进行初始化的。

69220

java_自由静态和非静态

java中的自由分为两种: 静态和非静态 静态: 1 public class Test { 2 static int x = 10; 3 //静态:静态的执行时机是在class...文件装载的时候;静态只会执行一次 4 //多个静态的时候,按出现顺序执行 5 static{ 6 x+=5; 7 } 8 } 非静态: 1 public class...Test { 2 //非静态:每次初始化一个对象,都会导致一次非静态的执行;在构造函数执行之前执行 3 //继承关系:父类的非静态->父类的构造函数->自己的自由->自己的构造函数...:静态的执行时机是在class文件装载的时候;静态只会执行一次 5 //多个静态的时候,按出现顺序执行 6 static{ 7 x+=5; 8 }...:每次初始化一个对象,都会导致一次非静态的执行;在构造函数执行之前执行 21 //继承关系:父类的非静态->父类的构造函数->自己的自由->自己的构造函数 22 { 23

1.1K20

static静态代码加载和执行

静态代码,非静态代码,无参构造,有参构造,这些代码片段分别在什么时候加载执行?...package com.java4all.test10; public class Father { static { System.out.println("father的静态代码...son的静态代码 father的非静态代码 father的构造方法 son的非静态代码 son的构造方法 创建son对象后 4.如果父类没有无参构造,只有有参构造 这种情况,子类需要在构造方法中显示的调用父类的有参构造...son的静态代码 father的非静态代码 father的带参构造方法 son的非静态代码 son的构造方法 创建son对象后 5.如果父类没有无参构造,也没有有参构造 子类的构造只管自己就好,...6.总结 总的来说,按照如下的大顺序调用: 父类静态代码 子类静态代码 父类非静态代码 父类构造函数 子类非静态代码 子类构造函数

54220
领券