类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些属性不因对象的不同而改变,将这些属性设置为类属性。如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。
在Java类中,可用static修饰属性、方法、代码块、内部类
被修饰后的成员具备以下特点:
①随着类的加载而加载
②早于对象存在
③修饰的成员,被所有对象所共享
④访问权限允许时,可不创建对象,直接被类调用
类属性(类变量)
按是否使用static修饰,分为:静态属性(类变量)和非静态属性(实例变量)
实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。
静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时, 会导致其他对象调用此静态变量时,是修改过了的。
由于类只会加载一次,则静态变量在内存中也只会存在一份: 存在于方法区的静态域中。
类方法
没有对象的实例时,可以用类名.方法名()
的形式访问由static修饰的类方法。
在static方法内部只能访问类的static修饰的类属性或类方法,不能访问非static的成员。
静态方法中,只能调用静态的方法或属性。
非静态方法中,既可以调用非静态的方法或属性,也可以调用静态的方法或属性。
在静态的方法内,不能使用this关键字、super关键字。
操作静态属性的方法,通常设置为static的。
工具类中的方法,习惯上声明为static的。比如: Math、Arrays、collections。