目录
一、类变量/静态变量
该变量的最大特点就是会被所在的类的所有实例对象共享
//定义示例 public static int count=0;
细节:
1. 类变量随类的加载而创建,所以即使没有创建对象实例也可以访问(静态变量在类加载的时候就创建了)
2. 非静态变量只能通过实例访问,不能通过类名
如下代码示例
package stack_class;
//类变量随类的加载而创建,所以即使没有创建对象实例也可以访问
public class Child {
public static void main(String[] args){
System.out.println(ChildName.name1);
//System.out.println(ChildName.name2); 非静态变量只能通过实例访问,不能通过类名
ChildName c1 = new ChildName();
System.out.println(c1.name1);
System.out.println(c1.name2);
}
}
class ChildName{
public static String name1 = "jack";
public String name2 = "tom";
}
二、类方法/静态方法
//用法示例
public static void payFee(double fee)
细节:
1.类方法可以通过实例对象或类名调用(使用静态方法开发工具比较方便,因为不用实例化,直接通类名调用即可)(注意:如果通过类名调用方法会直接调用,不管构造器等)
2.类方法不允许使用this和super等关键字(可以使用类名直接用)
3.静态方法只能访问静态变量和静态方法
4.普通方法可以访问静态和非静态
示例如下:
package stack_class;
public class Stu {
public static void main(String[] args){
StuFee s1 = new StuFee("tom");
s1.payFee(200);
StuFee.showFee();
s1.showFee();
StuFee s2 = new StuFee("jack");
s2.payFee(200);
StuFee.showFee();
s2.showFee();
StuFee.payFee(200);
StuFee.showFee();
//静态方法开发工具示例
System.out.println(MyTools.calFee(25,36.9));
}
}
class StuFee{
private static double fee;
private String name;
public StuFee(String name){
this.name = name;
}
//静态方法可以访问静态属性/变量
public static void payFee(double fee){
StuFee.fee += fee;
}
public static void showFee(){
System.out.println("总的学费为"+StuFee.fee);
}
}
//使用静态方法开发工具比较方便,因为不用实例化,直接通类名调用即可
class MyTools{
public static double calFee(double n1, double n2){
return n1 + n2;
}
}