一、前言
本文主要讲述Java面向对象中的代码块的知识点
二、局部代码块
1.定义
写在方法体内的代码块
2.使用说明
当一个变量在方法体内定义后,只能在方法体内使用
3.代码实现
public class test1 { public static void main(String[] args) { int a = 10; } System.out.println(a); }
如上面的代码,在main方法里执行完给a赋值为10后,a就会消失,所以输出语句里面的a就无法被输出,会报错
三、构造代码块
1.定义
写在成员位置的代码块
2.作用
可以把多个构造方法中重复的代码提取出来
3.使用说明
在创造本类对象的时候会先执行构造代码块,在执行构造方法
4.代码实现
public class Person { String name; int age; public Person(){ System.out.println("这里有个人"); } public Person(String name, int age){ this.name = name; this.age = age; System.out.println("这里有个人"); } }
优化后
public class Person { String name; int age; { System.out.println("这里有个人"); } public Person(){ } public Person(String name, int age){ this.name = name; this.age = age; } }
用IDEA测试一下输出顺序
5.注意事项
这种书写方法不够灵活,当某一个构造不需要执行这个语句时,就无法使用这种方式了,所以不会使用,建议把相同的语句封装成一个方法,在构造内调用方法
四、静态代码块
1.格式
static{}
2.特点
随着类的加载而加载,且自动触发,只执行一次
3.使用场景
在类的加载时,可以初始化数据
4.代码实现
public class Person { String name; int age; static { System.out.println("静态代码块"); } public Person(){ System.out.println("空参构造输出"); } public Person(String name, int age){ System.out.println("有参构造输出"); this.name = name; this.age = age; } /** * 获取 * @return name */ public String getName() { return name; } /** * 设置 * @param name */ public void setName(String name) { this.name = name; } /** * 获取 * @return age */ public int getAge() { return age; } /** * 设置 * @param age */ public void setAge(int age) { this.age = age; } }
public class PersonTest { public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person("张三",20); } }
五、结语
代码块在开发中非常常用,也很重要,如果有任何的问题欢迎在评论区交流