目录
一、Math类
1.常用方法
Math类包含用于执行数学运算的方法
/**
* @author: 程序员飞扬
* @description:
*/
public class Math01 {
public static void main(String[] args) {
//1. abs绝对值
int n = -50;
System.out.println(Math.abs(n));
//2. pow求幂
double pow = Math.pow(-3.5, 4);
System.out.println(pow);//(-3.5)的四次方
//3. ceil向上取整
double ceil = Math.ceil(3.9);
System.out.println(ceil);
double ceil1 = Math.ceil(-4.9);
System.out.println(ceil1);
//4. floor向下取整
double floor = Math.floor(5.6);
System.out.println(floor);
//5. round四舍五入
long round = Math.round(2.6);
System.out.println(round);
long round1 = Math.round(2.4);
System.out.println(round1);
//6. sqrt 开方
double sqrt = Math.sqrt(9);
System.out.println(sqrt);
//7. random求随机数
double random = Math.random();//返回的是0~1之间的小数
System.out.println(random);//0.2821134901462201
//8. max求两个数中的最大值
int max = Math.max(5, 28);
System.out.println(max);
//9. 求两个数中的最小值
double min = Math.min(2.1, 3.6);
System.out.println(min);
}
}
2.练习题
获取a-b之间的一个随机整数,a,b均为整数
/**
* @author: 程序员飞扬
* @description:获取a-b之间的一个随机整数,a,b均为整数
*/
public class MathExercise01 {
public static void main(String[] args) {
int a = 2;
int b = 7;
for (int i = 0; i < 10; i++) {
System.out.println((int)(a + Math.random()*(b-a+1)));//返回2-7之间的数
}
}
}
二、Arrays类
1.
/**
* @author: 程序员飞扬
* @description:
*/
public class ArraysMethod01 {
public static void main(String[] args) {
Integer[] n = {20,1,36};
System.out.println(Arrays.toString(n));//[1, 20, 36]
Arrays.sort(n);//默认排序
System.out.println(Arrays.toString(n));
//自定义排序
Arrays.sort(n, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
return (Integer)o2 - (Integer)o1;
}
});
System.out.println(Arrays.toString(n));
}
}
array模拟排序
package com.feiyang.basic11;
import java.util.Arrays;
import java.util.Comparator;
/**
* @author: 程序员飞扬
* @description:
*/
public class ArraysMethod01 {
public static void main(String[] args) {
Integer[] n = {20,1,36};
System.out.println(Arrays.toString(n));//[1, 20, 36]
Arrays.sort(n);//默认排序
System.out.println(Arrays.toString(n));
//自定义排序
Arrays.sort(n, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
return (Integer)o2 - (Integer)o1;
}
});
System.out.println(Arrays.toString(n));
}
}
输出:
[1, 6, 23, 25, 56]
/**
* @author: 程序员飞扬
* @description:binarySearch二分查找
*/
public class ArraysMethod02 {
public static void main(String[] args) {
/**
* 要求该数组有序,
* 找不到返回-(low+1),即它应该存在的位置再加一然后取反
*
* 结论,查不到值返回负数
*/
int[] n = {1, 6, 23, 25, 56};
System.out.println(Arrays.binarySearch(n,6));//1
System.out.println(Arrays.binarySearch(n,24));//-4
int[] n2 = {1, 23, 6, 56, 42};
System.out.println(Arrays.binarySearch(n2,7));//3
}
}
/**
* @author: 程序员飞扬
* @description:
*/
public class ArraysMethod02 {
public static void main(String[] args) {
/**
* 要求该数组有序,
* 找不到返回-(low+1),即它应该存在的位置再加一然后取反
*
* 结论,查不到值返回负数
*/
int[] n = {1, 6, 23, 25, 56};
System.out.println(Arrays.binarySearch(n,6));//1
System.out.println(Arrays.binarySearch(n,24));//-4
int[] n2 = {1, 23, 6, 56, 42};
System.out.println(Arrays.binarySearch(n2,7));//3
//copyOf: 从原数组中copy指定长度的数组形成一个新数组
int[] ints = Arrays.copyOf(n, n.length);
System.out.println(Arrays.toString(ints));//[1, 6, 23, 25, 56]
int[] ints2 = Arrays.copyOf(n, 2);
System.out.println(Arrays.toString(ints2));//[1, 6]
//fill: 用指定值填充数组
Arrays.fill(n,99);
System.out.println(Arrays.toString(n));//[99, 99, 99, 99, 99]
int[] e1 = {1, 6, 23, 25, 56};
int[] e2 = {1, 6, 23, 25, 56};
int[] e3 = {1, 6, 23, 25, 99};
boolean equals1 = Arrays.equals(e1, e2);
System.out.println("结果:" + equals1);//结果:true
boolean equals2 = Arrays.equals(e1, e3);
System.out.println("结果:" + equals2);//结果:false
List asList = Arrays.asList(2, 5, 6, 8);
System.out.println(asList);//[2, 5, 6, 8]
System.out.println(asList.getClass());//class java.util.Arrays$ArrayList
}
}
三、System类
四、BigInteger&BigDecimal
import java.math.BigDecimal;
import java.math.BigInteger;
/**
* @author: 程序员飞扬
* @description:
*/
public class BigNum {
public static void main(String[] args) {
//=========================BigInteger=========================
//long l = 23456299999999999999999999999l;
//程序中需要处理很大的整数,long不够用
BigInteger bigInteger = new BigInteger("23456299999999999999999999999");
BigInteger bigInteger1 = new BigInteger("100");
System.out.println(bigInteger);
System.out.println(bigInteger.add(bigInteger1));//加
System.out.println(bigInteger.subtract(bigInteger1));//减
System.out.println(bigInteger.multiply(bigInteger1));//乘
System.out.println(bigInteger.divide(bigInteger1));//除
//=========================BigDecimal=========================
//当程序需要保存精度很高的数时,double不够用
BigDecimal bigDecimal = new BigDecimal("199.11111111111111111111111111");
BigDecimal bigDecimal1 = new BigDecimal("33");
System.out.println(bigDecimal.add(bigDecimal1));
System.out.println(bigDecimal.subtract(bigDecimal1));
System.out.println(bigDecimal.multiply(bigDecimal1));
//System.out.println(bigDecimal.divide(bigDecimal1));//可能抛出异常ArithmeticException
System.out.println(bigDecimal.divide(bigDecimal1,BigDecimal.ROUND_CEILING));//
}
}
四、日期类
1.第一代日期类
/**
* @author: 程序员飞扬
* @description:
*/
public class Date01 {
public static void main(String[] args) throws ParseException {
Date date = new Date();//获取当前系统时间
System.out.println(date);//Mon May 30 00:16:05 GMT+08:00 2022
Date date2 = new Date(51616131);//通过指定毫秒数获取时间
System.out.println(date2);//Thu Jan 01 22:20:16 GMT+08:00 1970
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
String format = sdf.format(date);
System.out.println(format);//2022年05月30日 12:16:05 星期一
String s = "2022年05月30日 12:13:52 星期一";
Date parse = sdf.parse(s);
System.out.println(parse);//Mon May 30 00:13:52 GMT+08:00 2022
System.out.println(sdf.format(parse));//2022年05月30日 12:13:52 星期一
}
}
2.第二代日期类
import java.util.Calendar;
/**
* @author: 程序员飞扬
* @description:
*/
public class Calendar01 {
public static void main(String[] args) {
//创建日历类对象(简单自由)
//Calendar是抽象类,而且构造器私有化了,所以不能通过new创建实例化对象,只能通过getInstance方法
Calendar c = Calendar.getInstance();
System.out.println(c);
System.out.println("年:" + c.get(Calendar.YEAR));
System.out.println("月:" + (c.get(Calendar.MONTH)+1));
System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + c.get(Calendar.HOUR));
System.out.println("分:" + c.get(Calendar.MINUTE));
System.out.println("秒:" + c.get(Calendar.SECOND));
//Calendar没有专门的格式化方法,需要自己组合
System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH)+1)+ "-" + c.get(Calendar.DAY_OF_MONTH));
}
}
输出:
java.util.GregorianCalendar[time=1653842554007,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=4,WEEK_OF_YEAR=23,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=150,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=42,SECOND=34,MILLISECOND=7,ZONE_OFFSET=28800000,DST_OFFSET=0]
年:2022
月:5
日:30
时:0
分:42
秒:34
2022-5-30
3.第三代日期类
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
* @author: 程序员飞扬
* @description:
*/
public class LocalDate01 {
public static void main(String[] args) {
//===================LocalDateTime获取当前时间==================
LocalDate now = LocalDate.now();
LocalTime now1 = LocalTime.now();
LocalDateTime ldt = LocalDateTime.now();
System.out.println(now);//2022-05-30
System.out.println(now1);//01:03:47.703
System.out.println(ldt);//2022-05-30T01:03:47.703
System.out.println("年:" + ldt.getYear());//年:2022
System.out.println("月:" + ldt.getMonth());//月:MAY
System.out.println("月:" + ldt.getMonthValue());//月:5
System.out.println("日:" + ldt.getDayOfMonth());//日:30
System.out.println("时:" + ldt.getHour());//时:1
System.out.println("分:" + ldt.getMinute());//分:3
System.out.println("秒:" + ldt.getSecond());//秒:47
System.out.println("今年第几天:" + ldt.getDayOfYear());//今年第几天:150
System.out.println("周几:" + ldt.getDayOfWeek());//周几:MONDAY
//===================DateTimeFormatter格式化==================
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss");
String format = df.format(ldt);
System.out.println(format);//2022年05月30日 01:12:49
//===================Instant时间戳==================
//Instant => Date | Date date = Date.form(instant);
//Date => Instant | date.toInstant();
Instant now2 = Instant.now();//获取当前时间的时间戳对象
System.out.println(now2);//2022-05-29T17:25:05.023Z
Date date = Date.from(now2);//把Instant转换成Date
System.out.println(date);//Mon May 30 01:25:05 GMT+08:00 2022
Instant instant = date.toInstant();//把日期转换成时间戳
System.out.println(instant);//2022-05-29T17:25:05.023Z
//===================第三代日期更多用法==================
//假设当前时间为ldt = 2022年05月30日 01:43:34
LocalDateTime localDateTime = ldt.plusYears(1);
LocalDateTime localDateTime1 = ldt.plusMonths(1);
LocalDateTime localDateTime2 = ldt.plusDays(1);
LocalDateTime localDateTime3 = ldt.plusWeeks(1);
LocalDateTime localDateTime4 = ldt.plusHours(1);
LocalDateTime localDateTime5 = ldt.plusMinutes(10);
LocalDateTime localDateTime6 = ldt.plusSeconds(30);
LocalDateTime localDateTime7 = ldt.plusNanos(900);
System.out.println("一年后:" + df.format(localDateTime));//2023年05月30日 01:43:34
System.out.println("一月后:" + df.format(localDateTime1));//2022年06月30日 01:43:34
System.out.println("一天后:" + df.format(localDateTime2));//2022年05月31日 01:43:34
System.out.println("一周后:" + df.format(localDateTime3));//2022年06月06日 01:43:34
System.out.println("一小时后:" + df.format(localDateTime4));//2022年05月30日 02:43:34
System.out.println("10分钟后:" + df.format(localDateTime5));//2022年05月30日 01:53:34
System.out.println("30秒后:" + df.format(localDateTime6));//2022年05月30日 01:44:04
System.out.println("900毫秒后:" + df.format(localDateTime7));//2022年05月30日 01:43:34
//减法相同
LocalDateTime localDateTime8 = ldt.minusDays(1);
System.out.println("一天前:" + df.format(localDateTime8));//2022年05月29日 01:43:34
}
}