Java关键字 1.static
static关键字1、用static关键字修饰的成员都是类成员(类成员不需要通过对象/实例去访问)2、类成员可以通过类名直接访问3、类成员也可以通过对象去访问4、一个为空的类型对象也可以调用类中的类成员,不会报空指针异常5、类成员只有一份资源,通过类名访问,对象访问,空对象访问的都是同一份资源,只要修改一次,那么其他访问结果也会全部被修改6、static关键字可以修饰属性、方法、代码块和内部类7、类成员(静态成员)不能直接访问实例成员(非静态成员)8、实例成员可以随意访问类成员9、在类成员中不能使用this和super关键字10、类成员会随着类加载的时候被加载,仅仅只会被加载一次 public class StaticDemo { public static void main(String[] args) { // TODO Auto-generated method stub Car s = null; System.out.println(Car.type); Car c = new Car(); System.out.println(c.type); Car c2 = null; System.out.println(c2.type); Car c3 = new Car(); System.out.println(c3.type);//X6 Car c4 = null; System.out.println(c4.type); } } /** * 宝马X5汽车类 * @author Ken * */ class Car{ /** * 实例成员 */ int weight; /** * 类成员 */ static String type = "宝马X5";//型号 public static void run(){ System.out.println("父类的静态方法"); } } class SmallCar extends Car{ public static void run(){ System.out.println("子类的静态方法"); } }2.final * final – 最终的 * 1、final的修饰范围:类(外围类和内部类)、属性(全局属性和局部属性)、方法 * 2、final修饰属性:表示该属性只能初始化一次,过后不能在改变该变量的值 * 例如:final int i; i = 10; 或者 final int i = 10; * 1)如果final修饰全局变量,则全局变量不在会被系统自动初始化,需要程序员手动为该变量初始化 * 2)如果final修饰的是引用变量,则表示该变量不能修改对象的指向,设置为null也不行 * 对象中的属性仍然可以随意修改 * * 3、final修饰方法:表示该方法无法被子类重写,但是子类的重写方法可以添加final修饰符 * 4、final修饰类:表示该类不能被继承
//定义一个常量,通常常量名全部大写 public static final int MAX = 10;常量类
/** * 常量类 * @author Ken * */ public class Constants { public static final String NEWS_URL = "www.baidu.com"; }3.单例模式 * 单例模式:某个类,在任何情况下,都希望得到同一个对象 * 1、把构造方法私有化 * 2、提供一个方法获得类的对象
public class SingleClass { //懒汉式的单例模式,比较懒,自己不主动创建对象(线程不安全) private SingleClass(){}//把构造方法私有化,不允许外界通过构造方法创建新的对象 private static SingleClass singleClass = null; //提供一个方法获得类的对象 public static SingleClass getInstance(){ if(singleClass == null){ singleClass = new SingleClass(); } return singleClass; } } public class SingleClass2 { //饿汉式单例模式,比较饿,初始化的时候就把对象给创建出来了 private SingleClass2(){}//构造方法私有化 private static SingleClass2 singleClass2 = new SingleClass2(); public static SingleClass2 getInstance2(){ return singleClass2; } }