Java高级常用类

LocalDateTime,StringBuilder,BigDecimal


LocalDateTime使用(通过这个类创建一个日期时间的实例对象)

// LocalDate -->日期
// LocalTime -->时间
// LocalDateTime -->日期和时间

对于日期时间进行格式化输出:DateTimeFormatter.ofPattern(“指定的格式”)

y表示年份,M表示月份,d表示日期,H表示小时,m表示分钟,s表示秒

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

调用指定的格式:dtf.format(LocalDateTime实例化对象)

–》2025-3-18 14:39:05

public class NetTest {
    public static void main(String[] args) {
    // TODO:掌握Java提供的获取时间的方案
    //     jdk8之前的方案 :Date
        Date date = new Date();
        System.out.println(date);
    // 格式化输出时间SimpleDateFormat-->y表示年份,M表示月份,d表示日期,H表示小时,m表示分钟,s表示秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String result = sdf.format(date);
        System.out.println(result);

    // TODO:jdk8以后的方法
    //     LocalDate -->日期
    //     LocalTime -->时间
    //     LocalDateTime -->日期和时间
        System.out.println("=================================");
        LocalDateTime now = LocalDateTime.now();

        System.out.println(now);
    //     格式化输出时间:DateTimeFormatter
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println(dtf.format(now));
    }

StringBuilder(用于操作字符串,性能较高)高效拼接字符串

原有方法是通过+对于String字符串进行拼接的

但是由于String这个类是个final类,
所以无法修改它的内容,所以只能通过new一个新对象来替换
导致会有很多无用对象产生,从而导致内存溢出,效率较低

现在推荐选用StringBuilder的append方法进行字符串的拼接(可以进行链式编程)

sb.append("hello").append(" ").append("world");
// TODO:通过String来进行定义字符串,通过StringBuilder进行操作字符串
public static void main(String[] args) {
// TODO:实现高效拼接字符串
//     原有方法是通过 + 进行拼接字符串
/*但是由于String这个类是个final类,
所以无法修改它的内容,所以只能通过new一个新对象来替换*/
//导致会有很多无用对象产生,从而导致内存溢出,效率较低
//  TODO:通过StringBuilder进行拼接字符串
//     这种方式运行起来会快很多,因为StringBuilder是一个可变容器
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 10000; i++) {
        sb.append(i).append(" ");
    }
    System.out.println(sb);
// 最终还是需要通过toString()方法将StringBuilder转化为String
    String s = sb.toString();
    System.out.println(s);

    System.out.println("-----------------------------------------");
    // StringBuilder支持链式编程
    StringBuilder sb2 = new StringBuilder();
    sb2.append("hello").append(" ").append("world");
    System.out.println(sb2);

//  reserve()方法可以反转StringBuilder中的内容
    sb2.reverse();
    System.out.println(sb2);
}

BigDecimal(用于解决浮点数的运算的失真问题)

double的0.05+0.01

这个运算会无限接近于0.06(0.06无法表示因为计算机底层的二进制表示无法表示出这个值

BigDecimal的使用步骤:

BigDecimal.valueOf(double类型的数据)–》得到一个BigDecimal类型的对象

通过这个对象进行运算操作

两个BigDecimal对象bd1,bd2

加法(add)bd1.add(bd2)

减法(subtract)bd1.subtract(bd2)

乘法(multiply)bd1.mutiply(bd2)

除法(devide)bd1.devide(bd2)

TODO:用于项目实例的除法运算的时候:

bd1.devide(bd2,精确的位数,舍入模式)

public static void main(String[] args) {
    // 通过BigDecimal避免浮点数运算结果失真问题
    double d1 = 0.05;
    double d2 = 0.01;
    double d3 = d1 + d2;//结果无限接近于0.06,但是0.06无法表示因为计算机底层的二进制表示无法表示出这个值
    System.out.println(d3);
//     TODO:通过BigDecimal解决浮点数运算结果失真问题
//     1、将浮点数转换为字符串
//     2、将字符串转换为BigDecimal对象--》调用对应的字符串的构造方法public BigDecimal(String val)
    String s1 = 0.05 + "";
    String s2 = 0.01 + "";
    // String s=Double.toString(0.05);
    BigDecimal bd1 = new BigDecimal(s1);
    BigDecimal bd2 = new BigDecimal(s2);
    BigDecimal bd3 = bd1.add(bd2);
    System.out.println(bd3);

//     TODO:优化方法
//     通过直接调用BigDecimal的valueOf方法
//     底层就相当于是调用的构造方法public BigDecimal(String val)
    BigDecimal bd4 = BigDecimal.valueOf(0.05);
    BigDecimal bd5 = BigDecimal.valueOf(0.01);
    BigDecimal bd6 = bd4.add(bd5);
//     TODO: 最终目的是将BigDecimal转换为double--》调用对应的doubleValue方法
    double d4 = bd6.doubleValue();
    System.out.println(d4);

// 减法 subtract
    BigDecimal bd7 = new BigDecimal("0.05");
    BigDecimal bd8 = new BigDecimal("0.01");
    BigDecimal bd9 = bd7.subtract(bd8);
    double d5 = bd9.doubleValue();
    System.out.println(d5);

//  乘法 multiply
    BigDecimal bd10 = new BigDecimal("0.05");
    BigDecimal bd11 = new BigDecimal("0.01");
    BigDecimal bd12 = bd10.multiply(bd11);
    double d6 = bd12.doubleValue();
    System.out.println(d6);

//   除法 divide
    BigDecimal bd13 = new BigDecimal("0.05");
    BigDecimal bd14 = new BigDecimal("0.01");
    BigDecimal bd15 = bd13.divide(bd14);
    double d7 = bd15.doubleValue();
    System.out.println(d7);


//  TODO:除法运算的另外一种写法
//     bd1.divide(bd2,精确几位,舍入模式)
    BigDecimal bd16 = new BigDecimal("0.01");
    BigDecimal bd17 = new BigDecimal("0.03");
    BigDecimal bd18 = bd16.divide(bd17,2,BigDecimal.ROUND_HALF_UP);
    double d8 = bd18.doubleValue();
    System.out.println(d8);
}

你可能感兴趣的:(Java,java,开发语言)