Java基础知识全面总结(第五章-代码块)

分类:代码块分为普通代码块、构造块,静态块、同步代码块

第十五课:普通代码块

使用区域:在一个方法中使用

作用:是为了区分在同一个方法中同一变量名称,避免同一变量名称相互影响,若没有相同名称的变量,则就没有必要使用普通代码块。

代码示例:

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方法执行,用于程序加载准备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

psjasf1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值