提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
类的成员四---代码块
一、 作用
用来初始化类或对象
二、 代码块如果有修饰的话,只能使用static
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
三、分类:静态代码块vs非静态代码块
1.静态代码块
(1)内部可以有输出语句
(2)随着类的加载而执行,而且只执行一次
2.非静态代码块
(1)内部可以有输出语句
(2)随着对象的创建而执行
(3)每创建一个对象,就执行一次非静态代码块
(4)作用:可以在创建对象时,对对象的属性等进行初始化
四、对象可以赋值的位置
1. 默认初始化
2. 显示初始化 /在代码块中赋值 [要不先显示初始化,要不先在代码块中赋值]
3. 构造器中初始化
4. 有了对象以后,可以通过“对象.属性”或“对象.方法”的方式,进行赋值
public class DemoTest {
public static void main(String[] args) {
Demo demo=new Demo();
System.out.println(demo.id);
//输出结果为:3[方法体中要先声明后使用,但是代码块中不需要]
}
}
class Demo{
//在代码块中赋值-->显示初始化
{ id=4;}
int id=3;
}
五、应用
public class CodeBlockTest {
public static void main(String[] args) {
new CodeBlock();
System.out.println();
new CodeBlock();
}
}
class CodeBlock{
private String sloganString="吃饭当节省!";
private static String infoString="一个静态成员";
static {
System.out.println("----静态代码块----");
// 一个静态成员可以直接使用,一个非静态成员要通过对象.属性才能使用
System.out.println(infoString);
}
{
System.out.println("\n调用普通构造器开始!");
System.out.println(infoString);
System.out.println(sloganString);
System.out.println("\n调用普通构造器结束!");
}
public CodeBlock() {
System.out.println("\n调用构造方法");
}
}
结果为:----静态代码块----
一个静态成员
调用普通构造器开始!
一个静态成员
吃饭当节省!
调用普通构造器结束!
调用构造方法
调用普通构造器开始!
一个静态成员
吃饭当节省!
调用普通构造器结束!
调用构造方法
六、总结
执行顺序-->先父后子,静态先行
静态代码块(父–>子)–>普通代码块【必须要先new对象才能使用】(无参构造器–>有参构造器)