java中代码块的认知
在以往面试题中,出现过很多次关于代码块执行顺序的题目,目前可算是搞清楚执行顺序了。看以下代码:
package com.itcast.code; public class BlockTest {
static{
System.out.println("我是BlockTest的静态代码块");
}
public BlockTest(){
System.out.println("我是BlockTest的无参构造");
}
{
System.out.println("我是BlockTest的构造代码块");
}
public static void main(String[] args) {
System.out.println("我是BlockTest的主函数。。。");
Coder c = new Coder();
Coder c2 = new Coder();
}
} class Coder{
static{
System.out.println("我是Coder的静态代码块。。。");
}
{
System.out.println("我是Coder的构造代码块。。。");
}
public Coder(){
System.out.println("我是Coder的无参构造。。。");
}
}
以上代码执行结果是:我是BlockTest的静态代码块 ------> 我是BlockTest的主函数。。。 ------> 我是Coder的静态代码块。。。 ------> 我是Coder的构造代码块。。。
------> 我是Coder的无参构造。。。 ------> 我是Coder的构造代码块。。。 -------> 我是Coder的无参构造。。。
静态代码块最先执行,因为它是随着类的加载而加载,优先于对象的存在。其次执行的是主函数,因为主函数是程序执行的入口,在静态代码块执行完之后必然是它执行。然后因为创建了Coder对象,那么它肯定会先执行它自己的静态代码块,接着调用构造代码块,最后再调用无参构造对对象进行初始化。
一个完美的执行流程就是这样,每天学习一点点,每天进步一点点,加油吧骚年!期待下一次的面试题能够完美解答!
java中代码块的认知的更多相关文章
- java中代码块和构造方法以及普通方法的代码执行顺序总结
说实话,这块真的不好理解啊~都怪jvm 执行顺序搞这么复杂,哼╭(╯^╰)╮ 但是 我们能怎么办,只能研究呗!!! !:首先,毫无置疑的,静态代码块在加载时就执行了,所以肯定是最先执行的.... ...
- 问题008:java 中代码块的风格有几种?单行注释可否嵌套?多行注释可否嵌套?
有两种:一种是次行风格,英文称为next-line 一种是是行尾风格,英文称为 end-of-line 举例 行尾风格 public class HelloWorld{ public static v ...
- Java中static块执行时机
Java中static块执行时机 演示例子 在使用static进行初始化的操作,怎么也执行不了!代码如下: public class StaticDemo { public static final ...
- java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序
java静态代码块/静态属性.构造块.构造方法执行.main方法.普通代码块的顺序 这也是在笔试中的一个重要的考点,就有一个输出语句让你写出输出的结果. 理论知识: 静态代码块是:属于类的,在类加载时 ...
- java 静态代码块和spring @value等注解注入顺序
java 静态代码块和spring @value等注解注入顺序 问题所在 先上代码 java方法 @Value("${mf.cashost}") public static S ...
- Java面向对象-代码块
Java面向对象-代码块 代码块主要就是通过{}花括号 括起来的代码: 主要分为 普通代码块 构造块 静态代码块三类.后面学到线程还有一个同步代码块,到时候再说: 普通代码块:仅仅是花括号括起来的代码 ...
- [Java基础]代码块及java反编译
块的作用域: 块(即复合语句)是指一对花括号括起来的若干条简单的java语句.块确定了变量的作用域.一个块可以嵌套在另一个块中.但是,在嵌套的两个块中声明同名的变量时应注意,块中变量申明在块外变量 ...
- java基础--java静态代码块和静态方法的区别、static用法
转载自: http://blog.sina.com.cn/s/blog_afddb8ff0101aqs9.html 静态代码块:有些代码必须在项目启动的时候就执行,这种代码是主动执行的(当类被载入时, ...
- java构造代码块详解
一.简介 首先说一下,Java中有哪些代码块. 普通代码块 就是在方法后面使用"{}"括起来的代码片段,不能单独执行,必须调下其方法名才可以执行. 静态代码块 在类中使用stati ...
随机推荐
- LOW逼三人组(二)----选择排序算法
选择排序思路: 算法程序: def cal_time(func): # 装饰器 ,用来检测算法所执行的时间 def wrapper(*args,**kwargs): t1=time.time() re ...
- antdVG6随记
g6是一个很棒的可视化工具 目前支持开发者搭建属于自己的图,图分析.图应用.图编辑器 图编辑器可以支持多种图例的创建 G6 是一个简单.易用.完备的图可视化引擎,它在高定制能力的基础上,提供了一系列设 ...
- python碎片记录(三)
1.不换行输出 for i in range(5): print(i,end=' ')不换行打印,end表示每打印一个后面跟的字符 2.利用枚举方式打印输出索引与数值 a=[7,8,9]for ...
- ruby post json
require 'net/http' require 'json' uri = URI('http://localhost/test1.php') req = Net::HTTP::Post.new ...
- HDU 6197 array array array 2017沈阳网络赛 LIS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6197 题意:给你n个数,问让你从中删掉k个数后(k<=n),是否能使剩下的序列为非递减或者非递增 ...
- java你应该学会什么
给初学者之一:浅谈java及应用学java 先说什么是Javajava是一种面向对象语言,真正的面向对象,任何函数和变量都以类(class)封装起来至于什么是对象什么是类,我就不废话了关于这两个概念的 ...
- cgic实现输入文件名,打开文件的功能
a.c文件 #include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdarg. ...
- gentoo emerge unable to sync
gentoo emerge unable to sync Author: Tubo After setting SYNC to customized URL: SYNC="rsync://m ...
- MVC – 5.MVC设计模式和.NetMVC框架
MVC模式-设计模式 •控制器(Controller)- 负责转发请求,对请求进行处理. •视图 (View) - 界面设计人员进行图形界面设计. •模型 (Model)-业务逻辑.数据.验证规则.数 ...
- JavaScript: The Evil Parts - 1
最近在看JavaScript框架设计,在讲解类型判定的时候提到了一些“匪夷所思的情况”,不过没有明说都是什么时候会出现这些情况.自己玩儿了一下,写写随笔吧.不过可能除了我找到的,还有会其他时候会出现这 ...