前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java——代码块(普通块、构造块、静态块)

Java——代码块(普通块、构造块、静态块)

作者头像
Winter_world
发布2020-09-25 10:36:58
2K0
发布2020-09-25 10:36:58
举报
文章被收录于专栏:技术小屋-未分类

代码块在实际开发中很少见,只需要了解即可,实际开发中也不需要使用它。

代码编写中,使用{}声明的程序块就属于代码块,而根据其出现的位置,及声明关键字的不同,分为四种:普通代码块、构造块、静态块、同步代码块(多线程中涉及)

1、普通代码块

在方法中使用{}定义起来的一段代码,利用普通代码块可以实现局部代码的拆分(实际基本用不上)。

代码语言:javascript
复制
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        {
            int x =10; //局部
            System.out.println("x="+x); //输出10
        }
        int x =100; //全局
        System.out.println("x="+x); //输出100
    }
}

2、构造代码块

将普通代码块中提取到类中使用,就形成了构造代码块。

代码语言:javascript
复制
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Person per1 = new Person();
        Person per2 = new Person();
    }
}

class Person{
    { //构造块
        System.out.println("构造块");
    }
    public Person() {
        System.out.println("构造方法");
    }
}

由以上程序运行可知,构造块优先于构造方法执行,每次实例化对象时构造快都会被重复调用(实际基本用不上)。

3、静态代码块

如果代码块中使用了static关键字定义,则该代码块为静态代码块:

  • 在非主类中定义的;
  • 在主类中定义的;

【举例】:非主类中定义的静态块

代码语言:javascript
复制
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Person per1 = new Person();
        Person per2 = new Person();

    }
}

class Person{

    public Person() {
        System.out.println("构造方法");
    }

    { //构造块
        System.out.println("构造块");
    }

    static { //静态块
        System.out.println("静态块");
    }
}

由以上运行可知,静态块最先执行,并且只执行一次。在非主类中定义 的静态块,可以用其为static属性初始化,如下:

代码语言:javascript
复制
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Person per1 = new Person();
        Person per2 = new Person();

    }
}

class Person{
    private static String msg = "hello";
    private static String info =null;
    public Person() {
        System.out.println("构造方法");
    }

    { //构造块
        System.out.println("构造块");
    }

    static { //静态块
        System.out.println("静态块");
        info = msg+"张三";
        info = info +10;
        System.out.println(info);
    }
}

【举例】:主类中定义的静态块

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        System.out.println("hello");
    }

    static {
        System.out.println("竟然是我先执行??");
    }
}

以上可以发现,静态块优于主方法先执行。

4、总结

代码块对于现阶段开发意义不大,了解即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、普通代码块
  • 2、构造代码块
  • 3、静态代码块
  • 4、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档