IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 【java】代码块、匿名内部类 -> 正文阅读

[开发工具]【java】代码块、匿名内部类

初始化块(代码块)

用{}括起来
1、初始化块(代码块)作用:
对Java对象进行初始化

2、程序的执行顺序
(1)声明成员变量的默认值
(2)显示初始化、多个初始化块依次被执行(同级别下按先后顺序执行)
(3)构造函数再对成员进行赋值操作

  • 非静态的代码块举例
package test;
public class Person {
	String name;
	
	public Person() {
		this.name = "张三";
		System.out.println("执行的是构造方法");
	}
	
	//非静态时的代码块
	{
		System.out.println("执行的是非静态的代码块1");
	}
	{
		System.out.println("执行的是非静态的代码块2");
	}
	{
		System.out.println("执行的是非静态的代码块3");
	}
}
package test;
public class Test {
	public static void main(String[] args) {
		new Person();
    }
}

在这里插入图片描述
在这里插入图片描述

  • 静态的代码块举例
package test;
public class Person {
	String name;
	static int age;
	
	public Person() {
		this.name = "张三";
		System.out.println("执行的是构造方法");
	}
	
	//非静态时的代码块
	{
		System.out.println("执行的是非静态的代码块1");
	}
	{
		System.out.println("执行的是非静态的代码块2");
	}
	{
		System.out.println("执行的是非静态的代码块3");
	}
	
	//静态代码块
	static {
		//这里只能使用静态static修饰的属性和方法
		age = 1;
		showAge();
		System.out.println("===执行的是静态的代码块===");
	}
	
	public static void showAge() {
		System.out.println(age);
	}
}
package test;
public class Test {
	public static void main(String[] args) {
		new Person();
		new Person();
    }
}

在这里插入图片描述
在这里插入图片描述

总结:

非静态代码块: 没有static修饰的代码块
1、可以有输出语句。
2、可以对类的属性声明进行初始化操作。
3、可以调用静态和非静态的变量或方法。
4、若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
5、每次创建对象的时候,都会执行一次。且先于构造器执行。

静态代码块: 用static修饰的代码块
1、可以有输出语句。
2、可以对类的属性声明进行初始化操作。
3、不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
4、若有多个静态的代码块,那么按照从上到下的顺序依次执行。
5、静态代码块的执行要先于非静态代码块。
6、静态代码块只执行一次。

匿名内部类

匿名内部类:没有类名,故无法定义构造方法,故常使用定义初始化块解决问题。

package test;
public class Test {
	public static void main(String[] args) {
		//匿名内部类
		Person p = new Person() {
			//问题?现在想把name改成李四,但不想动Person的代码
			
			{//在匿名内部类中,用代码块代替构造方法
				super.name = "李四";
			}
			@Override
			public void test() {
				System.out.println("=====");
			}
		};
		
		System.out.println(p.name);
		p.test();
    }
}

在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:19:38  更:2022-04-15 00:24:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:34:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码