美文网首页
JavaSE进阶六 通用类

JavaSE进阶六 通用类

作者: SimonLike | 来源:发表于2021-06-11 16:53 被阅读0次

java中对日期的处理

  • SimpleDateFormat是java.text包下,专门处理日期格式化的类。
  • 以下代码主要掌握:
    • 1,获取系统当前时间
    • 2,String --> Date
    • 3,Date --> String
代码示例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest01 {
    public static void main(String[] args) throws ParseException {
        // 获取系统当前时间
        // 直接调用无参数构造方法
        Date date = new Date();
        System.out.println(date);//

        // 将日期格式化
        // SimpleDateFormat是java.text包下,专门处理日期格式化的类。
        /*
            yyyy    年(4位)
            MM      月(2位)
            dd      日(2位)
            HH      时(2位)
            mm      分(2位)
            ss      秒(2位)
            SSS     毫秒(3位,最多999,1000毫秒=1秒)
         */
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        // final String format(Date date)
        System.out.println(sdf.format(date));

        // 日期字符串装 转换成Date类型
        // String --> Date
        String time = "2020-05-18 18:31:59 703";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date dateTime = sdf2.parse(time);
        System.out.println(dateTime); // Mon May 18 18:31:59 CST 2020

        // 获取自1970年1月1日 00:00:000到系统时间的总毫秒数。
        long nowTimeMillis = System.currentTimeMillis();
        System.out.println(nowTimeMillis);//1621392452225

        // 统计一个方法耗时
        long begin = System.currentTimeMillis();
        print();
        long end = System.currentTimeMillis();
        System.out.println("调用print方法耗时:" + (end - begin) + "毫秒");

    }

    public static void print(){
        for (int i = 0 ;i < 1000;i++){
            System.out.println("i=" + i);

        }
    }
}

java中的数字格式化

  • DecimalFormat是java.text包下,专门处理数字格式化的类。

       new DecimalFormat("数字格式化");
    
  • 关于数字格式化:

      #  代表任意数字
      ,  代表千分位
      .  代表小数点
      0  代表不够补0
    
代码示例
import java.text.DecimalFormat;

public class NumberTest01 {
    public static void main(String[] args) {
        /*关于数字格式化:
            # 代表任意数字
            , 代表千分位
            . 代表小数点
            0 代表不够补0
         */

        // ###,###.##  表示加入千分位,保留2个小数。
        DecimalFormat df = new DecimalFormat("###,###.##");
        String s = df.format(12345.562);
        System.out.println(s);// 12,345.56

        DecimalFormat df2 = new DecimalFormat("###,###.0000");
        String s2 = df2.format(12345.562);
        System.out.println(s2);// 12,345.5620

    }

}

java中的BigDecimal类

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

public class NumberTest02 {
    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal(200);
        BigDecimal bigDecimal1 = new BigDecimal(300);

        // 求和
        BigDecimal sum =  bigDecimal.add(bigDecimal1);
        System.out.println(sum);// 加

        System.out.println(bigDecimal1.subtract(bigDecimal)); // 减
        System.out.println(bigDecimal1.multiply(bigDecimal)); // 乘
        System.out.println(bigDecimal1.divide(bigDecimal)); // 除

    }
}

java中的随机数

  • Random是java.util包下,专门处理随机数的类。

       Random random = new Random();
    
代码示例
import java.util.Arrays;
import java.util.Random;

public class RandomTest01 {
    public static void main(String[] args) {
        // 创建随机对象
        Random random = new Random();

        // 随机产生一个int类型取值范围内的数字
        int num1 = random.nextInt();
        System.out.println(num1);

        // 生成[0-100]之间的随机数
        // nextInt表示:下一个int类型的数据是101,表示只能取到100
        int num2 = random.nextInt(100);
        System.out.println(num2);


        // 生成5个不重复的随机数,重复重新生成,最终生成的5个随机数放到数组中。

        int[] arr = new int[5]; // 元素默认为 0

        //为了避免和随机数的0冲突,重新赋值
        for (int i = 0; i < args.length;i++){
            arr[i] = -1;
        }

        int index = 0;
        while (index < arr.length){
            int temp = random.nextInt(7);
            System.out.println("生成的随机数" + temp);
            if (!contains(arr,temp)){
                arr[index++] = temp;
            }
        }

        // 遍历输出
        for (int j = 0; j < arr.length;j++){
            System.out.println("random=" + arr[j]);
        }

    }

    /**
     * 这个方法用来判断数组中是否包含某个元素
     * @param list
     * @param key
     * @return true表示包含,false表示不包含
     */
    public static boolean contains(int[] list,int key){
       /*
        二分法查找,数组排序会有bug出现。。。。
        // 对数组排序
        // Arrays.sort(list);
        // 二分法查找数组是否有该元素 >= 0 表示找到 证明存在该元素
        // return Arrays.binarySearch(list,key) == 0;
        */
        for (int i = 0;i < list.length; i++){
            if (list[i] == key){
                return true;
            }
        }
        return false;
    }
}

