目录
1.大数值运算类
1.1BigInteger -整数的大数值运算类
package com.qf.big; import java.math.BigInteger; public class Test01 { /** * 知识点:BigInteger - 整数的大数值运算类 */ public static void main(String[] args) { BigInteger big1 = new BigInteger("12345678901234567890"); BigInteger big2 = new BigInteger("12345678901234567890"); BigInteger add = big1.add(big2); System.out.println("加法:" + add); BigInteger subtract = big1.subtract(big2); System.out.println("减法:" + subtract); BigInteger multiply = big1.multiply(big2); System.out.println("乘法:" + multiply); BigInteger divide = big1.divide(big2); System.out.println("除法:" + divide); } }
1.2BigDecimal - 小数的大数值运算类
package com.qf.big; import java.math.BigDecimal; public class Test02 { /** * 知识点:BigDecimal - 小数的大数值运算类 */ public static void main(String[] args) { BigDecimal big1 = new BigDecimal("0.5"); BigDecimal big2 = new BigDecimal("0.4"); BigDecimal add = big1.add(big2); System.out.println("加法:" + add); BigDecimal subtract = big1.subtract(big2); System.out.println("减法:" + subtract); BigDecimal multiply = big1.multiply(big2); System.out.println("乘法:" + multiply); BigDecimal divide = big1.divide(big2); System.out.println("除法:" + divide); } }
package com.qf.big; import java.math.BigDecimal; public class Test03 { /** * 知识点:BigDecimal - 小数的大数值运算类 */ public static void main(String[] args) { BigDecimal big1 = new BigDecimal("10"); BigDecimal big2 = new BigDecimal("3"); BigDecimal divide = big1.divide(big2, 2, BigDecimal.ROUND_HALF_UP); System.out.println("除法:" + divide); } }
2.枚举引入案例
package com.qf.enum_01; public class Test01{ /** * 知识点:枚举引入案例 * * 需求:编写季节类(Season),该类只有四个对象(spring,summer,autumn,winter) * 步骤: * 1.私有化Season的构造方法 -- 目的:让外界不能创建对象 * 2.在类中创建四个对象(spring,summer,autumn,winter) * 3.使用public修饰 -- 目的:扩大访问权限 * 4.使用static修饰 -- 目的:通过类名调用 * 5.使用final修饰 --- 目的:外界不能改动对象 * * 枚举的应用场景:一个类只能有固定的几个对象,就使用枚举代替 */ public static void main(String[] args) { System.out.println(Season.spring); System.out.println(Season.summer); System.out.println(Season.autumn); System.out.println(Season.winter); } }
package com.qf.enum_01; public class Season { public static final Season spring = new Season("春天", "万物复苏"); public static final Season summer = new Season("夏天", "汗如雨下"); public static final Season autumn = new Season("秋天", "秋高气爽"); public static final Season winter = new Season("冬天", "银装素裹"); private String name; private String info; private Season() { } private Season(String name, String info) { this.name = name; this.info = info; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } @Override public String toString() { return "Season [name=" + name + ", info=" + info + "]"; } }
3.枚举案例
package com.qf.enum_02; public class Test01 { /** * 知识点:枚举案例 * * 需求:编写季节类(Season),该类只有四个对象(spring,summer,autumn,winter) * 注意:使用枚举解决该需求 */ public static void main(String[] args) { System.out.println(Season.spring); System.out.println(Season.summer); System.out.println(Season.autumn); System.out.println(Season.winter); } }
package com.qf.enum_02; public class Test02 { /** * 知识点:枚举的常用方法 */ public static void main(String[] args) { //通过对象名获取到指定枚举类中的对象 Season season1 = Enum.valueOf(Season.class, "spring"); System.out.println(season1); //通过对象名获取到指定枚举类中的对象 Season season2 = Season.valueOf("spring"); System.out.println(season2); //获取枚举类中所有的对象,返回对象数组 Season[] values = Season.values(); for (Season season : values) { System.out.println(season); } } }
package com.qf.enum_02; public class Test03 { /** * 扩展:switch如何处理枚举 */ public static void main(String[] args) { switch (Season.spring) { case spring: System.out.println("春天"); break; case summer: System.out.println("夏天"); break; case autumn: System.out.println("秋天"); break; case winter: System.out.println("冬天"); break; } } }
package com.qf.enum_02; public class Test04 { /** * 扩展:switch如何处理字符串 */ public static void main(String[] args) { switch ("C#") { case "BB": System.out.println("BB"); break; case "Aa": System.out.println("Aa"); break; case "CC": System.out.println("CC"); break; } } }
package com.qf.enum_02; //隐性继承于Enum类 public enum Season{ //public static final Season spring = new Season("春天","春雨绵绵"); spring("春天","春雨绵绵"), summer("夏天","烈日炎炎"), autumn("秋天","硕果累累"), winter("冬天","白雪皑皑"); private String name; private String info; private Season() { } private Season(String name, String info) { this.name = name; this.info = info; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } @Override public String toString() { return this.name + " -- " + this.info; } }
package com.qf.enum_02; public enum Color { //枚举里没有定义属性、方法,可以在最后一个对象后面加逗号、分号或什么都不加 RED,GREEN,BLUE; }
4.枚举案例 -- 状态机
package com.qf.enum_03; import java.util.Scanner; public class Test01 { /** * 知识点:枚举案例 -- 状态机 */ public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请选择信号灯:RED,YELLOW,GREEN"); String str = scan.next(); Signal signal = Signal.valueOf(str); String trafficInstruct = getTrafficInstruct(signal); System.out.println(trafficInstruct); scan.close(); } public static String getTrafficInstruct(Signal signal){ String instruct = "信号灯故障"; switch (signal) { case RED: instruct = "红灯停"; break; case YELLOW: instruct = "黄灯请注意"; break; case GREEN: instruct = "绿灯行"; break; } return instruct; } }
package com.qf.enum_03; //信号灯的枚举 public enum Signal { RED,YELLOW,GREEN; }
5.枚举案例 -- 错误码
package com.qf.enum_04; public class Test01 { /** * 知识点:枚举案例 -- 错误码 */ public static void main(String[] args) { System.out.println(AddCode.ERR_1); System.out.println(AddCode.ERR_2); System.out.println(AddCode.OK); } }
package com.qf.enum_04; public enum AddCode { ERR_1(-1,"添加失败-学生信息不合法"), ERR_2(-2,"添加失败-有重复学生"), OK(1,"添加成功"); private int code; private String message; private AddCode() { } private AddCode(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public String toString() { return message; } }
6.枚举案例 -- 组织枚举
package com.qf.enum_05; public class Test01 { /** * 知识点:枚举案例 -- 组织枚举 * * 经验:项目中会把相同的枚举使用类或接口组织起来,一般使用接口组织 * 使用类组织枚举,枚举自动加上static * 使用接口组织枚举,枚举自动加上public static */ public static void main(String[] args) { System.out.println(Code.AddCode.ERR_1); } }
package com.qf.enum_05; public class Code { enum AddCode { ERR_1(-1,"添加失败-学生信息不合法"), ERR_2(-2,"添加失败-有重复学生"), OK(1,"添加成功"); private int code; private String message; private AddCode() { } private AddCode(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public String toString() { return message; } } enum DeleteCode { ERR_1(-1,"删除失败-学生信息不合法"), ERR_2(-2,"删除失败-没有该学生"), OK(1,"删除成功"); private int code; private String message; private DeleteCode() { } private DeleteCode(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public String toString() { return message; } } enum UpdateCode { ERR_1(-1,"修改失败-学生信息不合法"), ERR_2(-2,"修改失败-没有该学生"), ERR_3(-3,"修改失败 -- 修改类型异常"), ERR_4(-4,"修改失败 -- 修改数据不合法"), ERR_5(-5,"修改失败 -- 目标班级上已有学生"), ERR_6(-6,"修改失败 -- 目标学号上已有学生"), OK(1,"修改成功"); private int code; private String message; private UpdateCode() { } private UpdateCode(int code, String message) { this.code = code; this.message = message; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public String toString() { return message; } } }
7.枚举案例 -- 策略枚举
package com.qf.enum_06; public class Test01 { /** * 知识点:枚举案例 -- 策略枚举 * * 需求:制作计算工资的功能 * 分析: * 员工分类:行政人员、讲师、招生 * 部门: * 总经办(行政人员)、品质保障部(行政人员)、就业老师(行政人员) * Java(讲师)、Python(讲师)、HTML(讲师) * 院校(招生)、网咨(招生)、职发(招生) */ public static void main(String[] args) { double salary1 = Salary.generalManagerOffice.getSalary(20000, 0, 0, 20000, 0); System.out.println("计算校长的工资:" + salary1); double salary2 = Salary.qualityAssurance.getSalary(10000, 0, 0, 8000, 0); System.out.println("计算班主任的工资:" + salary2); double salary3 = Salary.academy.getSalary(6000, 0, 0, 4000, 4000); System.out.println("计算院校招生老师的工资:" + salary3); double salary4 = Salary.java.getSalary(1200, 88, 10, 200, 0); System.out.println("计算Java讲师的工资:" + salary4); } }
package com.qf.enum_06; import java.math.BigDecimal; //获取部门工资的枚举 public enum Salary { java(StaffType.teacher),python(StaffType.teacher),HTML(StaffType.teacher), generalManagerOffice(StaffType.administration),qualityAssurance(StaffType.administration),obtainEmployment(StaffType.administration), academy(StaffType.recruitStudents),onlineConsultation(StaffType.recruitStudents),jobDevelopment(StaffType.recruitStudents); private StaffType staffType; private Salary(StaffType staffType) { this.staffType = staffType; } /** * 获取工资 * @param baseSalary 基本工资 * @param classHour 课时 * @param teachingHourSubsidy 课时费 * @param achievements 绩效 * @param recruitStudentsAchievements 招生绩效 * @return 工资 */ public double getSalary(double baseSalary,int classHour,double teachingHourSubsidy,double achievements,double recruitStudentsAchievements){ return staffType.calculateSalary(baseSalary, classHour, teachingHourSubsidy, achievements, recruitStudentsAchievements); } //员工类别的枚举 private enum StaffType{ //底层创建了一个匿名类(Salary$StaffType$1),继承StaffType //创建的是匿名类(Salary$StaffType$1)的对象 -- administration administration { @Override public double calculateSalary(double baseSalary, int classHour, double teachingHourSubsidy, double achievements, double recruitStudentsAchievements) { BigDecimal big1 = new BigDecimal(String.valueOf(baseSalary)); BigDecimal big2 = new BigDecimal(String.valueOf(achievements)); BigDecimal result = big1.add(big2); return result.doubleValue(); } }, teacher { @Override public double calculateSalary(double baseSalary, int classHour, double teachingHourSubsidy, double achievements, double recruitStudentsAchievements) { BigDecimal big1 = new BigDecimal(String.valueOf(baseSalary)); BigDecimal big2 = new BigDecimal(String.valueOf(achievements)); BigDecimal big3 = new BigDecimal(String.valueOf(classHour)); BigDecimal big4 = new BigDecimal(String.valueOf(teachingHourSubsidy)); BigDecimal result = big3.multiply(big4).add(big1).add(big2); return result.doubleValue(); } }, recruitStudents { @Override public double calculateSalary(double baseSalary, int classHour, double teachingHourSubsidy, double achievements, double recruitStudentsAchievements) { BigDecimal big1 = new BigDecimal(String.valueOf(baseSalary)); BigDecimal big2 = new BigDecimal(String.valueOf(achievements)); BigDecimal big3 = new BigDecimal(String.valueOf(recruitStudentsAchievements)); BigDecimal result = big1.add(big2).add(big3); return result.doubleValue(); } } ; public abstract double calculateSalary(double baseSalary,int classHour,double teachingHourSubsidy,double achievements,double recruitStudentsAchievements); } }