java构造块与静态块
最近,在面试题或者面试上老是,提到静态块,静态变量,就仔细了解了下。
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();}
}
结果:
当涉及到继承时,按照如下顺序执行:
- 执行父类的静态代码块,并初始化父类静态成员变量
- 执行子类的静态代码块,并初始化子类静态成员变量
- 执行父类的构造代码块,执行父类的构造函数,并初始化父类普通成员变量
- 执行子类的构造代码块, 执行子类的构造函数,并初始化子类普通成员变量
java构造块与静态块相关推荐
- 代码块(局部块、构造块、静态块、同步块)
局部代码块.构造代码块.静态代码块.同步代码块 一.什么是代码块 在Java中,使用{}括起来的代码被称为代码块 二.代码块分类 局部代码块 含义:局部代码块就是普通的代码块, 出现位置:类和方法中出 ...
- java代码块是对象吗_面向对象(Java中普通代码块,构造代码块,静态代码块区别及代码示例)...
//静态代码块:在java中使用static关键字声明的代码块.静态块用于初始化类,为类的属性初始化.每个静态代码块只会执行一次.由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行. ...
- java 构造块_java中构造方法、普通块、静态代码块、构造块的执行顺序
静态块.构造块.构造方法.普通块 静态块:在类中用"{}"括号括起来,并在括号前用static修饰的块为静态块;静态块在类加载时候被调用,并且在整个生命中只调用一次 同步块 使用s ...
- java代码块执行顺序_Java笔记 | Java代码块执行顺序测试
最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...
- 6.java 代码块
代码块 在java中用{}括起来的称为代码块,代码块可分为以下四种: 普通代码块 构造代码块 静态代码块 同步代码块 普通代码块 在方法或语句中出现的{}就称为普通代码块.普通代码块和一般语句的执行顺 ...
- java中this_夯实Java基础系列7:一文读懂Java 代码块和执行顺序
目录 #java中的构造方法 #构造方法简介 #构造方法实例 #例-1 #例-2 #java中的几种构造方法详解 #普通构造方法 #默认构造方法 #重载构造方法 #java子类构造方法调用父类构造方法 ...
- java 代码块_详解java中的四种代码块
在java中用{}括起来的称为代码块,代码块可分为以下四种: 一.简介 1.普通代码块: 类中方法的方法体 2.构造代码块: 构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行. ...
- Java笔记——Java代码块的执行顺序
Java代码块的执行顺序 Java程序中代码块的执行顺序对于学习Java的人来说是必不可少需要掌握的. 代码块 在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为: 局 ...
- java代码块的定义_Java几种代码块的定义与常见问题
Java几种代码块的定义与常见问题 代码块,通俗的说就是用一对"{}"括起来的一段代码,代码块可以根据位置分为以下几类: 局部代码块:局部代码块就是指直接在方法或是语句中定义的代码 ...
- java 代码块的作用_4种Java代码块的作用讲解
4种Java代码块的作用讲解 时间:2017-06-28 来源:华清远见JAVA学院 今天华清Java学院小编要和大家分享的是Java代码块的作用,代码块是一种常见的代码形式,他用大括号&qu ...
最新文章
- python字典(dict)+常用方法操作+列表、元组、集合、字典的互相转换
- 5-Python3从入门到实战—基础之数据类型(列表-List)
- 【转帖】Windows下PostgreSQL安装图解
- 利用Service Fabric承载eShop On Containers
- LeetCode 1310. 子数组异或查询(前缀异或)
- 基于CAS实现SSO单点登录
- Python企业微信机器人
- 为什么VS提示SurfFeatureDetector不是cv的成员函数
- 神马?写了3年代码,连分布式缓存都没用过~
- Centos6.5 安装 Mysql-5.6.41
- 机器学习开篇之机器学习的分类
- SCI收录的IEEE期刊
- 用计算机亩换算成平方,平方换算成亩怎么算(平方米换算亩计算器)
- php 503解决办法,php设置页面返回503状态-php设置503http状态的方法-吾爱编程网
- 小常识:保险中的“保全”是什么?
- 酷狗音乐9.2.0_酷狗音乐安卓版 v9.2.0下载 - 艾薇下载站
- vue的组件通信方式
- caffeine本地缓存的使用和详解
- Win2012 R2 安装Exchange Server2016
- 数据仓库基础3-整明白粒度
热门文章
- 方舟非专用服务器稳定吗,方舟非专用服务器
- BF算法与KMP算法
- chrome浏览器打开网页排版错乱
- 高德地图react版本开源库react-amap与react-amap-next分析
- html自动写对联,HTML 实现网站对联广告位
- 协方差与相关系数介绍
- 拿姐姐身份证登记结婚竟然成了!婚姻户籍信息共享难在哪儿
- python爬取拉勾网_python 爬取拉勾网实战
- 解决方案:Browserslist:caniuse-lite is outdated. Please run next command `npm update`
- P1116 车厢重组