代码块知识精华(静态代码块与非静态代码块)

关于代码块方面的知识

代码里面有详细的说明

package com.jingtai.bean;

import com.jicheng.bean.Person;

/*
* 非静态代码块与静态代码块:
* 一、作用:可以用来初始化类、对象
*         (1)赋值的方法
*             ①默认初始化
*             ②显式初始化
*             ③构造器中初始化
*             ④通过“对象.属性” 或 “对象.方法”进行初始化
*             ⑤在代码块中赋值
* 提示:在实际开发中可以选择不用代码块,但是在看一些源码时,里面可能会有代码块
* 二、代码块只能用static来修饰
* 三、代码块分为 ”非静态代码块“ 与 ”静态代码块“
*     (1)非静态代码块: ①内部可以有输出语句
*                     ②随着对象的创建而执行
*     (2)静态代码块:   ①内部可以有输出语句
*                     ②随着类的加载而执行
*   注意:如果一个类中定义了多个静态或着非静态代码块,他们都是按照定义的先后顺序执行
*        但非静态代码块整体要晚于静态代码块的执行,因为静态代码块是随着类的加载而执行
*        而非静态代码块是随着对象的创建而执行(但是在实际的应用中,一般静态或者非静态写一个就可)
* */
public class StaticTest {
    public static void main(String[] args) {
        //静态属性或者方法可以直接通过类来调用,
        //因为其随着类的加载而加载
        String say1 = Static.nation;//随着类的加载而执行
        System.out.println(Static.nation);
        Static.print();//随着类的加载而执行,且只执行一次
        Static s1 = new Static();//随着对象的创建而去执行
        Static s2 = new Static();//每造一个对象,非静态代码块就执行一次
        System.out.println(s1.age);
    }
}
class Static{
    static String nation = "中国";
    static int age;
    //以下代码块(静态代码块)随着类的加载而执行
    //也可理解代码块无法被调用,只能自动的去执行
    //注意:静态代码块的执行要优先于非静态代码块(因为其随着类的加载而加载)
    static{
        System.out.println("你好啊,陌生人!");
        nation = "CHINA";//静态代码块内部只能调用静态的属性或者方法
    }
    public static void print(){
        System.out.println("未来你好!");
    }
    //以下代码块(非静态代码块)随着对象的创建而去执行
    {
        //非静态代码块内部既可以调用静态的属性或者方法,也可以调用非静态的属性或者方法
        System.out.println("世界你好!");
        //在创建对象时,对对象的属性等进行初始化
        age = 1;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值