static关键字的使用
static关键字,用于修饰类的成员,如成员变量,成员方法,以及代码块等.
在一个java类中,可以用static 修饰一个成员变量,该变量被称为静态变量,静态变量能被所有实例共享.可以使用 类名.变量名的形式来访问.
static只能用于修饰成员变量,不能用于修饰局部变量,否则编译报错!
静态方法不需要创建对象就可以调用,一个静态方法中只能访问static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象.
静态代码块:在java类中 使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块称为静态代码块!当类被加载时,静态代码块就是会执行,由于类 只加载一次, 所以静态代码块只加载一次!
单例模式
整个程序在运行期间针对该类只存在一个对象
class Demo{
private static Demo demo= new Demo( );//设置为静态 表示在类加载的同时 就已经被创建了!
private Demo( ){ }//构造用private修饰 不能在外部使用new关键字来创建实例对象!
public static Demo getDemo( ){//提供返回该对象的静态方法!
return demo;
}
}
class Demo2{
public static void main(String[]args){
Demo s1 = Demo.getDemo( );
Demo s2 = Demo.getDemo( );
System.out.println(s1==s2);//输出结果为true,说明变量s1和s2引用的是同一个对象,而getDemo( )是获得Demo类对象的唯一方法, 所以Demo类是一个单例类!
}
}
内部类
成员内部类:
class Outer{
private int num = 4;
class Inner{
void show( ){
syso("num="+num ); }
}}
class test{
public static void main(String[]args){
Outer.Inner inner = new Outer( ).new Inner( );
inner.show( )//运行结果是num=4
}
}
静态内部类:
可以使用static 关键字来修饰一个成员内部类,该内部类被称作静态内部类,它可以在不创建外部类对象的情况下被实例化.
格式如下: Outer.Inner inner = new Outer.Inner( )
静态内部类中只能访问外部类的静态成员
在静态内部类中可以定义静态的成员,但是在非静态的内部类中不允许定义静态的成员.
方法内部类
是指在成员方法中定义的类,他只能在当前方法中被使用
程序在使用的时候只能在方法内部创建该类的实例对象!
class Outer{
private int num= 4;
public void test( ){
class Inner{
void show( ){
syso( "num= " +num);
}
}
Inner inner = new Inner( );
inner.show( );
}
}
class Test{
public static void main(String[]args){
Outer outer = new Outer( );
outer.test( );//输出结果是num=4
}
}
final关键字的使用
final关键字可用于修饰类,变量和方法 并赋予其特性:
final修饰的类不能被继承;
final修饰的方法不能被子类重写;
final修饰的变量(成员变量和局部变量)是常量,只能赋值一次.(final修饰成员变量时,虚拟机不会对其进行初始化)