一、this 关键字
①通过this关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突问题。
例:
class Person {
int age;
public Person(int age) {
this.age=age;
public int getAge() {
return this.age;
}
}
②通过this关键字调用成员方法,
具体示例代码如下:
class Person
public void openMouth() {
·
·
·
}
public void speak() {
this. openMouth() ;
}
}
二、static 关键字
1.静态变量
在一个Java类中,可以使用static关键字来修饰成员变量,该变量被称作静态变量。静态变量被所有实例共享,可以使用“类名.变量名”的形式来访问。
例:
class Student {
static String schoolName; //定义静态变量schoolName
}
public class Example12 {
public static void main(String[] args) {
Student stul=new Student() ; //创建学生对象
Student stu2=new Student() ;
Student. schoolName= "传智播客"; //为静 态变量赋值
System.out .printIn ("我的学校是"+ stul .schoolName); //打印第一一个学生对象的学校
System.out .printIn("我的学校是"+ stu2.schoolName); //打印第二个学生对象的学校
}
}
2.静态方法
只需要在类中定义的方法前加上“static”关键字即可,这种方法称为静态方法。
例:
class Person {
public static void sayHello() { //定义静态方法
System .out.print1o("he1lo");
}
class Example13 {
public static void main(stringl] args) {
Person. sayHel16() ; //调用静态方法
}
}
3.静态代码块
在Java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一次。在程序中,通常会使用静态代码块来对类的成员变量进行初始化。
例题:静态代码块的使用
class Example14 { //静态代码块
static {
System.out .printin("测试类的静态代码块执行了");
}
public static void main(String[] args) { //下面的代码创建了两个Person对象
Person p1=new Person();
Person p2=new Person();
}
}
class Person {
static String country; //下面是一个静态代码块
static {
country= "china";
System .out .println ("Person类中的静态代码块执行了");
}
}
4、单例模式
单例模式是Java中的种设计模式,它是指在设计 一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象。
例题:实现单例模式
class Single { //自己创建一个对象
prinate staLte single ENSTANCE= new Single ();
public Single() {} // 私有化构造方法
public static Single getInstance() { / /提供返回该对象的静态方法
return INSTANCE;
}
}
例题中的Singles类就实现了单例模式,它具有如下特点:
-
类的构造方法使用private修饰,声明为私有,这样就不能在类的外部使用new关键字来创建实例对象了。
-
在类的内部创建一个该类的实例对象,并使用静态变量INSTANCE引用该对象,由于变量应该禁止外界直接访问,因此使用private修饰,声明为私有成员。
-
为了让类的外部能够获得类的实例对象,需要定义一个静态方法getInstance(),用于返回该类实例INSTANCE.由于方法是静态的,外界可以通过“类名.方法名"的方式来访问。