一、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);
}
}