• 常用类学习(数字类、随机数、枚举详解)


    ✅作者简介:大家好我是@每天都要敲代码,一位材料转码农的选手,希望一起努力,一起进步!
    📃个人主页:@每天都要敲代码的个人主页
    🔥系列专栏:牛客网C语言刷题专栏
    💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习

    目录

    🥅数字类

    ❤️1.数字格式化(了解)

    ❤️2.高精度BigDecimal(重点)

    🥅随机数(Random)

    ❤️1.产生随机数

    ❤️2.提升练习

    🥅枚举(Enum)

    ❤️1.为什么使用枚举类型?

    ❤️2.使用boolean返回类型进行优化

    ❤️3.使用枚举

    ❤️4.枚举和siwtch结合


    🥅数字类

    ❤️1.数字格式化(了解)

    (1)java.text.DecimalFormat用来数字格式化

    (2)DecimalFormat df = new DecimalFormat("数字格式");

    (3)数字格式有哪些?

            # 代表任意数字

            , 代表千分位

            . 代表小数点

            0 代表不够时补0

            例如:###,###.##;表示:加入千分位,保留2个小数。

    1. package com.bjpowernode.javase.number;
    2. import java.text.DecimalFormat;
    3. public class DecimalFormatTest01 {
    4. public static void main(String[] args) {
    5. DecimalFormat df = new DecimalFormat("###,###.##");
    6. String s = df.format(12345.561243);
    7. System.out.println(s);//"12,345.56"
    8. //保留4个小数位,不够补上0
    9. DecimalFormat df2 = new DecimalFormat("##,###.0000");
    10. String s2 = df2.format(1234.56);
    11. System.out.println(s2); //1,234.5600
    12. }
    13. }

    ❤️2.高精度BigDecimal(重点)

    java.math.BigDecimal 属于大数据,精度极高。不属于基本数据类型,属于java对象(引用数据类型)这是SUN提供的一个类。专门用在财务软件当中

    1. package com.bjpowernode.javase.number;
    2. import java.math.BigDecimal;
    3. public class BigDecimalTest {
    4. public static void main(String[] args) {
    5. //1.精度极高的100,不是普通的数据100
    6. BigDecimal v1 = new BigDecimal(100);
    7. //2.精度极高的200,不是普通的数据200
    8. BigDecimal v2 = new BigDecimal(200);
    9. //3.v1和v2都是引用,不能用"+"直接相加,需要调用方法
    10. BigDecimal v3 = v1.add(v2);
    11. System.out.println(v3); //300
    12. BigDecimal v4 = v1.subtract(v2);
    13. System.out.println(v4); //-100
    14. BigDecimal v5 = v1.multiply(v2);
    15. System.out.println(v5); //20000
    16. BigDecimal v6 = v1.divide(v2);
    17. System.out.println(v6); //0.5
    18. }
    19. }

    🥅随机数(Random)

    ❤️1.产生随机数

    1. package com.bjpowernode.javase.random;
    2. //产生随机数
    3. import java.util.Random;
    4. public class RandomTest01 {
    5. public static void main(String[] args) {
    6. //1.产生随机数(int类型取值范围内的数字)
    7. Random random = new Random();
    8. int num1 = random.nextInt();
    9. System.out.println(num1);
    10. //2.有边界的产生随机数
    11. //nextInt翻译为:下一个int类型的数据是101,表示只能取到100
    12. //产生[0-100]之间的随机数,不包括101
    13. int num2 = random.nextInt(101);
    14. System.out.println(num2);
    15. }
    16. }

    ❤️2.提升练习

    ​​​​​​编写程序,生成5个不重复的随机数[0-100]。重复的话重新生成。

    最终生成的5个随机数放到数组中,要求数组中这5个随机数不重复。

    1. package com.bjpowernode.javase.random;
    2. import java.util.Arrays;
    3. import java.util.Random;
    4. /*
    5. 编写程序,生成5个不重复的随机数[0-100]。重复的话重新生成。
    6. 最终生成的5个随机数放到数组中,要求数组中这5个随机数不重复。
    7. */
    8. public class RandomTest02 {
    9. public static void main(String[] args) {
    10. //1.创建一个Random对象
    11. Random random = new Random();
    12. //2.定义一个长度为5的数组
    13. int[] arr = new int[5];
    14. //动态创建的数组,默认值都是0,这样就会分不清是原来默认的0,
    15. //还是产生的随机数0;所以才开始先进行一下初始化为-1
    16. for (int i = 0; i < arr.length; i++) {
    17. arr[i] = -1;
    18. }
    19. //3.把生成的数据放到数组里面
    20. int index = 0; //定义一个下标
    21. while(index < arr.length){
    22. //生成随机数
    23. int num = random.nextInt(101);//为了测试bug可以把这个改成5
    24. if(!contains(arr,num)){
    25. arr[index] = num;
    26. index++;
    27. }
    28. }
    29. //5.打印输出
    30. for (int i = 0; i < arr.length; i++) {
    31. System.out.print(arr[i]+" ");
    32. }
    33. }
    34. //4.封装一个判断数组里有没有生成随机数的方法
    35. public static boolean contains(int[] arr, int key) {
    36. /*
    37. //为了查找效率,采用二分查找(记住先排序)
    38. //1.先进行排序(先排序又会造成每次顺序重排,出现bug)
    39. Arrays.sort(arr);
    40. //2.查找,>=0说明这个元素找到了,找到了说明存在
    41. return Arrays.binarySearch(arr,key) >= 0;
    42. */
    43. //直接遍历
    44. for (int i = 0; i < arr.length; i++) {
    45. if(arr[i] == key){
    46. return true;
    47. }
    48. }
    49. return false;
    50. }
    51. }

    🥅枚举(Enum)

    ❤️1.为什么使用枚举类型?

    需求:计算两个整型数据的商,计算成功返回1,计算失败返回0(就使用int返回值)

    1. // 标识符,关键字不能做标识符。enum是关键字。
    2. package com.bjpowernode.javase.enum1;
    3. /*
    4. 这个案例没有使用java中的枚举,分析以下程序,在设计方面有什么缺陷?
    5. 以下代码可以编译,也可以运行。这些都没有问题。就是设计上你觉得有什么缺陷?
    6. */
    7. public class EnumTest01 {
    8. public static void main(String[] args) {
    9. //System.out.println(10/0); //java.lang.ArithmeticException: / by zero
    10. int x = EnumTest01.divide(1,2);
    11. System.out.println(x); //1
    12. int y = EnumTest01.divide(1,0);
    13. System.out.println(y); //0
    14. }
    15. //需求:计算两个整型数据的商,计算成功返回1,计算失败返回0
    16. // 设计缺陷?在这个方法的返回值类型上。返回一个int不恰当。
    17. // 既然最后的结果只是成功和失败,最好使用布尔类型。因为布尔类型true和false正好可以表示两种不同的状态。
    18. public static int divide(int a,int b){
    19. //------异常处理机制
    20. try{
    21. //正常运行
    22. int c = a/b; //如果这里出错,不会执行try下面的代码,直接执行catch语句下面的
    23. return 1; //比如:这里返回10,编译器也不会报错,但是已经不满足需求了
    24. }catch(Exception e){
    25. //程序发生了异常
    26. return 0;
    27. }
    28. }
    29. }

    ❤️2.使用boolean返回类型进行优化

    1. package com.bjpowernode.javase.enum1;
    2. public class EnumTest02 {
    3. public static void main(String[] args) {
    4. boolean str1 = divide(10,2);
    5. System.out.println(str1?"计算成功":"计算失败");
    6. boolean str2 = divide(10,0);
    7. System.out.println(str2?"计算成功":"计算失败");
    8. }
    9. //需求:计算两个整型数据的商,计算成功返回1,计算失败返回0
    10. //使用boolean类型
    11. public static boolean divide(int a,int b){
    12. //------异常处理机制
    13. try{
    14. //正常运行
    15. int c = a/b;
    16. return true; //这里只要不是true就会报错,不像int返回其它值也不会报错
    17. }catch(Exception e){
    18. //程序发生了异常
    19. return false;
    20. }
    21. }
    22. }

    ❤️3.使用枚举

    (1)divide这个方法的执行结果是只有两种结果,使用true和false完全没问题,但是如果执行的结果有很多种,这就需要枚举类型了!

    (2)枚举:一枚一枚可以列举出来的,才建议使用枚举类型。

    (3)枚举编译之后也是生成class文件

    (4)枚举也是一种引用数据类型

    (5)枚举中的每一个值可以看做是常量
    (6)枚举类型怎么定义,语法是?
         

    1.   enum 枚举类型名{
    2.             枚举值1,枚举值2
    3.         }

    (7)结果只有两种情况的,建议使用布尔类型。
            结果超过两种并且还是可以一枚一枚列举出来的,建议使用枚举类型。
            例如:颜色、四季、星期等都可以使用枚举类型。

    (8)枚举的访问,是采用"枚举名.元素";例如:enum Result{SUCCESS,FAIL},调用的时候就是Result.SUCCESS

    1. package com.bjpowernode.javase.enum1;
    2. public class EnumTest03 {
    3. public static void main(String[] args) {
    4. Result result = divide(10,2);
    5. System.out.println(result == Result.SUCCESS?"计算成功":"计算失败"); //计算成功
    6. Result result1 = divide(10,0);
    7. System.out.println(result1 == Result.SUCCESS?"计算成功":"计算失败"); //计算失败
    8. }
    9. //需求:计算两个整型数据的商,计算成功返回1,计算失败返回0
    10. //使用boolean类型
    11. public static Result divide(int a,int b){
    12. //------异常处理机制
    13. try{
    14. //正常运行
    15. int c = a/b;
    16. return Result.SUCCESS; //这里只要不是true就会报错,不向返回int其它值也不会报错
    17. }catch(Exception e){
    18. //程序发生了异常
    19. return Result.FAIL;
    20. }
    21. }
    22. }
    23. enum Result{
    24. // SUCCESS 是枚举Result类型中的一个值
    25. // FAIL 是枚举Result类型中的一个值
    26. // 枚举中的每一个值,可以看做是“常量”
    27. SUCCESS,
    28. FAIL
    29. }

    ❤️4.枚举和siwtch结合

    高版本的JDK,支持int、String、枚举;byte short char也可以,因为存在自动类型转换。

    1. package com.bjpowernode.javase.enum1;
    2. //枚举和switch结合
    3. public class EnumTest04 {
    4. public static void main(String[] args) {
    5. switch(Season.SUMMER){ //switch里面需要枚举名Season
    6. case SPRING: //case里面不需要枚举名Season
    7. System.out.println("春天");
    8. break;
    9. case SUMMER:
    10. System.out.println("夏天");
    11. break;
    12. case AUTUMN:
    13. System.out.println("秋天");
    14. break;
    15. case WINTER:
    16. System.out.println("冬天");
    17. break;
    18. }
    19. }
    20. }
    21. //枚举
    22. enum Season{
    23. SPRING, SUMMER,AUTUMN,WINTER
    24. }

    结束语

    你想要的牛客都有,各种大厂面试真题在等你哦!快快通过下方链接注册加入刷题大军吧!

     💬刷题神器,从基础到大厂面试题👉点击跳转刷题网站

  • 相关阅读:
    转扩!寻找G2022次列车“旅客”
    从IoTDB的发展回顾时序数据库演进史
    【odoo17】富文本小部件widget=“html“的使用
    Postman接口测试工具详解
    Spring AI 接入OpenAI实现文字生成图片功能
    DataGrip数据仓库工具
    远程开门(关键词-软件版本)
    国内adc芯片公司
    ​软考-高级-信息系统项目管理师教程 第四版【第21章-项目管理科学基础-思维导图】​
    Ubuntu安装深度学习环境相关(yolov8-python部署)
  • 原文地址:https://blog.csdn.net/m0_61933976/article/details/125591570