(1)代码块
程序中使用"{}"括起来的代码称为代码块,代码块有四种:
普遍代码块:直接在一个方法中出现的"{}"
构造块:直接在类中定义的代码块,构造块会像构造方法一样,在实例化对象的时候执行,但是构造块优先于构造方法执行
静态块:使用static关键字声明的代码块,主要目的是用来为静态属性初始化,静态块优先于主方法,而且也优先于构造方法执行,并且只执行一次。
同步代码块:
class Demo{
{ // 构造块
System.out.println("*********** 构造块 *************") ;
}
static{
System.out.println("*********** 类中的静态块 *************") ;
}
public Demo(){ // 构造方法
System.out.println("*********** 构造方法 *************") ;
}
};
public class CodeDemo03{
static{
System.out.println("*********** 主类中的静态块 *************") ;
}
public static void main(String args[]){
new Demo() ;
new Demo() ;
new Demo() ;
}
};
(2)内部类
内部类:在一个类的内部包含的类,可以方便的访问外部类中的私有成员
如果想在外部类之外使用内部类的实例化对象:
外部类名称 外部类对象=new 外部类名称()
外部类名称.内部类名称 内部类对象名称=外部类对象.new 内部类名称()
如果一个内部类使用static关键字声明的话,则此内部类就将成为外部类,可以直接通过:
外部类.内部类 的形式访问。
class Outer{
private static String name = "HELLO WORLD!!!" ;
static class Inner{
public void print(){
System.out.println("name = " + name) ;
}
};
};
public class InnerClassDemo04{
public static void main(String args[]){
Outer.Inner in = new Outer.Inner() ; // 实例化内部类对象
in.print() ;
}
};
在方法中定义的内部类,可以直接访问外部类中的各个成员,但是如果要访问方法中的参数,则在参数上要使用final关键字声明。
class Outer{
private String name = "HELLO WORLD!!!" ;
public void fun(final int temp){
class Inner{
public void print(){
System.out.println("temp = " + temp) ;
System.out.println("name = " + name) ;
}
}
new Inner().print() ;
}
};
public class InnerClassDemo06{
public static void main(String args[]){
new Outer().fun(30) ;
}
};