static(一)
static
- 叫静态,可以修饰成员变量、成员方法。
static修饰成员变量
成员变量按有无static修饰,分为两种:
- 类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享
- 实例变量(对象的变量):无static修饰,属于每个对象的
static修饰成员变量的应用场景
类变量的应用场景
- 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。
案例导学:
- 系统启动后,要求用户类可以记住自己创建了多少个用户对象。
User类
public class User {//类变量public static int number;public User(){//User.number++;//注意:在同一个类中,访问自己类的类变量,才可以省略类名不写number++;}
}
Test类
public class Test {public static void main(String[] args) {//目标:通过案例理解类变量的应用场景User u1 = new User();User u2 = new User();User u3 = new User();System.out.println(User.number);}
}
运行结果为:3
static修饰成员方法
成员方法的分类
- 类方法:有static修饰的成员方法,属于类
- 成员方法:无static修饰的成员方法,属于对象
static修饰成员方法的应用场景
类方法的场景应用场景
- 类方法最常见的应用场景是做工具类
工具类是什么?
- 工具类中的方法都是一些类方法,每个类方法都是用来完成一个功能的,工具类是给开发人员共同使用的。
使用类方法来设计工具类有啥好处?
- 提高了代码的复用性;调用方便,提高了开发效率
案例
当一个程序下登录需要一个4位验证码,注册需要6位验证码时,就可以用工具类来解决
LoginDemo类
public class LoginDemo {public static void main(String[] args) {System.out.println(MyUtil.creatCode(4));}
}
RegistDemo类
public class RegistDemo {public static void main(String[] args) {System.out.println(MyUtil.creatCode(6));}
}
MyUtil类
import java.util.Random;public class MyUtil {public static String creatCode(int number){String code = "";String date = "abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ123456789";Random ra = new Random();for (int i = 0; i < number; i++) {int index = ra.nextInt(date.length());code += date.charAt(index);}return code;}
}
为什么工具类中的方法要用类方法,而不是实例方法?
- 实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存
- 类方法,直接用类名调用即可,调用方法,也能节省内存
- 工具类没有创建对象的需求,建议将工具类的构造器进行私有