一(状态修饰词static)
static即为静态的意思。它可以修饰类的成员变量,成员方法,代码块,但不能修饰局部变量。
静态变量:被static修饰的成员变量,该变量称为静态变量,可以被所有实例所共享。
静态方法:被static修饰的方法,该方法称为静态方法。
Java中的程序入口就是一个静态方法。
public static void main(String[] args){
方法体
}
访问静态变量:类名.变量名(推荐)
package day11;
class Student{
static String schoolName;//声明静态变量schoolName
}
public class Demo1 {
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+"的学生");
}
}
访问静态方法:1类名.方法名(推荐) 2实例对象名.方法名
package day11;
class Person{
public static void say(){
System.out.println("Hello");
}
}
public class Demo2 {
public static void main(String[] args) {
//1用"类名.方法名"的形式调用静态方法
Person.say();
//2用“实例化对象.方法名”调用静态方法
Person p1=new Person();
p1.say();
}
}
由此可见,静态方法不需要创建对象就能通过类名调用。也可以通过实例化对象的方式调用静态方法。
注意:静态方法不可以调用非静态方法
静态方法可以调用静态方法
静态方法不可以调用非静态变量
静态方法可以访问静态变量
非静态方法中有隐式的this传递,静态方法中是没有的
package day11;
public class Demo {
public static void main(String[] args) {
Eoo eoo=new Eoo();
eoo.test01();
}
}
class Eoo{
static int a=10;
int b=20;
public static void staticTest01(){
//静态方法中没有this的概念
// System.out.println(this.b);静态方法中不可以使用this,
//b test01() test02()非静态资源,只能通过对象来访问,
//所以在静态方法中无法直接访问非静态资源
}
public void test01(){
//非静态方法中有隐式this传递
System.out.println(b);//==System.out.prin