Java第五章(三)

一、Math 类

  • java.lang.Math提供了一系列静态方法用于科学计算
  • 其方法的参数和 返回值类型一般为double型

代码示例:

public class MathDemo {

    public static void main(String[] args) {
        System.out.println(Math.PI);
        System.out.println(Math.abs(-1));
        System.out.println(Math.sqrt(9));
        System.out.println(Math.pow(2,3));

        System.out.println(Math.floor(9.9));//9
        System.out.println(Math.ceil(9.1));//10

        System.out.println(Math.round(9.4));
        System.out.println(Math.round(9.6));

        System.out.println(Math.random());//返回一个大于等于0 小于1的一个随机数
    }
}

 二、Random 类

功能:此类用于产生随机数

代码示例:

public class RandomDemo {

    public static void main(String[] args) {
        Random random = new Random();
        System.out.println(random.nextBoolean());
        System.out.println(random.nextDouble());
        System.out.println(random.nextFloat());
        System.out.println(random.nextInt());//在int取值范围内随机返回一个结果
        System.out.println(random.nextInt(30));//在指定的范围内返回一个随机数  大于等于0 小于给定的值

        byte[] bytes = new byte[5];
        random.nextBytes(bytes);
        System.out.println(Arrays.toString(bytes));

    }
}

三、Date 类,Calendar 类,SimpleDateFormat 类

1、Date 类 

功能: 使用Date类代表当前系统时间

代码示例:

public class Datedemo {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        System.out.println(date.getYear()+1900);//+1900
        //带删除线的方法已弃用,有更好的方法,但仍可调用
        System.out.println(date.getDay());//从0开始(0)表示周一
        System.out.println(date.getMonth()+1);//+1
        System.out.println(date.getTime());//1694309464655
        Date d = new Date(1694309464655L);
        System.out.println(d);
    }
}

注:带删除线的方法已经弃用,有更好的方法可供使用,但此方法仍可调用

2、Calendar 类

  • Calendar类是一个抽象类,在实际使用时实现特定的子类的对象
  • 注:创建对象的过程是透明的,只需要使用getInstance方法创建即可

代码示例: 

import java.util.Calendar;
import java.util.GregorianCalendar;

public class CalendarDemo {

    public static void main(String[] args) {
        /*
           Calendar 日历类  抽象类  用来定义日历功能的, 具体的实现可以交给子类实现
           GregorianCalendar 格里高利历(公历) 是Calendar抽象类得具体子类
         */

           Calendar c = new GregorianCalendar();
          // Calendar c = Calendar.getInstance();
           System.out.println(c.get(Calendar.YEAR)); //get(具体的日历属性)
           System.out.println(c.get(Calendar.MONTH)+1);//月
           System.out.println(c.get(Calendar.DAY_OF_MONTH));//日
           System.out.println(c.get(Calendar.DAY_OF_WEEK));//一周中的第几天
           System.out.println(c.get(Calendar.DAY_OF_YEAR));//一年中的第几天
           System.out.println(c.get(Calendar.WEEK_OF_MONTH));
           System.out.println(c.get(Calendar.WEEK_OF_YEAR));
           System.out.println(c.get(Calendar.HOUR_OF_DAY));
           System.out.println(c.get(Calendar.MINUTE));
           System.out.println(c.get(Calendar.SECOND));
           //c.set(2022,9,10); 设置系统时间
          // System.out.println(c.get(Calendar.YEAR)); //get(具体的日历属性)
           System.out.println(c.getTimeInMillis());//获取的是从1970 1.1 0:0:0 到程序运行那一刻的时间差
    }
}

3、SimpleDateFoemat 类

SimpleDateFormat 日期格式化类

代码示例:

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

public class Simpledateformatdemo {
    public static void main(String[] args) throws ParseException {
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(sdf.format(d));//日期转字符串

        String s = "2023/8/8";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
        System.out.println(sdf1.parse(s));//字符串转日期

    }
}

四、BigInteger 类

  • BigInteger类位于java.math包中
  • 在 Java 中,有许多数字处理的类,比如 Integer类,但是Integer类有一定的局限性
  • 我们都知道 Integer 是 Int 的包装类,int 的最大值为 2^31-1。若希望描述更大的 整数数据时,使用Integer 数据类型就无法实现了,所以Java中提供了BigInteger 类
  • BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意 精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而 不会丢失任何信息

代码示例如下:

import java.math.BigInteger;

public class BigIntegerDemo {

    public static void main(String[] args) {

        // long a = 2222222222333322222L;
        BigInteger  a =  new BigInteger("11111111111111111111111111111111111111");
        BigInteger  b =  new BigInteger("99999999999999999999999999999999999999");

        BigInteger c=   a.add(b);

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

    }


}

五、BigDecimal 类

  • Java在java.math包中提供的API类BigDecimal
  • 在计算机中float 还是double都是浮点数,而计算机是二进制的,浮点数会失 去一定的精确度
  • 根本原因是:十进制浮点值没有完全相同的二进制表示形式;十进制浮点值的二进 制表示形式不精确,只能无限接近于那个值

代码示例如下: 

import java.math.BigDecimal;

public class BigDecimalDemo {

    public static void main(String[] args) {
        //System.out.println((0.1 + 0.2)==0.3);
        //System.out.println((0.1 + 0.2));

        /*BigDecimal a = new BigDecimal("0.1");
        BigDecimal b = new BigDecimal("0.2");
        BigDecimal c = a.add(b);
        System.out.println(c);*/

        BigDecimal a = new BigDecimal("10");
        BigDecimal b = new BigDecimal("3"); //3.11111
         //在除法运算时,默认遇到无限循环会报错, 需要指定保留的小数位数,以及近似值的策略
        BigDecimal c =  a.divide(b,2,BigDecimal.ROUND_FLOOR);
        System.out.println(c);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值