this、static关键字(静态变量、方法、代码块)| 单例模式

来源:互联网 发布:java api中文版下载 编辑:程序博客网 时间:2024/05/22 11:38

一、this关键字

①可以明确访问一个类的成员变量,解决与局部变量名称冲突的问题

int age;public Person (int age ){    this.age=age;//this.age 代表第一个age;age代表第二个age}

②可以通过this关键字调用成员方法,在方法中调用一个方法的时候,可以不写this
③构造方法不能像其他方法一眼在程序中被调用,但是可以使用this关键字,在一个构造方法中调用其他构造方法。

//调用无参this();//调用有参this("参数");

使用this调用构造方法应该注意
①只能在构造方法中使用,不能再成员方法中使用
②使用this调用构造方法的语句必须位于第一行,只能出现一次
③不能在一个类的两个构造方法中使用this相互调用

二、static关键字

静态变量 :
只有一份,却可以被一个类的所有变量共享。例如一个学校被很多学生共享。
被static修饰的变量叫静态变量,可以使用“类名.变量名”的形式来访问
因为static是被共享的,所以只能修饰成员变量,不能修饰局部变量

class Student{    static String schoolName;}public class Test01{    public static void main (String [] args){        Student stu1=new Student();        Student stu2=new Student();        Student.schoolName="哈佛大学";        System.out.println("我的学校是"+stu1.schoolName);        System.out.println("我的学校是"+stu2.schoolName);    }}

静态方法:
static修饰的方法是静态方法,可以不创建对象直接调用的。
同静态变量一样,静态方法也是 类名.方法名,也可以通过类的实例对象来访问
注意:静态方法只可以访问static修饰的成员,因为没有被修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。

静态代码块:
被static修饰的代码块成为静态代码块,当类加载时,代码块会被执行,由于类只加载一次,因此静态代码块只执行一次,因此常用静态代码快对类的成员变量进行初始化

static{     //静态代码块}

静态代码块如果写在main方法前面,则会先于main方法执行。

四、单例模式

class Single{    //自己创建一个对象    private static Single INSTANCE=new Single();    private Single(){};//私有化构造方法    public static Single getInstance(){        return INSTANCE;    }}class Tset02{    public static void main (String [] args){        Single s1=Single.getInstance();        Single s2=Single.getInstance();        System.out.println(s1==s2);    }}//结果是true 说明两次调用getInstance方法获得的是同一个对象,而getInstance是获得Single类实例得到唯一途径,因此Single类是一个单例的类。

单例模式还有一种写法

class Single{    private Single(){}    public static final Single INSTANCE=new Single();}
阅读全文
0 0
原创粉丝点击