Java基础知识(四)

来源:互联网 发布:程序员等级划分 编辑:程序博客网 时间:2024/04/28 20:17

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