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

一、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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值