目录一.static关键字1.1 static 关键字修饰成员变量1.2 static 关键字修饰成员方法1.3 静态的注意事项二. final 关键字三.枚举一.static关键字1.1 static 关键字修饰成员变量特点static修饰的变量叫做静态变量被该类所有对象共享。静态变量不属于对象属于类。静态变量随着类的加载而加载优先于对象而存在。共享对静态变量只要赋值一次只要有一个对象修改了静态变量其他对象再次访问的时候就是修改之后的结果了。调用方式方式一类名调用推荐举个例子创建一个学生类但所有学生共享一个老师改变老师的话所有学生对象里的老师都要变此时可以将老师设置为静态变量。1.2 static 关键字修饰成员方法特点static修饰的方法叫做静态方法该方法多用在测试类和工具类中Javabean类中很少会用调用方式类名调用推荐关于类Javabean类用于描述一类事物的。测试类带有main方法的是测试的主入口。工具类不是描述一类事物的也没有main方法而是帮我们做一些事情的类比如遍历数组求最值等。工具类不可以创建对象写一个工具类类名见名知意一般以Util结尾。私有化构造方法工具类不能被创建对象。工具类里的方法都定义为静态方法外界通过类名调用。Tips:如果不手动写一个私有化构造方法new时会自动创建一个构造方法这个构造方法默认为public所以需要自己写私有化构造方法。举个例子写一个遍历数组的工具类public class ArrayUtils { //私有化构造方法不让外界创建对象 private ArrayUtils() {} //定义静态方法 public static void printArr(int[] arr){ System.out.print([); for(int i0; iarr.length; i){ if(iarr.length-1){ System.out.print(arr[i]]); }else{ System.out.print(arr[i],); } } } }public static void main(String[] args) { //创建一个数组 int[] arr {10,20,30,40,50}; //遍历 ArrayUtils.printArr(arr);//[10,20,30,40,50] }1.3 静态的注意事项静态方法只能访问静态变量和其他的静态方法静态优先于对象产生放在堆里的静态区直接访问会报错。非静态方法可以访问静态变量或者静态方法也可以访问非静态的成员变量和非静态的成员方法。静态方法中是没有this关键字总结静态只能调用静态非静态可以调用所有静态方法无this二. final 关键字final表示最终不可变。可以修饰变量、类、方法。特点只能赋值一次数据不可变常量常量名大写多个单词下划线隔开注意final修饰基本数据类型byte short int long float double char boolean变量里面记录的是真实的数据final int A 10;此时变量里记录的数据无法改变final 修饰引用数据类型int[ ], Student Teacher...stu 里存的是对象的内存地址不可变的是stu里的内存地址而对象里的属性值是可以发生变化的。final Student STU new Student();三.枚举什么是枚举枚举是一个特殊的Javabean类这个枚举类的对象是有限的、固定的 。使用场景订单的状态、月份、星期、游戏角色职业、会议室预约状态、设备状态..格式public enum 枚举类名{对象1枚举项1对象2枚举项2对象3枚举项3属性行为}注意使用枚举对象不用自己创建直接调用就可以枚举类名.枚举项枚举类也不让外界创建本类对象需要私有化构造方法枚举类的构造方法默认private可以省略不写。每一个枚举项都是该枚举类的对象每一个对象都是通过构造方法创建出来的枚举项在底层其实就是常量默认用public static final修饰枚举类的第一行上必须是枚举项枚举项之间用逗号隔开以分号作为结尾编译器会给枚举类新增两个默认存在的方法values()valueof()。values()表示拿到这个枚举类的所有的枚举项valueof()根据枚举项的名字英文找到对应的枚举对象中文说明。举个例子电商项目中订单的状态只有以下6种请编写代码实现。待支付 PAYMENT_PENDING处理中 PROCESSING己发货 SHIPPED配送中 OUT_FOR_DELIVERY己送达 DELIVERED己取消 CANCELLED解释在创建 OrderState 枚举类时第一行的每个枚举项就已经通过调用构造方法创建出对象了创建出来的这个对象就是枚举项本身。也就是说 PAYMENT_PENDING(待支付) 等价于下面这种写法public static final OrderState PAYMENT_PENDING new OrderState(待支付);可以这么理解创建一个名叫 PAYMENT_PENDING 的枚举对象并把 待支付 传给构造方法保存起来。values()表示获取本类所有的枚举项用OrderState.values()会返回一个数组在这个数组中装的就是当前类里所有的枚举项。OrderState[] arr OrderState.values(); for (int i 0; i arr.length; i) { System.out.println(arr[i]); } //输出PAYMENT_PENDING PROCESSING SHIPPED OUT_FOR_DELIVERY DELIVERED CANCELLEDvalueOf()表示获取一个指定的枚举项用OrderState.valueOf(SHIPPED)括号里需要传入枚举项的名字他会得到对应的枚举对象。OrderState shipped OrderState.valueOf(PROCESSING); System.out.println(shipped);//输出PROCESSING