分类:代码块分为普通代码块、构造块,静态块、同步代码块
第十五课:普通代码块
使用区域:在一个方法中使用
作用:是为了区分在同一个方法中同一变量名称,避免同一变量名称相互影响,若没有相同名称的变量,则就没有必要使用普通代码块。
代码示例:
public class Main {
public static void main(String[] args) {
{
//相对于外部变量X来说,这是一个局部变量
int x=10;
System.out.println("x="+x);
}
//相对于内部变量X来说,这是一个全局变量
int x=100;
System.out.println("x="+x);
}
}
输出:
第十六课:构造代码块
作用区域:在一个类里面用"{}"的单独代码
作用:类中的代码块在实例化对象时会先于构造方法执行,即可以在实例化对象时用构造代码块先于构造方法完成一些操作。
代码示例:
public class Main {
public static void main(String[] args) {
Person person=new Person("张三",20);
}
}
class Person{
private String name;
private int age;
//构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
System.out.println("构造方法执行"+"姓名:"+this.name+"年龄:"+this.age);
}
//setter、getter方法
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
//代码块
{
System.out.println("构造代码块执行"+"姓名:"+this.name+"年龄:"+this.age);
}
}
输出:
第十七课:静态代码块
作用区域:主类或者普通类中
作用:在普通类中,静态代码块的主要作用是给静态属性赋值,静态代码块会优先于构造块和构造方法执行,切只会执行一次,即在类的第一次实例化对象时执行;在主类中,静态代码块会优先于主类的主方法执行,用于程序加载。
代码示例:
普通类中的静态代码块:
public class Main {
public static void main(String[] args) {
Person person=new Person("张三");
Person person1=new Person("张三");
Person person2=new Person("张三");
}
}
class Message{
//此处是模拟从网络或者服务器中的数据
private static String message="中华人民共和国";
public static String getMessage() {
return message;
}
}
class Person{
private String name;
//用于接受网络或者服务器中的数据
private static String country;
//用静态代码块给country赋值
static{
country=Message.getMessage();
System.out.println("静态代码块执行:"+country);
}
//构造代码块执行
{
System.out.println("构造代码块执行:"+country);
}
//构造函数
public Person(String name){
this.name=name;
}
//setter、getter方法
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
}
输出:
代码分析:从输出可以看出,静态代码块只执行了一次,构造代码块执行力三次,静态代码块先于构造代码块执行,且静态代码块主要是为静态属性赋值,在构造块中也可以使用静态属性。
主类中的静态代码块:
public class Main {
public static void main(String[] args) {
System.out.println("主类中的main方法执行");
}
static{
System.out.println("主类中的静态代码块执行");
}
}
输出:
代码分析:从结果可知,主类中的静态代码块会优先于main方法执行,用于程序加载准备。