在java面向对象设计的类中,经常使用到static修饰符修饰变量,现在来看看static修饰符作用和特点
一:static修饰的变量可以直接通过类名.的方式直接调用
public class static_about {
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student();
student1.room="101";
System.out.println(student1.room);//输出101
System.out.println(student1.room);//输出101
student1.method();//输出成员方法
Student.methodstatic();//输出静态方法
}
}
class Student{
private String name;
private int age;
static String room;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(){
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void method(){
System.out.println("成员方法");
}
public static void methodstatic(){
System.out.println("静态方法");
}
}
在上述代码中,Student类当中,有三个属性,但是room这个属性和methodstatic这个方法被static修饰了 ,所以此时 room这个成员变量就成了静态变量,methodstatic也就成了静态方法,且无论是静态方法还是静态变量都需要new出对象可以直接通过类名.的方式调用,且当我们通过对象调用静态方法其实再javac中还是通过类名.静态变量的方式去获取,所以和对象是无关的。由于这个原因,静态方法中也就不能使用this关键词(this代表的是当前调用的对象,但是静态方法是和对象无关,所以不能使用this关键词)
二:静态方法访问不了非静态变量
private String name;
private int age;
static String room;
public String getName() {
return name;
}
public void method(){
System.out.println("成员方法");
}
public static void methodstatic(){
System.out.println(age);//此时报错
System.out.println("静态方法");
}
在java内存当中,会先加载静态变量,再加载非静态变量,所以内存先加载了静态方法,但是非静态变量此时还没加载到内存当中,所以程序报错:Error:无法从静态上下文获取非静态变量age
三:静态代码块
在上述类中,加入了static修饰的代码块,也就是静态代码块,静态代码块,可以看出静态代码块有两个特点:
1.比非静态变量先执行(在method方法后面但是先输出)
2.在本类中只执行一次(两次new对象只打印了一次)
标签:Java,name,静态,age,修饰符,static,静态方法,public
来源: /bai-boy/p/12175947.html