java中静态代码块(static{...}),局部代码块(方法中{...}),构造代码块(类中{...})区别。

1、局部代码块:

  格式:在方法中{局部代码块执行语句}

  局部代码块,又叫普通代码块。它是作用在方法中的代码块。

  作用:是控制变量的生命周期。

  在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间。因此就有了局部代码块。

2、构造代码块:

格式:在类中{构造代码块执行语句}

作用:就是给所有对象进行初始化。

注意几点:

1)每次创建对象他都会执行。

2)构造代码快是优于构造函数执行。

3)构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,

因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。

也就是说,构造代码块中定义的是不同对象共性的初始化内容。

3、静态代码块:

格式:在类中static{静态代码块执行语句}

作用:就是对类进行初始化。

  当类进入内存时,首先进行静态代码加载,例如静态代码块,用static 修饰的变量,函数等。静态代码块用于初始化类。构造函数是对对象进行初始化,

  而静态代码块可以对类进行初始化,就如在静态代码块中把静态变量 num 修改他的值。而且在一些不需要对类实例化的场合,静态代码块也可以非常有用。

原文地址:https://www.cnblogs.com/xcggdd/p/8438220.html

时间: 2024-10-12 17:15:48

java中静态代码块(static{...}),局部代码块(方法中{...}),构造代码块(类中{...})区别。的相关文章

java的toString是一个什么方法,为什么我在类中重写他,当输出该类对象的时候却能显示里面的结果?(转)

例如:我输出的是一个对象,却调用到了toString方法 public class TTT { private String id; private String name; public void setId(String id) { this.id = id; } public void setName(String name) { this.name = name; } public String toString() { return "学号:" + id + "\n

Python的__init__, __new__魔法方法以及在__metaclass__元类中的使用

Python中类的实例化是由Python解释器先后调用__new__,__init__这两个魔法方法来完成的,前者用来完成实例化后的对象的"骨架"(比如,解释器会为对象分配地址,并返回一个指向该对象的引用值,该引用值会被紧接着传递给__init__函数),后者用" self.属性名 = 属性值 "这样的方式对实例化的对象进行"填充". 1.__new__ 在一个类(假设为类A)实例化出一个对象的过程中,__new__()方法先于__init__(

shiro + struts2 在action 中使用 shiro 注解 @requiresPermissions 报错: 方法找不到,类初始失败

06:36:34,405 ERROR http-8084-2 dispatcher.Dispatcher:38 - Exception occurred during processing request: $Proxy15.user_() java.lang.NoSuchMethodException: $Proxy*.user_() at java.lang.Class.getMethod(Class.java:1605) at org.apache.struts2.interceptor.

Java中普通代码块,构造代码块,静态代码块的代码示例及区分

//执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 <span style="font-size:12px;">//普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--"先出现先执行" public class CodeBlock01{ public static

Java中静态代码块、构造代码块的区别

来源:https://liuyanzhao.com/5303.html 直接在类中定义且没有加static关键字的代码块称为{}构造代码块. 构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数. 静态代码块:在java中使用static关键字声明的代码块.静态块用于初始化类,为类的属性初始化.每个静态代码块只会执行一次.由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行. 注意:1 静态代码块不能存在于任何方法体内.2 静态代码块不能直

Java中静态代码块、构造代码块、构造函数、普通代码块(转载)

转载自:http://www.cnblogs.com/ysocean/p/8194428.html 目录 1.静态代码块 ①.格式 ②.执行时机 ③.静态代码块的作用 ④.静态代码块不能存在任何方法体中 ⑤.静态代码块不能访问普通变量 2.构造代码块 ①.格式 ②.执行时机 ③.构造代码块的作用 3.构造函数 4.普通代码块 5.执行顺序 6.父类和子类执行顺序 在Java中,静态代码块.构造代码块.构造函数.普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序

java中-静态代码块、构造代码块、构造方法的联系

例如该题: 1 class Fu{ 2 static { 3 System.out.println("这是父类静态代码块"); 4 } 5 { 6 System.out.println("这是父类构造代码块"); 7 } 8 public Fu(){ 9 System.out.println("这是父类构造方法"); 10 } 11 } 12 class Zi extends Fu{ 13 static { 14 System.out.print

java学习中,匿名函数、构造方法、构造代码块、构造方法中调用构造方法(java 学习中的小记录)

java学习中,匿名函数.构造方法.构造代码块.构造方法中调用构造方法(java 学习中的小记录) 作者:王可利(Star·星星) 匿名函数 匿名对象:没有名字的对象 匿名对象使用的注意点: 1.一般不会用匿名对象给属性赋值,无法获取属性值,每次new 都是一个新的对象. 2.匿名对象永远都不可能是一个对象. 如:person new().name = "星星":是不行的 匿名对象的好处:书写简单. 匿名对象使用的场景: 1.如果一个对象调用一个方法一次的时候,就可以用匿名对象来调用.

Java之静态代码块

有一些情况下,有些代码需要在项目启动的时候就执行,则需要使用静态代码块,这种代码是主动执行的.Java中的静态代码块是在虚拟机加载类的时候,就执行的,而且只执行一次.如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次. 代码的执行顺序: 主调类的静态代码块 对象父类的静态代码块 对象的静态代码块 对象父类的非静态代码块 对象父类的构造函数 对象的非静态代码块 对象的构造函数 //静态代码块static{ ...;} //静态代码块{ ...;