成员方法的分类:
类方法:有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:我们拿类名直接调用这种方法。