Java_代码块 总结

2222 发表于 2021/04/11 22:36:11 2021/04/11
【摘要】 概念代码块:在Java中,使用{}括起来的代码被称为代码块。 代码块主要有:局部代码块、构造代码块、静态代码块。 其中,局部代码块和构造代码块统称为非静态代码块。 因此,本文主要是区别非静态代码块与静态代码块的执行步骤与区别。提示:以下是本篇文章正文内容,下面案例可供参考吖一、作用给所有对象进行初始化。    【补充】    代码块与构造器的区别:    (1)构造器主要是用于对象的初始化、...

概念
代码块:在Java中,使用{}括起来的代码被称为代码块。 代码块主要有:局部代码块、构造代码块、静态代码块。 其中,局部代码块和构造代码块统称为非静态代码块。 因此,本文主要是区别非静态代码块与静态代码块的执行步骤与区别。

提示:以下是本篇文章正文内容,下面案例可供参考吖
一、作用

给所有对象进行初始化。

    【补充】
    代码块与构造器的区别:
    (1)构造器主要是用于对象的初始化、创建对象。
    (2)代码块只能给对象初始化,不能创建对象。

二、代码块的执行顺序
1.初始化的方式

    代码块执行的大致顺序:
    0、静态代码块在非静态代码块之前执行(静态代码块在整个流程只执行一次)
    1、默认初始化
    2、显式初始化 / 代码块初始化
    3、构造器初始化
    4、对象.属性访问

2.静态代码块 & 非静态代码块的初始化顺序

代码如下(示例):

public class CodeBlocks {

    //    静态变量
    public static int b = 2;


    //    静态代码块
    static {
        A = 88;
        System.out.println("这是静态代码块1,这里有一个A,是一个常量");
    }

    private static final int A;//    静态的常量

    static {
//        静态的代码块不能访问非静态的属性
//        a=1;
        b = 22;
        System.out.println("这是静态代码块2:这是常量A的值:" + A + "\t静态变量b:" + b + "\t");
    }

    //    非静态的代码块
    {
        a = 111;
        b = 222;
        System.out.println("这是非静态代码块1" + "" + "");
    }

    public int a = 1;//    非静态变量

    {
        a = 1111;
        b = 2222;
        System.out.println("这是非静态代码块1");
    }

    //    构造器
    public CodeBlocks() {
//        this.a = 11111; 是否用用this关键字均可
        a = 11111;
        b = 22222;
        System.out.println("这是构造器的输出");
    }

    public CodeBlocks(int a) {
        b = 001100;
        System.out.println("这是构造器的输出");
    }

    //    方法
    public void show() {
        this.a = 111111;
        b = 122222;
        System.out.println("这是方法的输出:" + a + "\t" + b);
    }

    public static void main(String[] args) {
        CodeBlocks codeBlocks1 = new CodeBlocks();
        System.out.println("创建第一个对象时,最终输出的a:" + codeBlocks1.a + "\tb:" + b);
        System.out.println();

        CodeBlocks codeBlocks2 = new CodeBlocks();
        System.out.println("创建第二个对象时,最终输出的a:" + codeBlocks2.a + "\tb:" + b);
        System.out.println();

        CodeBlocks codeBlocks3 = new CodeBlocks(98889);
        System.out.println("创建第二个对象时,最终输出的a:" + codeBlocks3.a + "\tb:" + b);

        codeBlocks1.show();
    }
}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。