类方法的定义
类方法也叫静态方法
形式
访问修饰符 static 数据返回类型 方法名() {} ——>> !!!推荐使用这种写法
static 访问修饰符 数据返回类型 方法名() {}
package study_static;
public class study02 {
public static void main(String[] args) {
Stu tom = new Stu("tom");
tom.payfee(1000);
Stu stu = new Stu("小白");
stu.payfee(2000);
//输出当前的总学费
Stu.showFee();
}
}
class Stu{
private String name;
//定义一个静态变量,来积累学生的学费
private static double fee = 0;
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);
}
}
说明
1、当方法使用了static 修饰后,该方法就是静态方法
2、静态方法可以访问静态变量/属性
类方法的经典实用场景
- 当方法中不涉及到任何对象相关的成员,就可以将方法设计成静态的方法来提成开发的效率
- Math类、Arrays类、Collections集合类中都有很多的静态方法
如果不希望创建实例,也可以条用某个方法(当成工具来用),这个时候就可以把方法设置成静态方法。
例如:
System.out.println(Math.exp(2));//可以直接调用Math
class MyTools{
//求出俩个数的乘积
public static double Product(double n1,double n2){
return n1*n2;
}
编写自己的工具类,以后可以直接使用
注意事项
- 类方法和普通方法都是随着累的加载而加载,将结构信息存在方法区。
- 普通方法中隐含着this的参数
- 类方法可以通过类名调用,也可以通过对象名调用
- 普通方法和对象有关,需要通过对象名调用,例如 对象名.方法名(参数),不能通过类名调用。
- 类方法中不允许使用和对象有关的关键字,例如this 和 super 。普通方法(成员方法)可以使用。
- 类方法(静态方法)中,只能访问静态变量或者静态方法。
class a{
private int n1 = 1000;
private static int n2 = 2000;
public void hello(){//普通方法
}
public static void hi(){//静态方法
}
public static void word(){
System.out.println(n2);
System.out.println(a.n2);
//System.out.println(this.n2);错误
hi();
//hello(); 错误
}//静态方法只能访问静态成员。
//普通方法都可以访问。
public void helloword(){
hi();
hello();
System.out.println(n1);
System.out.println(n2);
//都是对的
}
}
总结
静态方法, 只能访问静态的成员,非静态方法,可以访问静态成员和非静态成员(需要遵守访问的权限)
在实际开发过程中,往往会将一些通用的方法 设计成静态方法,涉及成静态方法,这样就不需要创建对象就可以使用该方法, 比如打印数组,冒泡排序,完成某些任务。