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

举报
Winter_world 发表于 2021/09/29 01:06:10 2021/09/29
【摘要】 目录 1、普通代码块 2、构造代码块 3、静态代码块 4、总结 代码块在实际开发中很少见,只需要了解即可,实际开发中也不需要使用它。 代码编写中,使用{}声明的程序块就属于代码块,而根据其出现的位置,及声明关键字的不同,分为四种:普通代码块、构造块、静态块、同步代码块(多线程中涉及) 1、普通代码块 在方法中使用{}定...

目录

1、普通代码块

2、构造代码块

3、静态代码块

4、总结


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

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

1、普通代码块

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


  
  1. protected void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. {
  4. int x =10; //局部
  5. System.out.println("x="+x); //输出10
  6. }
  7. int x =100; //全局
  8. System.out.println("x="+x); //输出100
  9. }
  10. }

2、构造代码块

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


  
  1. protected void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. Person per1 = new Person();
  4. Person per2 = new Person();
  5. }
  6. }
  7. class Person{
  8. { //构造块
  9. System.out.println("构造块");
  10. }
  11. public Person() {
  12. System.out.println("构造方法");
  13. }
  14. }

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

3、静态代码块

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

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

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


  
  1. protected void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. Person per1 = new Person();
  4. Person per2 = new Person();
  5. }
  6. }
  7. class Person{
  8. public Person() {
  9. System.out.println("构造方法");
  10. }
  11. { //构造块
  12. System.out.println("构造块");
  13. }
  14. static { //静态块
  15. System.out.println("静态块");
  16. }
  17. }

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


  
  1. protected void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. Person per1 = new Person();
  4. Person per2 = new Person();
  5. }
  6. }
  7. class Person{
  8. private static String msg = "hello";
  9. private static String info =null;
  10. public Person() {
  11. System.out.println("构造方法");
  12. }
  13. { //构造块
  14. System.out.println("构造块");
  15. }
  16. static { //静态块
  17. System.out.println("静态块");
  18. info = msg+"张三";
  19. info = info +10;
  20. System.out.println(info);
  21. }
  22. }

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


  
  1. public class MainActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. System.out.println("hello");
  6. }
  7. static {
  8. System.out.println("竟然是我先执行??");
  9. }
  10. }

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

4、总结

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

 

作于202004072220,已归档

———————————————————————————————————

本文为博主原创文章,转载请注明出处!

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

文章来源: winter.blog.csdn.net,作者:Winter_world,版权归原作者所有,如需转载,请联系作者。

原文链接:winter.blog.csdn.net/article/details/105344465

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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