1.static关键字
static关键字可以用来修饰成员变量,该变量被称作静态变量,静态变量被所有实例共享。
例:public class Student {
static String schoolName ;
}
//测试类
public class Example {
public static void main ( String [ ] args){
Student s1= new Student();
Student s2= new Student ();
Student.schoolName="陕西理工大学";
/*由于schoolName是静态变量,因此可以直接使用Student。schoolName的方式调用,也可用Student的实例对象进行调用。如s1.schoolName
s2.schoolName*/
system.out,println("鸹貔1的学校是"+s1.schoolName);
system.out.println("鸹貔2的学校是"+s2.schoolName);
}
}
static关键字只能用于修饰成员变量,不能用于修饰局部变量。
静态方法不需要创建对象就可以调用。
静态代码块:在java类中,用static关键字修饰 的代码块称为静态代码块,当类被加载时,静态代码会执行,由于类只加载一次,因此静态代码块只执行一次。
2.单例模式
单例模式是java中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象。
例:public class Single {
//创建一个对象
private static Single INSTANCE = new Single ();
//在类的内部创建一个该类的实例对象,并使用静态变量INSTANCE引用该对象,由于变量要禁止外界直接访问,所以用private修饰。
private Single() { } // 私有化构造方法
//类的构造方法使用private修饰,声明为私有,这样就不能再类 的外部使用new关键字来创建实例对象了。
public static single getInstance( ) { // 提供返回该对象的静态方法
return INSTANCE;
}
}
//测试类
public class Example {
public static void main(String [ ] args) {
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
system.out.println(s1==s2);
}
}
3.请按照以下要求设计一个学生类Student,并进行测试。
a.Student类中包含姓名,成绩两个属性。
b.分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值。
c.Student类中定义一个无参 的构造方法和一个接收两个参数的构造方法,两个参数分别是姓名和成绩属性赋值。
d.在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,另一个使用有参的构造方法,在构造方法中给姓名和成绩赋值。
public class Student {
//成员变量
private String name;
private int grade;
public void Student(){} //无参方法
public void Student(String name, int grade){ // 有参方法
this.name= name;
this.grade = grade;
}
//成员方法
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setGrade(int grade){
this.grade=grade;
}
public int getGrade(){
return grade;
}
}
//测试类
public class StudentDemo {
public static void main(String[] args) {
Student s1 = new Student();
Student s2 = new Student();
//使用无参构造方法
s1.Student();
s2.Student();
s1.setName("鸹貔1");
s2.setName("鸹貔2");
s1.setGrade(89);
s2.setGrade(90);
System.out.println(s1.getName());
System.out.println(s1.getGrade());
System.out.println(s2.getName());
System.out.println(s2.getGrade());
System.out.println("-----------------------");
//使用有参构造方法
s1.Student("鸹貔1",89);
s2.Student("鸹貔2",90);
System.out.println(s1.getName()+"----"+s1.getGrade()+"-----"+s2.getName()+"---"+s2.getGrade());
}
}