成员方法的分类:
类方法:有static修饰的成员方法,属于类:

成员方法:无static修饰的成员方法,属于对象。

Student类:
package cn.ensource.d2_staticmethod;
public class Student {
    double score;
    // 类方法
    public static void printHelloWorld() {
        System.out.println("Hello World");
        System.out.println("Hello World");
    }
    // 实例方法
    public void printPass() {
        System.out.println("成绩:" + (score >= 60 ? "及格" : "不及格"));
    }
}Test测试类:
package cn.ensource.d2_staticmethod;
public class Test {
    public static void main(String[] args) {
        // 目标:掌握有无static修饰方法的用法
        // 1. 类方法的用法
        // 类名.类方法
        Student.printHelloWorld();
        // 对象.类方法(不推荐)
        Student st = new Student();
        st.printHelloWorld();
        st.score = 80;
        st.printPass();
//        Student.printPass();  // 报错
    }
}执行原理:

实例方法是不允许使用类名调用。
类方法可以使用类名调,也可以使用实例调。
工具类的方法基本上全部都是static修饰的。
补充知识:搞懂main方法:

main方法怎么就能直接跑起来呢?
Java Test ---> Test.main() main方法是类方法。
参数:String[] args
如何把数据传给这个main方法的参数:

在Shell脚本中,就明白这个概念。
static修饰成员方法的应用场景:
类方法最常见的应用场景是做工具类。
工具类是什么?
工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给开发人员共同使用的。

使用类方法设计工具类有什么好处呢?
1)提高了代码的复用性,调用方便,提高了开发效率。
 案例:

两段代码存在重复代码。那就不是好的架构。
同学的讨论:
类方法可以集合到工具类中,而且不用创建对象就能调用。类方法可以用类名直接调用,不需要创建对象,使用起来非常方便。
工具类,类方法:
package cn.ensource.d3_util;
import java.util.Random;
public class MyUtil {
    private MyUtil() {
}
    public static String createCode(int n) {
        String code = "";
        String data = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        Random r = new Random();
        for(int i = 0; i < n; i++) {
            int index = r.nextInt(data.length());
            code += data.charAt(index);
        }
        return code;
    }
}调用工具类中的类方法:
package cn.ensource.d3_util;
import java.util.Random;
public class LoginDemo {
    public static void main(String[] args) {
        System.out.println(MyUtil.createCode(4));;
    }
}package cn.ensource.d3_util;
import java.util.Random;
public class RegisterDemo {
    public static void main(String[] args) {
        System.out.println(MyUtil.createCode(6));
    }
}为什么工具类的方法要用类方法,而不用实例方法呢?
实例方法需要创建对象来调用的,此时对象只是为了调用方法,对象占用内存,这样会浪费内存。
类方法,直接使用类名调用,调用方便,也能节省内存。
多学一招:
工具类没有创建对象的需求,工具类不需要创建对象,建议将工具类的构造器进行私有。
Math 类:

Math类的类方法:前面都有static:我们拿类名直接调用这种方法。




















