本文内容:

  • 局部代码块
  • 构造代码块
  • 静态代码块
  • 补充

首发日期:2018-03-28


局部代码块:

局部代码块用于限制变量的生命周期,如果希望某些变量在某一过程之后直接失效而不希望被后面继续操作时,可以使用局部变量来限制变量的生命周期带局部代码块中


构造代码块:

  • 构造函数只对对应的对象进行初始化,构造代码块给类的所有对象进行初始化。
  • 由于构造代码块给类的所有对象进行初始化,所以对于每个对象都要初始化成一样值的变量,可以防止构造代码块中初始化。
class Person{
String gender;
int age;
{ //构造代码块
System.out.println("构造代码块运行阶段");
gender="男";
}
Person(){//构造函数
System.out.println("构造函数Person()运行阶段");
}
Person(int age){//构造函数
System.out.println("构造函数Person(int age)运行阶段");
this.age=age;
} } public class Demo {
public static void main(String[] args) {
Person p1=new Person();
System.out.println(p1.gender);
Person p2=new Person(18);
System.out.println(p2.gender);
}
}

上述代码结果:

构造代码块运行阶段
构造函数Person()运行阶段

构造代码块运行阶段
构造函数Person(int age)运行阶段

构造代码块的好处的例子:

构造函数版本:

构造代码块版本:


静态代码块:

  • 静态代码块与构造代码块不同的是,它只执行一次,用于对整个类进行初始化,通常是对类变量进行初始化处理。
  • 静态代码块中只能修改类变量。
  • 静态代码块的执行比主函数要早。
  • 有时候因为静态代码块只执行一次。所以有时候会用来“显示程序流程”。
class Person{
static String gender;
int age;
static {
System.out.println("静态代码块执行完成");
gender="男";//更改的变量只能是类变量
}
Person(){//构造函数
System.out.println("构造函数Person()运行阶段");
}
Person(int age){//构造函数
System.out.println("构造函数Person(int age)运行阶段");
this.age=age;
}
} public class Demo { public static void main(String[] args) {
Person p1=new Person();
System.out.println(p1.gender);
Person p2=new Person(18);
System.out.println(p2.gender); } }

上述代码执行结果:

静态代码块执行完成
构造函数Person()运行阶段

构造函数Person(int age)运行阶段

补充:

  • 各个初始化块的运行顺序:静态代码块-》构造代码块-》构造方法

Java:构造代码块,静态代码块的更多相关文章

  1. java中父类子类静态代码块、构造代码块执行顺序

    父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...

  2. 【code block】局部代码块+构造代码块+静态代码块

    1.局部代码块 位置:位于类的方法中 表示方法:{} 作用:控制变量的生命周期,减少内存消耗 demo: public class LocalCode { public static void mai ...

  3. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  4. JAVA程序执行顺序(静态代码块》非静态代码块》静态方法》构造函数)

    总结:静态代码块总是最先执行. 非静态代码块跟非静态方法一样,跟对象有关.只不过非静态代码块在构造函数之前执行. 父类非静态代码块.构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非 ...

  5. Java子父类间静态代码块、非静态代码块、构造方法的执行顺序

    子类A继承父类B,A a=new A(); 正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A ...

  6. Java--普通代码块静态代码块执行顺序

    class B { public B() { super(); System.out.println("构造器B"); } { System.out.println("普 ...

  7. 非静态代码块(非static初始化块)&静态代码块(static初始化块)

    非静态代码块: TestOrder: package com.aff.singleton; /* 类的第四个成员:初始化块(代码块) 代码块: 如果有修饰的话只能使用static 分类:非静态代码块: ...

  8. Java中普通代码块,构造代码块,静态代码块区别及代码示例

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...

  9. Java中普通代码块,构造代码块,静态代码块执行顺序

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...

  10. 【Java学习笔记之十七】Java中普通代码块,构造代码块,静态代码块区别及代码示例分析

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 //普通代码块:在 ...

随机推荐

  1. C语言中volatile的作用和使用方法

    在程序设计中,尤其是在C语言.C++.C#和Java语言中,使用volatile关键字声明的变量或对象通常具有与优化.多线程相关的特殊属性. 通常,volatile关键字用来阻止(伪)编译器认为的无法 ...

  2. Win10手记-为应用集成日志工具Logger

    日志工具由来已久,是很受大家欢迎的debug工具.其中.NET平台上很出名的是log4net,但是由于Windows 10通用应用项目没有了System.Configuration引用,所以也就不能很 ...

  3. [EXP]Cisco RV110W - Password Disclosure / Command Execution

    #!/usr/bin/env python2 ##### ## Cisco RV110W Password Disclosure and OS Command Execute. ### Tested ...

  4. tf.transpose()的用法

    一.tensorflow官方文档内容 transpose( a, perm=None, name='transpose' ) Defined in tensorflow/python/ops/arra ...

  5. Android的Touch事件分发机制简单探析

    前言 Android中关于触摸事件的分发传递是一个很值得研究的东西.曾不见你引入了一个ListView的滑动功能,ListView就不听你手指的指唤来滚动了:也不知道为啥Button设置了onClic ...

  6. C# sqlhelper 整理

    以下代码是参考几个不同人的写法总结写成的,肯定还有很大的优化空间,暂存该版本:有建议的欢迎提出: using System; using System.Collections.Generic; usi ...

  7. Hibernate懒加载解析

    Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来 ...

  8. flask 压缩json

    这样返回的json会被压缩

  9. 【Shell实战】定期清理日志文件的shell脚本

    功能描述:清理/var/log/路径下的messages历史日志文件(messages-date),但不清理messages文件本身 依赖要求:服务器上安装了bc模块 # clean_logs.sh ...

  10. HAPRoxy(一):HAProxy基本配置、调度算法与tcp、http、heath模式配置示例

    一.HAProxy安装 1.HAProxy简单介绍 HAProxy虽然名字前有HA,但它并不是一款高可用软件,而是一款用于实现负载均衡的软件,可实现四层与七层的负载均衡. 2.yum安装HAProxy ...