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;
}
}