jvaa之初始化块
1.初始化块的作用:对java对象进行初始化;
2.程序的执行顺序:声明成员变量的默认值-->显示初始化,多个初始化块依次被执行(同级别下按先后顺序执行)-->构造器在对成员进行赋值操作。
public class Person extends Object{
String name;
public Person() {
this.name = "tom";
System.out.println("执行的是构造方法");
}
{
System.out.println("执行的是非静态代码块");
}
}
public class Main {
public static void main(String[] args) {
Person p = new Person();
}
}
输出:
执行的是非静态代码块1
执行的是非静态代码块2
执行的是构造方法
3.静态代码块:当类在被载入时,类属性的声明和静态代码快先后顺序被执行,且只被执行一次;静态代码块里面只能用static修饰的属性和方法;
package insof;
public class Person extends Object{
String name;
static int age;
public Person() {
this.name = "tom";
System.out.println("执行的是构造方法");
}
{
System.out.println("执行的是非静态代码块1");
}
{
System.out.println("执行的是非静态代码块2");
}
static{
age = 11;
System.out.println("执行的是静态代码块1");
showAge();
}
static{
System.out.println("执行的是静态代码块2");
}
public static void showAge() {
System.out.println(age);
}
}
package insof;
public class Main {
public static void main(String[] args) {
Person p = new Person();
Person p1 = new Person();
}
}
输出:
执行的是静态代码块1
11
执行的是静态代码块2
执行的是非静态代码块1
执行的是非静态代码块2
执行的是构造方法
执行的是非静态代码块1
执行的是非静态代码块2
执行的是构造方法
说明:每次new一个对象,给静态代码块都要被执行,而静态代码块只执行一次。
非静态代码块:
- 可以有输出语句;
- 可以对类的属性声明进行初始化操作;
- 可以调用静态和非静态的属性和方法;
- 若有多个非静态的代码块,那么按照从上到下的顺序一次执行;
- 每次创建对象的时候,都只会执行一次,且优先于构造方法;
静态代码块:用static修饰的代码块
- 可以有输出语句;
- 可以对类的属性声明进行初始化操作;
- 不可以对非静态的属性初始化,即:不可以调用非静态的属性和方法;
- 静态代码块的执行顺序优先于非静态代码块;
- 静态代码块只执行一次;
jvaa之初始化块的更多相关文章
- Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念.下面探究一下它的执行顺序与可能的用途. 执行顺序 首先定义A, B, ...
- java类的初始化块/执行顺序,实例化对象数据赋值
java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值.与其相关的执行代码有这么几种: 静态初始化块 初始化块 构造方法 静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只 ...
- 什么是Java实例初始化块
在本篇文章,我将会使用一个例子展示什么是实例变量初始化块,实例初始化块和静态初始化块,然后说明在Java中实例初始化块是如何工作的. 执行顺序 查看下面的代码,你知道哪个先执行吗? package s ...
- Java 中的 static 使用之静态初始化块
Java 中可以通过初始化块进行数据赋值.如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块.如果使用 static 修饰初始化块,就称为静态初始化块. 需要特别注意: ...
- static声明初始化块的一下注意事项
通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法.由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块.
- java中的静态初始化块
Java 中可以通过初始化块进行数据赋值.如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块.如果使用 static 修饰初始化块,就称为静态初始化块. 需要特别注意: ...
- static静态初始化块
Java 中可以通过初始化块进行数据赋值.如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块.如果使用 static 修饰初始化块,就称为静态初始化块. 需要特别注意: ...
- linkin大话面向对象--初始化块
java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而让整个java对象的信息更加完整.与构造器作用非常类似的是初始化块,它也可 ...
- Class.forName()+Class.forName().newlnstance()和new语句和初始化块+static初始化块+构造方法之间的关系
先上代码 class A{ int a; static {System.out.println("载入类时执行");} public A() { ...
随机推荐
- InputStream 读取中文乱码 扩展
对于InputStream读取中文乱码,下面这段话给出了很好的解释,以及后续编码上的扩展. BufferedInputStream和BufferedOutputStream是过滤流,需要使用已存在的节 ...
- 【算法随记六】一段Matlab版本的Total Variation(TV)去噪算法的C语言翻译。
最近看到一篇文章讲IMAGE DECOMPOSITION,里面提到了将图像分为Texture layer和Structure layer,测试了很多方法,对于那些具有非常强烈纹理的图像,总觉得用TV去 ...
- 视频来了!Visual Studio Online 东半球首秀 @ .NET Conf 2019
2019 年 11 月 9 日,.NET Conf 2019 中国峰会于上海中谷小南国花园酒店举行,全国的 .NET 大咖相聚上海. 这次我演讲的主题是<Visual Studio Code — ...
- 大数据项目2(Java8聚合操作)
前言:为很好的理解这些方法,你需要熟悉java8特性Lambda和方法引用的使用 一:简介 我们用集合的目的,往往不是简单的仅仅把数据保存哪里.而是要检索(遍历)或者去计算或统计....操作集合里面的 ...
- 如何使用charles抓包H5页面内容
安装charles 这里推荐直接去官网下载 https://www.charlesproxy.com/latest-release/download.do 根据自己的电脑选择合适的安装包,我这里选择m ...
- ChinaSys 一些心得
这周不要脸的和老板一起去了 ChinaSys,可以说整个中国搞系统最nb的一批人的学术交流了.一圈报告听下来, 有几点心得,不多,可能也没有那么深刻. 系统领域的开源框架并不多 搞系统和搞AI,搞算法 ...
- ssh服务介绍及配置
一.ssh介绍 1.什么是 ssh ssh 是 Secure Shell 的缩写,是一个建立在应用层上的安全远程管理协议.ssh 是目前较为可靠的传输协议,专为远程登录会话和其他网络服务提供安全性.利 ...
- Python活力练习Day5
Day5:连续输入n个字符串,请按照长度为8拆分每个字符串后输出到新的字符串组:长度不是8的整数倍的字符串请在后面补数字0,其中,空字符串不做处理. eg : input : 2 12345 ...
- iOS底层实现原理【高级进阶】
想要进阶,想要提升自己一个更高档次,想要拥有更高比格的iOS开发攻城狮们,请关注 ↓↓↓ 我的简书:https://www.jianshu.com/u/3adf2f8593b8 我的掘金:https: ...
- springboot 读取 resource 下的文件
ClassPathResource classPathResource = new ClassPathResource("template/demo/200000168-check-resp ...