1.定义
类变量也叫静态变量(静态属性),是该类的所有对象共享的变量,任何一个该类的变量去访问它时,取到的都是相同的值,任何一个该类的对象都可以修改它。
public class ChildGame {
public static void main(String[] args) {
//定义一个变量count,统计有多少小孩加入游戏
Child child1=new Child("白骨精");
child1.join();
//child1.count++;
Child.count++;
Child child2=new Child("狐狸精");
child2.join();
child2.count++;
Child child3=new Child("老鼠精");
child3.join();
child3.count++;
System.out.println("共有"+Child.count+"个小孩加入了游戏");
}
}
class Child{
private String name;
//定义一个变量count,从一个类变量(静态变量)static 静态
//该变量最大的特点就是会被Child类的所有的对象实例共享
public static int count=0;
public Child(String name) {
this.name = name;
}
public void join(){
System.out.println(name+"加入了游戏...");
}
}
书写形式:访问修饰符 static 数据类型 变量名 例如:public static int count;
2.访问
对象.类变量名 或者 类名.类对象名,因为静态变量可以被所有的类对象使用,所以就可以用(类名.类变量名)的形式来访问。
类方法(静态方法)的访问形式和非静态的方法的访问形式只差一个static 。
类方法: 访问修饰符 static 返回类型 方法名(){... }
类方法何时使用:
当方法中不涉及到任何和对象有关的成员时,可以将方法设计成静态方法,提高开发效率。
3.类方法和普通方法的区别
(1).类方法和普通方法都是随着类的加载而加载的,将结构信息存储在方法区,类方法中不能使用this的参数,而普通方法中隐含着this的参数。在我的理解看来,类方法其实部属于某个对象,它是所有对象共用的,所以即使用this也不知道指向哪个对象,所以在类方法中不能使用this。
(2).类方法既可以用类名来调用,也可以通过对象来调用,但是普通方法只能通过对象名来访问。
(3).类方法(静态方法)中只能访问静态变量或静态方法,而普通变量既可以使用静态变量也可以使用普通变量。
public class StaticMethod {
public static void main(String[] args) {
Stu tom = new Stu("tom");
//payFee为静态方法,可以直接用类名调用
Stu.payFee(100);
Stu marry = new Stu("marry");
marry.payFee(200);
Stu.showFee();
}
}
//开发自己的工具类时,可以将方法做成静态的,方便调用
class Stu{
private String name;//普通成员
//定义一个静态变量,积累学生学费
private static double fee=0;
public int n1=10;
public static int n2=20;
public Stu(String name) {
this.name = name;
}
public static void payFee(double fee){
Stu.fee+=fee;
}
public static void showFee(){
System.out.println("总学费有:"+Stu.fee);
}
public static void hello(){
//静态方法中只能使用静态变量n2,不能使用普通变量n1,会报错
System.out.println(n2);
//System.out.println(n1);错误示范
}
}
(4).类方法中不允许使用和对象有关的关键字,比如super和this都不能使用。