ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java其他类

2022-01-12 19:00:56  阅读:142  来源: 互联网

标签:java BigDecimal System 其他 println Calendar public out


1.BigDecimal类

public class BigDecimalDemo {
    public static void main(String[] args) {
        double d1=1.0;
        double d2=0.9;
        System.out.println(d1-d2);//0.09999999999999998
        System.out.println((1.4-0.5)/0.9);//0.9999999999999999
    }
}
  • 上面两个输出说明double或float类型并不精确,是近似值存储,但在很多实际场景下,需要实用精确计算,如银行等,因此引入BigDecimal

  • BigDecimal位于java.Math包中,作用是精确计算浮点数,创建方式:BigDecimal bd=new BigDecimal("1.0")

public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal b1 = new BigDecimal("1.0");
        BigDecimal b2 = new BigDecimal("0.9");
        //加
        BigDecimal add = b1.add(b2);
        System.out.println(add);//1.9
        //减
        System.out.println(b1.subtract(b2));//0.1
        //乘
        System.out.println(b1.multiply(b2));//0.90
        //除,若不进行限制,可能会报错,BigDecimal.ROUND_HALF_UP为四舍五入,scale为保留几位小数
        System.out.println(b1.divide(b2,2,BigDecimal.ROUND_HALF_UP));//1.11
        BigDecimal divide = new BigDecimal("1.4")
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal("0.9"),2,BigDecimal.ROUND_HALF_UP);
        System.out.println(divide);//1.00
    }
}

2.Date类

  • Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代
  • 时间单位 :1秒=1000毫秒 1毫秒=1000微秒 1微秒=1000纳秒(也叫毫微秒)
import java.util.Date;
public class DateDemo {
    public static void main(String[] args) {
        Date date1=new Date();
        System.out.println(date1.toString());
        System.out.println(date1.toLocaleString());
        //当前时间减1天的毫秒数
        Date date2=new Date(date1.getTime()-(60*60*24*1000));
        System.out.println(date2.toString());//Sat Jan 08 22:22:37 CST 2022
        System.out.println(date2.toLocaleString());//2022-1-8 22:22:37
        //方法
        //1.after before
        System.out.println(date1.after(date2));//true
        System.out.println(date1.before(date2));//false
        //2.compareTo equals
        //compareTo:前者比后者大则返1,小则返回-1,相等返回0
        System.out.println(date1.compareTo(date2));//1
        System.out.println(date2.compareTo(date1));//-1
        System.out.println(date1.compareTo(date1));//0
        System.out.println(date1.equals(date2));//false
    }
}

3.Calendar类

  • Calendar提供了获取或设置各种日历字段的方法
  • 构造方法
    • 抽象类,无法直接实例化
  • 其他方法

image-20220109223134286

import java.util.Calendar;
public class CalendarDemo {
    public static void main(String[] args) {
        //Calendar是抽象类,无法直接实例化
        Calendar calendar=Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());
        //方法:get
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(1));
        System.out.println(calendar.get(Calendar.MONTH));
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));//Carlendar.HOUR为12进制表示小时
        System.out.println(calendar.get(Calendar.MINUTE));
        System.out.println(calendar.get(Calendar.SECOND));
        //set
        calendar.set(Calendar.HOUR_OF_DAY,13);
        System.out.println(calendar.getTime().toLocaleString());
        //add
        calendar.add(Calendar.MINUTE,-10);
        System.out.println(calendar.getTime().toLocaleString());
        //getTimeInMillis获得一个毫秒数
        long timeInMillis = calendar.getTimeInMillis();//获得一个毫秒数
        System.out.println(timeInMillis);
        //getActualMaximum/getActualMaximum
        System.out.println(calendar.getActualMaximum(Calendar.MONTH));//11月份是0开始的
        System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
    }
}

4.SimpleDateFormat类

  • SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类
  • 进行格式化(日期-->文本)、解析(文本-->日期)
  • 常用的时间模式字母:y、M、d、H、m、s(秒)、S(毫秒)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        //方法一:第一种构造方法,不带参数
        SimpleDateFormat simpleDateFormat1=new SimpleDateFormat();
        simpleDateFormat1.applyPattern("yyyy-MM-dd");
        //格式化format(Date date):将时间格式转换成String
        System.out.println(simpleDateFormat1.format(new Date()));
        //第二种构造方法
        SimpleDateFormat simpleDateFormat2=new SimpleDateFormat("y-M-d H:m:s");
        System.out.println(simpleDateFormat2.format(new Date()));//2022-1-10 9:23:58
        //解析:将String转成Date类型parse(String)
        String str="2099-19-10";
        //会抛出一个异常
        Date date = simpleDateFormat1.parse(str);
        System.out.println(date);//Sat Jul 10 00:00:00 CST 2100
    }
}

5.System类

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

image-20220110223946627

import java.util.Arrays;
public class SystemDemo {
    public static void main(String[] args) {
        int []arr1={9,1,4556,4456,234,346,123,234};
        int []arr2=new int[8];
        //实现数组的copy
        //参数1:源数组 ;参数2:从源数组的哪个位置开始copy;
        //参数3:目标数组;参数4:从目标数组的哪个位置开始copy;
        //参数5:copy长度
        System.arraycopy(arr1,4,arr2,4,4);
        for (int x:arr2) {
           System.out.println(x);
        }
        //Arrays.copyOf底层是调用的System.arraycopy
        //System.arraycopy方法是本地方法,有native(相当于调用c或c++)修饰,执行效率高
        int[] ints = Arrays.copyOf(arr1, 8);
        //获取当前毫秒数(1970年到现在),此方法一般用于计算一段程序执行的时间
        System.out.println(System.currentTimeMillis());
        long start=System.currentTimeMillis();
        for (int i = 0; i < 999999; i++) {
            for (int j = 0; j < 999999; j++) {
                int result=i+j;
            }
        }
        long stop=System.currentTimeMillis();
        System.out.println(stop-start);
        //gc垃圾回收器,调用此方法请求jvm启动垃圾回收器,但不一定会回收垃圾
        new Student();//Student类在下面
        new Student("abc",1);
        new Student("cba",6);
        System.gc();
        //回收了cba6
        //回收了abc1
        //回收了null0

        //exit方法退出jvm
        System.out.println("我正在退出...");
        System.exit(0);//0表示正常退出
        System.out.println("我已经退出了");//已经退出jvm,所以这句不打印
    }
}
public class Student {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public Student() {
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    @Override
    protected void finalize() throws Throwable {
        System.out.println("回收了"+this.name+this.age);
    }
}

标签:java,BigDecimal,System,其他,println,Calendar,public,out
来源: https://www.cnblogs.com/sp520/p/15794731.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有