WGL的day12

可变字符串

StringBuffer

  • 可变长字符串,JDK1.0提供,运行效率慢线程安全

StringBuilder

  • 可变长字符串,JDK1.5提供,运行效率快,线程不安全,适合单线程
  • StringBuilder比StringStringBuffer效率高比String效率更高
package LastCLass;

public class Class2 {
    public static void main(String[] args) {
        //开始时间
        long start = System.currentTimeMillis();
        /*String string = "";
        for(int i = 0;i<99999;i++){
            string+=i;
        }
        System.out.println(string);*/  //用时长
        StringBuilder sb = new StringBuilder();
        for (int i=0;i<99999;i++){
            sb.append(i);
        }
        long end = System.currentTimeMillis();
        System.out.println("用时:"+(end-start));//用时短
    }
}

BigDecimal

public class Class3 {
    public static void main(String[] args) {
        double d1 = 1.0;
        double d2 = 0.9;
        System.out.println(d1-d2);
        //面试题
        double result = (1.4-0.5)/0.9;
        System.out.println(result);
    }
}
  • 结果为:0.09999999999999998

    ​ 0.9999999999999999

  • double存的是近似值

BigDecimal

  • 精确计算浮点数

  • BigDecimal,大的浮点数的计算

package LastCLass;
import java.math.BigDecimal;
import java.math.RoundingMode;

public class Class3 {
    public static void main(String[] args) {
        double d1 = 1.0;
        double d2 = 0.9;
        System.out.println(d1-d2);
        //面试题
        double result = (1.4-0.5)/0.9;
        System.out.println(result);
        BigDecimal b1 = new BigDecimal("1.0");//给字符串会自动转换
        BigDecimal b2 = new BigDecimal("0.9");
        //减法
        BigDecimal r1 = b1.subtract(b2);
        System.out.println(r1);
        //加法
        BigDecimal r2 = b1.add(b2);
        System.out.println(r2);
        //乘法
        BigDecimal r3 = b1.multiply(b2);
        System.out.println(r3);
        //除法
        BigDecimal r4 = new BigDecimal("1.5")
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal("0.9" ));
        System.out.println(r4);

        BigDecimal r5 = new BigDecimal("10")
                .divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
        //ROUND_HALF_UP四舍五入
        System.out.println(r5);
        
    }
}

Date工具类

  • Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法已经被Calender类中的方法所取代
  • 时间单位:1秒 = 1000毫秒

​ 1毫秒 = 1000微秒

​ 1微妙 = 1000纳秒

package LastCLass;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.util.Date;

public class Class4 {
    public static void main(String[] args) {
        //1.创建Date对象
        Date date1 = new Date();
        System.out.println(date1.toString());
        System.out.println(date1.toLocaleString());//过时方法
        Date date2 = new Date(date1.getTime() - 60 * 60 * 24 * 1000);
        System.out.println(date2.toLocaleString());
        //2.方法after before
        boolean b1 = date1.after(date2);
        System.out.println(b1);
        boolean b2 = date1.before(date2);
        System.out.println(b2);

        //3.比较 compareTo();
        int d = date1.compareTo(date2);
        System.out.println(d);

        //4.比较是否相等equals()
        boolean b3 = date1.equals(date2);
        System.out.println(b3);
    }
}

Calender

  • Calender提供了获取或设置各种日历字段的方法。

  • 构造方法

    • protected Calender() :由于修饰符是protected,所以无法直接创建对象。
  • 其他方法

    在这里插入图片描述

package LastCLass;

import java.util.Calendar;
import java.util.concurrent.Callable;

public class Class5 {
    public static void main(String[] args) {
        //1.创建Calender对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());
        System.out.println(calendar.getTimeInMillis());
        //2.获取时间信息
        int year = calendar.get(Calendar.YEAR);
        //月
        int month = calendar.get(Calendar.MONTH);
        //日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        //小时
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        //分钟
        int minute = calendar.get(Calendar.MINUTE);
        //秒
        int second = calendar.get(Calendar.SECOND);

        System.out.println(year + "年" + (month + 1) + "月" + day + "日" + hour + "时" + minute + "分" + second + "秒");
        //3.修改时间
        Calendar calendar2 = Calendar.getInstance();
        calendar2.set(Calendar.DAY_OF_MONTH,5);
        System.out.println(calendar2.getTime().toLocaleString());

        //4.add,修改时间
        calendar2.add(Calendar.HOUR,1);
        System.out.println(calendar2.getTime().toLocaleString());
        //补充方法
        int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);//这个月的最大天数
        int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);//最小天数
        System.out.println("最大天数为:"+max+"最小天数为:"+min);
            }
        }

SimpleDateFormat

  • SimpleDateFormat是一个以语言环境有关的方式来格式化和解析日期的具体类
  • 进行格式化(日期–>文本)、解析(文本–>日期)。
  • 常用的时间模式字母

在这里插入图片描述

package LastCLass;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Class6 {
    public static void main(String[] args) {
        //1.创建SimpleDateFormat对象 y 年 M 月
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
        //2.创建Date
        Date date = new Date();
        //格式化date(把日期转成字符串)
        String str = sdf.format(date);
        System.out.println(str);
        //解析(把字符串转成日期)
        Date date2 = sdf.parse("2000-09-09");//Idea异常
        System.out.println(date2);

    }
}

System类

  • System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。

在这里插入图片描述

package LastCLass;

public class Class7 {
    public static void main(String[] args) {
        //arraycopy:数组的复制
        //src:原数组
        //srcPos:从哪个位置开始复制
        //dest:目标数组
        //destPos:目标数组的位置
        //length:复制的长度
        int[] arr = {20,18,15,9,15,6,98,4};
        int[] dest = new int[8];
        System.arraycopy(arr,0,dest,0,arr.length);
        //从arr的第0个开始复制到dest的第0个,一共是arr。length个
        for (int i = 0;i<=dest.length;i++){
            System.out.println(dest[i]);
            //arraycopy基于C语言比Arrays.copyOF效率更高


        }
        //System.gc();告诉垃圾回收器回收垃圾
        Class7_Student s1 = new Class7_Student("aaa",19);
        Class7_Student s2 = new Class7_Student("bbb",19);
        Class7_Student s3 = new Class7_Student("ccc",19);
        //正在使用,系统不回收
        new Class7_Student("yyy",18);//系统回收,可能不会回收,由系统 决定
        System.gc();//告诉垃圾回收器回收
    }
}
lass7_Student("aaa",19);
        Class7_Student s2 = new Class7_Student("bbb",19);
        Class7_Student s3 = new Class7_Student("ccc",19);
        //正在使用,系统不回收
        new Class7_Student("yyy",18);//系统回收,可能不会回收,由系统 决定
        System.gc();//告诉垃圾回收器回收
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值