目录
Math类
Math 类包含用于执行基本数学运算的方法
成员变量
final double E :自然底数
final double PI:圆周率
double pi = Math.PI;
System.out.println(pi);
成员方法
public static int abs ( int a) 取绝对值
System.out.println(Math.abs(-10));
public static double ceil ( double a) 向上取整
System.out.println(Math.ceil(3.14)); //打印4.0
public static double floor ( double a) 向下取整
System.out.println(Math.floor(3.14)); //3.0
public static int max ( int a, int b) 获取最大值
int max = Math.max(90,500);
System.out.println(max); //500
public static int min ( int a, int b) 获取最小值
double min = Math.min(60, 3.5); //有小数用double
System.out.println(min); //3.5
public static double pow ( double a, double b) 获取a的b次幂
System.out.println(Math.pow(2, 4)); //16.0
public static double random () 获取随机数 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0
int a = (int)Math.random(); // [0,1)
public static int round ( float a) 四舍五入
System.out.println(Math.round(3.69)); //4
public static double sqrt ( double a) 获取正平方根
System.out.println(Math.sqrt(4)); //2.0
Random类
构造方法
一.Random() 没有给定种子,使用的是默认的(当前系统的毫秒值)
Random random = new Random();
成员方法
1. nextInt() 没有参数 表示的随机数范围 是int类型的范围
2. nextInt(int n)//可以指定一个随机数范围
int num = random.nextInt(100); //0-99
3.nextLong()
4.nextDouble()
5.nextBoolean() //true or false
6.nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的空的 byte 数组中。
byte[] bytes = new byte[10];
random.nextBytes(bytes);
System.out.println(Arrays.toString(bytes));
二.Random(long seed) 给定一个long类型的种子,给定以后每一次生成的随机数是相同的
Random random = new Random(1);
给定种子,随机数不变,种子不同,随机数不同
System类
1. public static final InputStream in“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入
InputStream in = System.in;
Scanner scanner = new Scanner(in);
或
Scanner scanner = new Scanner(System.in);
2. public static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出
PrintStream out = System.out;
out.println(1);
或
System.out.println(1);
3.System.err.println() //显示错误信息,标红
4.exit(int status) 0是正常退出,非0是异常退出
System.exit(0); //正常退出
5.currentTimeMillis() //获取当前时间的毫秒值
System.currentTimeMillis();
例:循环5000次用的时间
public class MyTest {
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i < 5000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start) + "毫秒");
}
}
6. gc() //调用垃圾回收器
System.gc();
int[] arr = new int[3];
//置为null 有利于垃圾回收器的及早回收
arr = null;
BigDecimal类
由于在运算的时候,float类型和double很容易丢失精度,如果我们有更高精度的要求,double就不满足了。BigDecimal 这个类可以满足我们对精度要求。
构造方法
BigDecimal(String val) //可以传int double类型,一般用String类传
BigDecimal a = new BigDecimal("3.25585858585474747474");
BigDecimal b = new BigDecimal("3.2558585858547474747499999");
成员方法
add(BigDecimal augend) //加
subtract (BigDecimal subtrahend) //减
multiply(BigDecimal multiplicand) //乘
BigDecimal multiply = a.multiply(b);
String s = multiply.toString();
System.out.println(s);
divide(BigDecimal divisor) //除
能整除
BigDecimal c = new BigDecimal("10");
BigDecimal d = new BigDecimal("2");
BigDecimal devide = c.devide(d);
System.out.println(devide.toString()); //打印5
divide(BigDecimal divisor,int scale,int roundingMode) //scale 小数点后面保留几位
不能整除
BigDecimal c = new BigDecimal("10");
BigDecimal d = new BigDecimal("3");
BigDecimal devide = c.devide(d,30,ROUND_HALF_UP); //保留小数点后30位
System.out.println(devide.toString()); //3.3333333333333333333333333333333
注意:
BigDecimal a =new BigDecimal(0.1);
System.out.println(a); //打印0.1000000000000000055511151231257827021181583404541015625
0.1无法准确地表示为 double
写入 newBigDecimal(“0.1”) 将创建一个 BigDecimal,它正好等于预期的 0.1。因此,比较而言, 通常建议优先使用String构造方法。
BigInteger类
BigInteger 用于超过long类型范围的
构造方法
BigInteger(String val)
成员方法
add(BigInteger val) //加
subtract(BigInteger val) //减
multiply(BigInteger val) //乘
divide(BigInteger val) //除
BigInteger[] divideAndRemainder(BigInteger val) //取除数和余数
例
public class MyTest {
public static void main(String[] args) {
BigInteger bi1=new BigInteger("100");
BigInteger bi2=new BigInteger("2");
System.out.println(bi1.add(bi2)); //+
System.out.println(bi1.subtract(bi2)); //-
System.out.println(bi1.multiply(bi2)); //*
System.out.println(bi1.divide(bi2)); //(除)
BigInteger[] arr=bi1.divideAndRemainder(bi2); //取除数和余数
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
结果
102
98
200
50
50
0
Date类
Date类表示特定的瞬间,精确到毫秒
构造方法
1. Date()
Date date = new Date();
System.out.println(date.toString()); //Sun May 08 09:03:59 CST 2022
2. Date(long date) //把一个long类型的毫秒值转换成一个日期对象
从1970 年 1 月 1 日 00:00:00开始增加毫秒
Date date= new Date(1000 * 60 * 60 * 24); //增加一天
System.out.println(date); //Fri Jan 02 08:00:00 CST 1970
成员方法
1.getYear()
Date date = new Date();
int year = date.getYear();
System.out.println(year);
2.getMonth()
3.getDay()
4.getTime() //获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
Date date = new Date();
long time = date.getTime();
@Deprecated 注解
@Deprecated //标示这个类过时
public class MyUtils {
@Deprecated //标示,此方法过时
public static int add(int a, int b) {
return a + b;
}
}
SimpleDateFormat类
格式化日期
构造方法
1. SimpleDateFormat()
Date date = new Date();
SimpleDateFormat s = new SimpleDateFormat(); 空参构造,没有指定格式,按照的是默认格式
String dateStr = s.format(date);
System.out.println(dateStr); //22-5-8 上午9:25
2. SimpleDateFormat(String pattern)
-
y 年
-
M 月
-
d 天
-
H 时
-
m 分
-
s 秒
-
E 星期
SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E");
String dateStr = s.format(date);
System.out.println(dateStr);
日期 Date-----日期字符串 String互转
1.日期 Date-----日期字符串 String
Date date = new Date();
SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E");
String dateStr = s.format(date);
2.日期字符串 String----日期 Date
String dateStr = "2000-10-10 14:30:30";
//注意格式 和日期字符串的格式要对应,否则就解析失败。
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = simpleDateFormat.parse(dateStr);
System.out.println(date1);
Calendar类
是一个抽象类
static Calendar getInstance () 使用默认时区和语言环境获得一个日历。
Calendar instance = Calendar.getInstance();
System.out.println(instance);//java.util.GregorianCalendar[time=1651976698368,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar
* .ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,
* minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=4,WEEK_OF_YEAR=20,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=128,DAY_OF_WEEK=1,
* DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=24,SECOND=58,MILLISECOND=368,ZONE_OFFSET=28800000,DST_OFFSET=0]
get()方法
int year = instance.get(Calendar.YEAR);
int month = instance.get(Calendar.MONTH);
int day = instance.get(Calendar.DAY_OF_MONTH);
int hour = instance.get(Calendar.HOUR_OF_DAY);
int minute = instance.get(Calendar.MINUTE);
int second = instance.get(Calendar.SECOND);
int week = instance.get(Calendar.DAY_OF_WEEK);System.out.println(year);
System.out.println(month);
System.out.println(day);System.out.println(hour);
System.out.println(minute);
System.out.println(second);
System.out.println(week); //星期天为1
set()方法
Calendar instance = Calendar.getInstance();
//设置年月日,时分秒
instance.set(2000, 9, 2, 14, 20, 30);int year = instance.get(Calendar.YEAR);
System.out.println(year);
//可以单个设置
instance.set(Calendar.YEAR, 2005);int year2 = instance.get(Calendar.YEAR);
System.out.println(year2);
add()方法
Calendar instance = Calendar.getInstance();
//把当前的年份,加上3年
instance.add(Calendar.YEAR, 3);
int year = instance.get(Calendar.YEAR);
System.out.println(year);//如果你要减去时间量,传入负数值
instance.add(Calendar.DAY_OF_MONTH, -5);int day = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(day);