java中的枚举

前言

  • 分析以下案例理解引出枚举。
  • 开发中可能遇到一个方法执行结果可能包括三种四种五种情况... ,但每种情况都是可以列举出来的,这是布尔类型无法满足的,所以需要使用Java语言中的枚举类型。
// 分析以下程序,在设计方面有什么缺陷?
// 程序可以正常编译,也可以正常运行,是没问题的
// 设计缺陷在方法的返回值类型上,返回一个int不恰当;
// 既然最后的结果只是成功和失败,最好使用布尔类型。

public class EunmTest01 {
    public static void main(String[] args) {
        /*
        int res = divide(20,5);
        System.out.println(res); // 1

        int res2 = divide(20,0);
        System.out.println(res2); // 0
         */
        boolean res3 = divide(20,0);
        System.out.println(res3 ? "计算成功" : "计算失败");

    }

    /**
     * 以上程序计算两个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;
            // 程序执行到此处表示以上代码没发生异常,执行成功!
            // 如果返回是int类型,程序员误写成返回10,程序编译是检查不出来的。
            return 1;
        }catch (Exception e){
            // 程序执行到此处表示以上程序出现了异常,执行失败!
            return 0;
        }
    }
    */

    // 好的设计写法
    public static boolean divide(int a, int b){
        try {
            int c = a / b;
            // 程序执行到此处表示以上代码没发生异常,执行成功!
            return true;
        }catch (Exception e){
            // 程序执行到此处表示以上程序出现了异常,执行失败!
            return false;
        }
    }
}

使用枚举

  • 枚举是一种引用数据类型。

  • 枚举编译之后也是生成class文件。

  • 枚举中的每一个值可以看做是常量

  • 枚举怎么定义,语法是:

      eunm 枚举类型名{
          枚举值1,枚举值2,枚举值3,...
      }
    
  • 结果只有两种情况的,建议使用布尔类型。

  • 结果超过两种并且可以一枚一枚列举出来的,建议使用枚举类型。

     例如:颜色,四季,星期等都可以使用枚举类型。
    
代码示例
public class EunmTest02 {
    public static void main(String[] args) {
        Result rf = divide(10,1);
        System.out.println(rf == Result.SUCCESS ? "计算成功" : "计算失败");

        // 使用switch调用枚举
        // switch语句支持枚举,switch也支持String,int
        switch (Season.SUMMER){
            // 必须省略Season.
            case SPRING:
                System.out.println("春天");
                break;
            case SUMMER:
                System.out.println("夏天");
                break;
            case AUTUMN:
                System.out.println("秋天");
                break;
            case WINTER:
                System.out.println("冬天");
                break;
        }
    }

    // 使用枚举改造程序
    public static Result divide(int a, int b){
        try {
            int c = a / b;
            // 程序执行到此处表示以上代码没发生异常,执行成功!
            return Result.SUCCESS;
        }catch (Exception e){
            // 程序执行到此处表示以上程序出现了异常,执行失败!
            return Result.FAIL;
        }
    }
}

enum Result{
    SUCCESS,FAIL
}

/*
    四季枚举
 */
 enum Season {
    SPRING,SUMMER,AUTUMN,WINTER
}

上篇:JavaSE进阶五 包装类
下篇:JavaSE进阶七 异常

相关文章

  • JavaSE进阶六 通用类

    java中对日期的处理 SimpleDateFormat是java.text包下,专门处理日期格式化的类。 以下代...

  • JavaSE进阶五 包装类

    java中的包装类 java中对8种基本数据类型提供了8种包装类型;包装类是引用类型,父类是Object。 为什么...

  • JavaSE进阶-04-常用类

    String 关于Java JDK中内置的一个类:java.lang.String1.String表示字符串类型,...

  • JavaSE梳理六:复用类

    1,初始化对象引用 1,在定义对象的地方,优先于构造器被初始化 2,在类构造器中 3,在使用对象之前,惰性初始化。...

  • 六,类的进阶

    1,类的构造器 当我们定义一个Person类时 带 var/val 字段的属性 是类内全局可见的 而后面age ...

  • JavaSE——常用类

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...

  • JavaSE——常用类

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...

  • JavaSE——常用类

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...

  • JavaSE集合类

    JavaSE集合类 概述 Java中集合类概述Java中数组与集合的比较Java中集合框架层次结构 Collect...

  • 待解决

    ExtClassLoader加载扩展类,扩展类的作用?https://docs.oracle.com/javase...

网友评论

      本文标题:JavaSE进阶六 通用类

      本文链接:https://www.haomeiwen.com/subject/ffgqsltx.html