代码块的分析

**普通代码块:**定义在方法中的代码块;
**构造块:**定义在类中的代码块;
**构造方法:**使用关键字new实例化新对象时来进行调用的操作方法,构造方法名称必须与类名称相同;
**静态代码块:**用static定义的代码块;其又分为:在主类中的静态代码块,在非主类中的静态代码块;
例如:

class Person{
		       static{//静态块
					System.out.println("Person类的静态块");
				}
				{ //定义在类中,不加任何修饰符,构造块
					System.out.println("1.Person类的构造块");
				}
				public Person(){//构造方法块
					System.out.println("2.Person类的构造方法");
				}
		}

优先级顺序:静态代码块>构造块(非静态代码块)>构造方法
构造块优先于构造方法执行,但每产生一个新的对象就调用一次构造块、构造方法(同时调用的);
无论创建多少个实例化对象,静态块都只执行一次;
但是在主类中的静态代码块优先于main方法执行,其他的都是在main方法之后才开始执行的;

       public class Test6 {//主类
			    private int codeline;
			    //静态块(在主类中的静态块优先于main方法执行)
			    static{
			        System.out.println("主类的静态块,类");
			    }
			    //构造块
			    {
			        System.out.println("主类的构造块,非静态块");
			    }
			    //构造方法
			    public Test6() {
			        System.out.println("这是主类的构造方法");
			    }
			    public static void main(String[] args) {
			        System.out.println("main");
			        Test6 p1=new Test6();
			        System.out.println();
			        Test6 p2=new Test6();
			        System.out.println("------------------");
			        Cat cat1=new Cat();
			        System.out.println();
			        Cat cat2=new Cat();
			    }
			}
			class Cat{//非主类
			    private String name;
			    //静态块
			    static {
			            System.out.println("这是非主类的静态块");
			    }
			    //构造块
			    {
			        System.out.println("非主类的构造块,非静态块");
			    }
			    //构造方法
			    public Cat() {
			        System.out.println("这是非主类的的构造方法");
			    }
			}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值