最近,在面试题或者面试上老是,提到静态块,静态变量,就仔细了解了下。

Java类里普遍存在静态快,构造块,构造函数,具体什么关系呢?

静态块:用static申明,JVM加载类时执行,仅执行一次

构造块:类中直接用{}定义,每一次创建对象时执行

public class Study_static {public static char text = 'a';  //静态对象public Study_static(){         //构造函数System.out.println('c');}{                              //构造块System.out.println('b');}static{                         //静态块System.out.println(text);}public static void main(String[] args){Study_static a = new Study_static();}
}

输出结果:

执行顺序优先级:静态块>main()>构造块>构造方法

所以先执行静态块,再tudy_static a = new Study_static();该语句创建对象,则又会调用构造块,输出构造块,再执行构造函数。

然而,这里的静态块,并不是仅仅静态块,而是静态域,包含了静态变量,静态块,这两者的执行顺序就是按照位置顺序进行。

总结:

1.静态块其实就是给类初始化的,而构造代码块是给对象初始化的。

2.静态代码块只会运行一次

3.静态块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
一个类中可以有多个静态代码块,执行顺序按照位置决定。

那么对于继承情况呢?

public class Study_static {public static char text = 'a';  //静态对象public Study_static(){         //构造函数System.out.println('c');}{                              //构造块System.out.println('b');}static{                         //静态块System.out.println(text);}
}
public class Study_static2 extends Study_static{public static String text2 = "a1";public Study_static2(){System.out.println("c2");}{System.out.println("b2");}static{System.out.println(text2);}public static void main(String[] args){Study_static2 a = new Study_static2();}
}

结果:

当涉及到继承时,按照如下顺序执行:

  1. 执行父类的静态代码块,并初始化父类静态成员变量
  2. 执行子类的静态代码块,并初始化子类静态成员变量
  3. 执行父类的构造代码块,执行父类的构造函数,并初始化父类普通成员变量
  4. 执行子类的构造代码块, 执行子类的构造函数,并初始化子类普通成员变量

java构造块与静态块相关推荐

  1. 代码块(局部块、构造块、静态块、同步块)

    局部代码块.构造代码块.静态代码块.同步代码块 一.什么是代码块 在Java中,使用{}括起来的代码被称为代码块 二.代码块分类 局部代码块 含义:局部代码块就是普通的代码块, 出现位置:类和方法中出 ...

  2. java代码块是对象吗_面向对象(Java中普通代码块,构造代码块,静态代码块区别及代码示例)...

    //静态代码块:在java中使用static关键字声明的代码块.静态块用于初始化类,为类的属性初始化.每个静态代码块只会执行一次.由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行. ...

  3. java 构造块_java中构造方法、普通块、静态代码块、构造块的执行顺序

    静态块.构造块.构造方法.普通块 静态块:在类中用"{}"括号括起来,并在括号前用static修饰的块为静态块;静态块在类加载时候被调用,并且在整个生命中只调用一次 同步块 使用s ...

  4. java代码块执行顺序_Java笔记 | Java代码块执行顺序测试

    最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...

  5. 6.java 代码块

    代码块 在java中用{}括起来的称为代码块,代码块可分为以下四种: 普通代码块 构造代码块 静态代码块 同步代码块 普通代码块 在方法或语句中出现的{}就称为普通代码块.普通代码块和一般语句的执行顺 ...

  6. java中this_夯实Java基础系列7:一文读懂Java 代码块和执行顺序

    目录 #java中的构造方法 #构造方法简介 #构造方法实例 #例-1 #例-2 #java中的几种构造方法详解 #普通构造方法 #默认构造方法 #重载构造方法 #java子类构造方法调用父类构造方法 ...

  7. java 代码块_详解java中的四种代码块

    在java中用{}括起来的称为代码块,代码块可分为以下四种: 一.简介 1.普通代码块: 类中方法的方法体 2.构造代码块: 构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行. ...

  8. Java笔记——Java代码块的执行顺序

    Java代码块的执行顺序 Java程序中代码块的执行顺序对于学习Java的人来说是必不可少需要掌握的. 代码块 在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为: 局 ...

  9. java代码块的定义_Java几种代码块的定义与常见问题

    Java几种代码块的定义与常见问题 代码块,通俗的说就是用一对"{}"括起来的一段代码,代码块可以根据位置分为以下几类: 局部代码块:局部代码块就是指直接在方法或是语句中定义的代码 ...

  10. java 代码块的作用_4种Java代码块的作用讲解

    4种Java代码块的作用讲解 时间:2017-06-28     来源:华清远见JAVA学院 今天华清Java学院小编要和大家分享的是Java代码块的作用,代码块是一种常见的代码形式,他用大括号&qu ...

最新文章

  1. python字典(dict)+常用方法操作+列表、元组、集合、字典的互相转换
  2. 5-Python3从入门到实战—基础之数据类型(列表-List)
  3. 【转帖】Windows下PostgreSQL安装图解
  4. 利用Service Fabric承载eShop On Containers
  5. LeetCode 1310. 子数组异或查询(前缀异或)
  6. 基于CAS实现SSO单点登录
  7. Python企业微信机器人
  8. 为什么VS提示SurfFeatureDetector不是cv的成员函数
  9. 神马?写了3年代码,连分布式缓存都没用过~
  10. Centos6.5 安装 Mysql-5.6.41
  11. 机器学习开篇之机器学习的分类
  12. SCI收录的IEEE期刊
  13. 用计算机亩换算成平方,平方换算成亩怎么算(平方米换算亩计算器)
  14. php 503解决办法,php设置页面返回503状态-php设置503http状态的方法-吾爱编程网
  15. 小常识:保险中的“保全”是什么?
  16. 酷狗音乐9.2.0_酷狗音乐安卓版 v9.2.0下载 - 艾薇下载站
  17. vue的组件通信方式
  18. caffeine本地缓存的使用和详解
  19. Win2012 R2 安装Exchange Server2016
  20. 数据仓库基础3-整明白粒度

热门文章

  1. 方舟非专用服务器稳定吗,方舟非专用服务器
  2. BF算法与KMP算法
  3. chrome浏览器打开网页排版错乱
  4. 高德地图react版本开源库react-amap与react-amap-next分析
  5. html自动写对联,HTML 实现网站对联广告位
  6. 协方差与相关系数介绍
  7. 拿姐姐身份证登记结婚竟然成了!婚姻户籍信息共享难在哪儿
  8. python爬取拉勾网_python 爬取拉勾网实战
  9. 解决方案:Browserslist:caniuse-lite is outdated. Please run next command `npm update`
  10. P1116 车厢重组