💨——Number类
- java.text.DecimalFormat — 数字格式化
public class DecimalFormatTest01 { public static void main(String[] args) { //java.text.DecimalFormat --- 专门负责数字格式化的 //DecimalFormat 数字格式化 = new DecimalFormat("数字格式"); /* 数字格式有哪些? # --- 代表任意数字 , --- 代表千分位 . --- 代表小数位 0 --- 代表小数位不够时补零 */ DecimalFormat df = new DecimalFormat("###,###,###.0000");//保留4位小数,不够补0 String format = df.format(3124445.12); System.out.println(format);//3,124,445.1200 } }
- java.math.BigDecimal — 属于大数据,精度极高
BigDecimal 属于大数据,精度极高—不属于基本数据类型,属于java对象(引用数据类型)
- 这时SUM公司提供的一个类.专门用于财务软件当中
注:在财务软件中double是不够用的,所以面试中问到财务数据处理时,千万别说double,得说java.math.BigDecimal
public class BigDecimalTest01 { public static void main(String[] args) { //这个100不是普通的100,是精度极高的100 BigDecimal bd1 = new BigDecimal(100); //这个200不是普通的200,是精度极高的200 BigDecimal bd2 = new BigDecimal(200); //求和 //不能使用基本数据类型方式直接 bd1+bd2 ;bd1和bd2都是引用类型,不能直接使用+求和 BigDecimal add1 = bd1.add(bd2);//调用方法求和(差,除,乘) System.out.println(add1);//300 } }
- 这时SUM公司提供的一个类.专门用于财务软件当中
💨——Random类
- 随机获得一个int取值范围的数字(其他类似,查看帮助文档)
public class RandomTest01 { public static void main(String[] args) { Random random = new Random(); //随机获得一个int取值范围内的数字 int nextInt = random.nextInt(); System.out.println(nextInt); //随机获得一个【0,100】区间的数(取左不取右) int nextInt1 = random.nextInt(101); System.out.println(nextInt1); } }
- 案例
public class RandomTest02 { public static void main(String[] args) { /* 编写程序,生成5个不重复的随机数,重复的话重新生成 最终生成的5个随机数放到数组中,要求数组中的这5个随机数不重复 */ Object[] objects = new Object[5]; Random random = new Random(); for (int i = 0; i < objects.length; i++) { Integer num = random.nextInt(10); while (isEqual(objects, num)) { num = random.nextInt(10); } objects[i] = num; } System.out.println(Arrays.toString(objects)); } public static boolean isEqual(Object[] objects,Integer num) { for (int i = 0; i < objects.length; i++) { if (num.equals(objects[i])) { return true; } } return false; } }
💨——枚举类
- 在java中,一个方法如果需要具体的值来代表返回的结果,尽量不要使用int返回值,如果返回结果输入错了,编译器是不会报错的(所有的错误尽可能让编译器找出来,所有的错误越早发现越好!)
public class EnumTest01 { public static void main(String[] args) { //System.out.println(10 / 0); //java.lang.ArithmeticException: / by zero int retValue = divide(10, 2); System.out.println(retValue == 1 ? "计算成功" : "计算失败"); // 计算成功 int retValue2 = divide(10, 0); System.out.println(retValue2 == 0 ? "计算失败" : "计算成功"); // 计算失败 } /** * 需求(这是设计者说的!):以下程序,计算两个int类型数据的商,计算成功返回1,计算失败返回0 * @param a int类型的数据 * @param b int类型的数据 * @return 返回1表示成功,返回0表示失败! */ public static int divide(int a, int b){ try { int c = a / b; // 程序执行到此处表示以上代码没有发生异常。表示执行成功! return 1; // 设计缺陷?在这个方法的返回值类型上。返回一个int不恰当。 // 如果返回值输入错误为:return 10; // 返回10已经偏离了需求,实际上已经出错了,但是编译器没有检查出来。 // 我们一直想追求的是:所有的错误尽可能让编译器找出来,所有的错误越早发现越好! } catch (Exception e){ // 程序执行到此处表示以上程序出现了异常! // 表示执行失败! return 0; } } }
- 如果一个方法只需要返回两种情况,建议使用boolean类型返回true和false表示两种情况,
public class EnumTest01 { public static void main(String[] args) { boolean success = divide(10, 0); System.out.println(success ? "计算成功" : "计算失败"); } /** * 计算两个int类型数据的商,计算成功返回true,计算失败返回false * @param a int类型数据 * @param b int类型数据 * @return 返回值为true表示计算成功,返回值为false表示计算失败 */ public static boolean divide(int a, int b){ try { int c = a / b; return true; } catch (Exception e){ return false; } }
- 但是在以后的开发中,有可能遇到一个方法的执行结果可能包括三种情况,四种情况,五种情况不等,但是每一个都是可以数清楚的,一枚一枚都是可以列举出来的。这个布尔类型就无法满足需求了。此时需要使用java语言中的枚举类型。
- 枚举是一种引用数据类型
- 枚举的语法:
// 枚举编译之后也是生成class文件。 // 枚举中的每一个值可以看做是常量。 enum 枚举类型名{ 枚举值1,枚举值2,枚举值3 }
- 结果只有两种的建议使用boolean类型
结果超过两种并且还是可以一枚一枚列举出来的,建议使用枚举类型
public class EnumTest01 { public static void main(String[] args) { Result result = divide(10, 0); System.out.println(result == Result.SUCCESS ? "计算成功" : "计算失败"); } /** * 计算两个int类型数据的商,计算成功返回true,计算失败返回false * @param a int类型数据 * @param b int类型数据 * @return Result.SUCCESS表示成功;Result.FAIL表示失败 */ private static Result divide(int a, int b) { try { int c = a / b; return Result.SUCCESS; } catch (Exception e) { return Result.FAIL; } } } enum Result { // SUCCESS 是枚举Result类型中的一个值 // FAIL 是枚举Result类型中的一个值 // 枚举中的每一个值,可以看做是“常量” SUCCESS, FAIL }