代码块
什么是代码块?
在JAVA中使用{}包裹起来的内容,将这个{}称为代码块
分类:
1)局部代码块:在方法定义中定义的{}
作用:限定局部变量的生命周期
2)构造代码块:在类中的成员位置中定义的{}
作用:在执行构造方法之前先执行构造代码块,然后对当前数据(类中的成员变量)进行初始化
将构造方法中共性内容存储到构造代码块中(一般情况都是通过构造方法初始化)
3)静态代码块:在类中的成员位置定义的static{}
作用:随着类的加载,在{}里面给数据进行初始化
整个{}优先于对象存在而且静态代码块只执行一次!(因为类就加载一次)
结论:
优先级:
静态代码块>构造代码块>构造方法
//自定义类
class Code{
//成员位置
static{
int x=1000;
System.out.println(x);
}
public Code(){
System.out.println("code....");
}
//类的成员位置
//构造代码块(先执行构造代码块)
{
int x=300;
System.out.println(x);
}
//System.out.println("---------------");
//有参构造
public Code(int num){
System.out.println(num);
}
{
int y=400;
System.out.println(y);
}
static{
int y=2000;
System.out.println(y);
}
}
//测试类
class CodeDemo{
public static void main(String[] args){
int a=10;
int b=20;
//局部代码块
{
int x=100;
System.out.println(x);
}
{
int y=200;
System.out.println(y);
}
//System.out.println(x);找不到符号
System.out.println("---------------");
Code code=new Code();
System.out.println("---------------");
Code code2=new Code(100);
}
}
package com.lin;
/*
* 看程序 写结果
* 静态代码块的特点:随着类的加载而加载,因为类只加载一次
* 静态代码块>构造代码块>构造方法
* */
class Student{
static {
System.out.println("我是静态代码块Student");
}
{
System.out.println("我是构造代码块");
}
public Student() {
System.out.println("我是构造方法Student");
}
}
//测试类
public class StudentTest{
static{
System.out.println("happy");
}
public static void main(String[] args){
System.out.println("我是main方法");
Student s1=new Student();
System.out.println("-----------");
Student s2=new Student();
}
}