java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序
java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序
这也是在笔试中的一个重要的考点,就有一个输出语句让你写出输出的结果。
理论知识:
静态代码块是:属于类的,在类加载时就自动执行。静态代码块定义时不能添加作用域符。
构造块是: 在类中定义的,且定义的位置与该类的其他的属性是相当的,就是不在该类的任何成员方法中,定义时直接用{ }包含即可,不用再添加其他任何的访问作用域符。构造块是每次创建对象都会执行一次构造块。
普通代码块:定义位置是在方法内部,在方法体内用 { } 包含即可。
下面给出测试的代码及测试结果,主要是查看执行的顺序,及多次创建对象时执行的顺序及结果。
public class Test{
//静态代码块
static {
System.out.println("静态代码块");
}
{
System.out.println("构造块1");
}
//构造方法
public Test() {
System.out.println("执行了构造方法");
}
//普通的成员方法
public void test() {
System.out.println("在方法中的普通代码块");
//普通的代码块
{
System.out.println("普通代码块");
}
}
public static void main(String[] args) {
System.out.println("执行了主方法");
System.out.println("--------------------");
new Test();
System.out.println("------第二次创建对象---------------");
new Test();
System.out.println("------第三次创建对象---------------");
new Test().test();
}
//构造块
{
System.out.println("构造块2");
}
}
运行的结果:

多次创建对象,静态代码块只执行一次,且最先执行。
接下来执行的是构造块,构造块会每创建一个对象执行一次,且多个构造块会由上到下的执行。
再接下来执行的是构造方法,构造方法也是每创建一个对象就会执行一次。
再接下来就是调用普通的方法中的代码块,执行的顺序,在方法中没有什么特殊的。
对于静态属性,与静态代码块一样,也是在类加载时就会被自动执行,属于整个类的属性。
静态方法只能访问静态属性,一定不能访问非静态属性,但是注意这种说法的与我们通过对象来访问该静态属性,就是 对象名.非静态属性变量名, 这种方式就是我们通常在main方法中的一种访问方式。 这种访问的方式是可以的,但不能直接 非静态属性变量名 或静态属性方法。
对于静态方法中也不能直接使用this对象。
java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序的更多相关文章
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- [Java] JVM 在执行 main 方法前的行为
JVM 执行一个 Java 程序时,先从某个指定的 Java 类的 main 方法开始执行代码,同时,传一个字符串数组作为 main 方法的参数.例如在 Unix 系统上,执行下面的命令 java T ...
- 【异常】idea执行Main方法出现 Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
一.异常复现步骤 1)首先得是一个Spring MVC项目 注:Spring Boot项目有内置的web 容器,不会出现该问题 2)main方法存在于使用HttpServletRequest类的类中 ...
- Java项目中每一个类都可以有一个main方法
Java项目中每一个类都可以有一个main方法,但只有一个main方法会被执行,其他main方法可以对类进行单元测试. public class StaticTest { public static ...
- 类(静态)变量和类(静态)static方法以及main方法、代码块,final方法的使用,单例设计模式
类的加载:时间 1.创建对象实例(new 一个新对象时) 2.创建子类对象实例,父类也会被加载 3.使用类的静态成员时(静态属性,静态方法) 一.static 静态变量:类变量,静态属性(会被该类的所 ...
- java中代码块和构造方法以及普通方法的代码执行顺序总结
说实话,这块真的不好理解啊~都怪jvm 执行顺序搞这么复杂,哼╭(╯^╰)╮ 但是 我们能怎么办,只能研究呗!!! !:首先,毫无置疑的,静态代码块在加载时就执行了,所以肯定是最先执行的.... ...
- java 多线程:线程通信-等待通知机制wait和notify方法;(同步代码块synchronized和while循环相互嵌套的差异);管道通信:PipedInputStream;PipedOutputStream;PipedWriter; PipedReader
1.等待通知机制: 等待通知机制的原理和厨师与服务员的关系很相似: 1,厨师做完一道菜的时间不确定,所以厨师将菜品放到"菜品传递台"上的时间不确定 2,服务员什么时候可以取到菜,必 ...
- Java中继承时静态块,构造块,构造函数的执行顺序
public class Father { static { System.out.println("Father静态块"); } { System.out.println(&qu ...
- java,maven工程打tar.gz包执行main方法
一,需要在pom.xml文件添加plugin, 项目目录结构 <build> <plugins> <plugin> <artifactId>maven- ...
- Java执行main方法,异常为:could not find the main class.program will exit
未解决. Java执行方法,异常为:could not find the main class.program will exitmain 原文地址:http://rogerfederer.iteye ...
随机推荐
- Opengl_入门学习分享和记录_02_渲染管线(一)顶点着色器&片段着色器
写在前面的废话:今天俺又来了哈哈,真的好棒棒! 今天的内容:之前我们大概描述了,我们自己定义的顶点坐标是如何被加载到GPU之中,并且介绍了顶点缓冲对象VBO用于管理这一块内存.今天开始详细分析它的具体 ...
- 不可错过的几款GitHub开源项目
工作之余或者周末感觉无聊?不知道干什么?想继续提高技术,但是不知道做什么的同学,看过来,不妨利用闲暇时间来撸几个 GitHub 上还不错的开源项目,本文推荐的开源项目比较适合新手.及对MVP设计模式不 ...
- hadoop2.7+spark2.2+zookeeper3.4.简单安装
1.zookeeper的安装##配置/etc/hosts192.168.88.130 lgh192.168.88.131 lgh1192.168.88.132 lgh2 ##安装java8 解压配置环 ...
- 普通Apache的安装与卸载
Apache安装与卸载ctrl+F快捷查找 1.下载apache 64位解压 官网:http://httpd.apache.org/ 文件使用记事本或者sublime2.修改 打开apache目录下的 ...
- 以图搜图之模型篇: 基于 InceptionV3 的模型 finetune
在以图搜图的过程中,需要以来模型提取特征,通过特征之间的欧式距离来找到相似的图形. 本次我们主要讲诉以图搜图模型创建的方法. 图片预处理方法,看这里:https://keras.io/zh/prepr ...
- Mybatis中使用PageHelper插件进行分页
分页的场景比较常见,下面主要介绍一下使用PageHelper插件进行分页操作: 一.概述: PageHelper支持对mybatis进行分页操作,项目在github地址: https://github ...
- Linux安装配置Samba共享文件系统
Samba共享文件系统搭建与配置: 1.Samba服务端:yum install samba samba-client cifs-utilscd /etc/samba/cp smb.conf smb. ...
- sql server 怎么查看blocked的线程
select spid ,blocked from master..sysprocesses
- thinkPHP中的简单文章推荐(按浏览量)功能实现
在公司中接触到了thinkPHP框架,其中要在项目中实现文章推荐功能.记录笔记如下: 一.在Controller中获取从文章列表页进入详情页传入的文章ID值. 二.在Controller中绑定数据库查 ...
- 玩转 SpringBoot 2 快速搭建 | RESTful Api 篇
概述 RESTful 是一种架构风格,任何符合 RESTful 风格的架构,我们都可以称之为 RESTful 架构.我们常说的 RESTful Api 是符合 RESTful 原则和约束的 HTTP ...