static
类变量
定义:
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。这个从前面的图也可看出来。
特点:
1.statti类变量是所有类共享的
2.static类变量,在类加载的时候就生成了
定义语法:
访问修饰符 static 数据类型 变量名;
static 访问修饰符 数据类型 变量名;
类变量的访问
类名.类变量名 对象名.类变量名
类方法
类方法也叫静态方法。形式如下:
访问修饰符 static 数据返回类型 方法名0{}
static 访问修饰符 数据返回类型 方法名0{}
类方法的调用
类名.类方法名或者对象名.类方法名
类方法经典的使用场景
当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率例如如:工具类中的方法utils
Math类、Arrays类、Collections集合类看下源码:
注意事项
1)类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区:类方法中无this的参数
普通方法中隐含着this的参数
2)类方法可以通过类名调用,也可以通过对象名调用。
3)普通方法和对象有关,需要通过对象名调用,比如对象名.方法名(参数),不能通过类名
用。
4)类方法中不允许使用和对象有关的关键字,比如this和super。普通方法(成员方法)可以[举例]
5)类方法(静态方法)中只能访问静态变量或静态方法。
6)普通成员方法,既可以访问非静态成员,也可以访问静态成员。
小结:静态方法,只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员必须遵守访问权限)
练习
class Person { //StaticExercise02.java 2min 时间
private int id;
private static int total = 0;
public static int getTotalPerson() {
//id++;//错误,静态方法只能访问静态变量
return total;
}
public Person() {//构造器
total++; //total = 1
id = total;//id = 1
}
}
public class TestPerson {
public static void main(String[] args) {
System.out.println("Number of total is " +Person.getTotalPerson()); //0
Person p1 = new Person();
System.out.println( "Number of total is "+ Person.getTotalPerson()); //1
}
}