代码块:普通代码块、构造代码块、静态代码块、同步代码块、构造方法、main方法执行顺序?

前言:
在java中,用{}括起来的称为代码块,代码块可分为以下四种:
普通代码块、构造代码块、静态代码块、同步代码块。

一、定义

1. 普通代码块(不需要讨论,太常见了)
类中的方法的方法体。(就是{}和它里面的整体称为普通代码块。)

如:
  public class Student(){
    
     	public void getMoney(){
     			System.out.println("你好");
     	} 
     			
  }

2. 构造代码块
类中的用 {} 括起来的代码片段,{}外面没有修饰。
构造代码块只在创建对象时被调用,每次创建时都会被调用,优先于构造方法执行。

如:
  public class Student(){
    
     	{
     			System.out.println("你好1");
     	} 
     			
  }

3. 静态代码块
类中的用 static{} 括起来的代码片段。
静态代码块,随着类的加载而执行,而且只执行一次。
静态代码块优先于构造方法执行。
静态代码块等同于静态变量 执行级别。
注意:
1.静态代码块不能存在于任何方法体中。
2.静态代码块不能直接访问实例变量和实例方法,需要通过类的实例对象来访问。
3.静态代码块,不能初始化非静态变量(实例变量)。
4.如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。

如:
  public class Student(){
  
    	private  static String  name;
    	private  static String  sex;
    	
     	static{
     			name="张三姓名";
     			sex="女性别";
     	} 
     			
  }

4. 同步代码块
类中的用 synchronized(锁对象){} 括起来的代码片段。
(同步代码块需要写在方法中。)

如:
  public class Student(){
  
  		Demo obj=new Demo();
  		
    	public void test1(){
    		synchronized(obj){
			    //需要被同步的代码块
			}	
    	}
    				
  }

5. 构造方法
构造方法分为无参构造方法 和 有参构造方法。(这儿不介绍了,下面内容只解释执行顺序)

6. main方法
略。(这儿不介绍了,下面内容只解释执行顺序)

二、区别

1. 构造代码块和静态代码块的区别:

  • 相同点:
    都是在JVM的类加载器加载 类的.class字节码 后,且在构造方法执行之前执行;
    都可在类中定义多个,一般在代码块中对一些static变量进行赋值。

  • 不同点:
    (执行顺序):静态代码块在构造代码块之前执行。
    (执行次数):静态代码块只在JVM类加载器加载类后,执行一次,之后不在执行;而构造代码块每new创建一次对象就执行一次,而且在构造方法前执行。

三、示例

1. 示例一(没有继承关系的)

在这里插入图片描述
输出结果:
在这里插入图片描述

2. 示例二(有继承关系的)

父类:
在这里插入图片描述
子类:
在这里插入图片描述
输出结果:
在这里插入图片描述

3. 示例三(有继承关系的)

父类:
在这里插入图片描述
子类:
在这里插入图片描述
输出结果:
在这里插入图片描述

四、阿里巴巴面试题

如下:
在这里插入图片描述
输出结果:
在这里插入图片描述
总结:静态声明缘故,t1、t2等静态变量也和静态块处于同一优先级。

五、学习链接

链接1:https://blog.csdn.net/qq_35868412/article/details/89360250
链接2:https://blog.csdn.net/harryptter/article/details/87875399#笔试题
链接3:https://www.cnblogs.com/Heliner/p/10524699.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值