API
stringbuilder/stringbuffer
作用:可变的字符串对象,提供了操作字符串的一些方法,拼接时效率会更高,会使用该对象(拼接时不会创建新的字符串对象)
创建对象;
//public StringBuilder() 创建一个空白的可变的字符串对象,不包含任何内容 //public StringBuilder(String str) 创建一个指定字符串内容的可变字符串对象
常见方法;
//public StringBuilder append(任意类型) 添加数据并返回StringBuilder对象本身 //public StringBuilder reverse() 将对象的内容反转 //public int length() 返回对象内容长度 //public String toString() 通过toString()就可以实现把StringBuilder转换为String
Math
作用:数学类,工具类,提供了一些数学运算的方法
常见方法:
// 1、public static int abs(int a):取绝对值(拿到的结果一定是正数) // 2、public static double ceil(double a): 向上取整 // 3、public static double floor(double a): 向下取整 // 4、public static long round(double a):四舍五入 // 5、public static int max(int a, int b):取较大值 // public static int min(int a, int b):取较小值 // 6、 public static double pow(double a, double b):取次方 // 7、public static double random(): 取随机数 [0.0 , 1.0) (包前不包后)
System
作用:系统类,工具类,提供 了操作当前系统的方法
常见方法:
// 1、public static void exit(int status): 终止当前运行的Java虚拟机。 //该参数用作状态代码; 按照惯例,非零状态代码表示异常终止。
// 2、public static long currentTimeMillis(): 获取当前系统的时间 //返回的是long类型的时间毫秒值:指的是从1970-1-1 0:0:0开始走到此刻的总的毫秒值,1s = 1000ms
BigDecimal
作用:大小数类,解决浮点型运算时出现的精度缺失问题
创建对象:
// 1、把浮点型数据封装成BigDecimal对象,再来参与运算。 // a、public BigDecimal(double val) 得到的BigDecimal对象是无法精确计算浮点型数据的。 注意:不推荐使用这个, // b、public BigDecimal(String val) 得到的BigDecimal对象是可以精确计算浮点型数据的。 推荐使用。
常见方法;
// 2、public BigDecimal add(BigDecimal augend): 加法 // 3、public BigDecimal subtract(BigDecimal augend): 减法 // 4、public BigDecimal multiply(BigDecimal augend): 乘法 // 5、public BigDecimal divide(BigDecimal b): 除法 //注意:如果除不尽,就会报错ArithmeticException // 6、public BigDecimal divide(另一个BigDecimal对象,精确几位,舍入模式:RoundingMode.HALF_UP) : 除法,可以设置精确几位。 // 7、public double doubleValue() : 把BigDecimal对象又转换成double类型的数据。
jdk1.8之前的时间日期类(不推荐)
jdk1.8开始的时间日期类(推荐)
LocalDate:
作用:代表年月日星期
LocalTime:
作用:代表时分秒纳秒
LocalDateTime:
作用:代表年月日时分秒纳秒
创建对象;
// 01、获取本地日期和时间对象 now()。 // 02、获取指定日期和时间的LocalDateTime对象:// public static LocalDateTime of(int year, Month month, int dayOfMonth, int hour)
常见方法:
// 1、可以获取日期和时间的全部信息 // getYear getMonthValue getDayOfMonth getDayOfWeek().getValue()获取周几 getHour getMinute getSecond getNano // 2、修改时间信息: // withYear withMonth withDayOfMonth withDayOfYear withHour // withMinute withSecond withNano // 3、加多少: // plusYears plusMonths plusDays plusWeeks plusHours plusMinutes plusSeconds plusNanos // 4、减多少: // minusDays minusYears minusMonths minusWeeks minusHours minusMinutes minusSeconds minusNanos // 6、 判断2个日期、时间对象,是否相等,在前还是在后: equals、isBefore、isAfter // 7、可以把LocalDateTime 转换成 LocalDate和LocalTime // public LocalDate toLocalDate() // public LocalTime toLocalTime() // 8、LocalDate和LocalTime 转换成 LocalDateTime // public static LocalDateTime of(LocalDate date, LocalTime time)
Zoneld
作用:代表时区对象
创建对象;
// public static ZoneId of(String zoneId) : 把某个时区id封装成ZoneId对象。 America/New_York
常见方法:
// public static Set<String> getAvailableZoneIds(): 获取Java支持的全部时区Id // public static ZoneId systemDefault(): 获取系统默认的时区
ZonedDateTime
作用:代表时区时间对象
创建对象;
// public static ZonedDateTime now(ZoneId zone): 获取某个时区的ZonedDateTime对象。 // public static ZonedDateTime now():获取系统默认时区的ZonedDateTime对象
常见方法:
// getXxx()获取 withXxx(时间)修改 minusXxx(时间)减少 plusXxx(时间)增加
Instant
作用:代表时间戳对象
创建对象:
// 1、public static Instant now(); 创建Instant的不可变对象,获取此刻时间戳信息,世界标准时间
常见方法:
// 2、public long getEpochSecond();获取从时间原点开始记录的总秒数 // 3、public int getNano(); 获取当前时间戳对象中不够1秒的纳秒数
DateTimeFormatter
作用:时间格式化解析类
创建对象:
//public static DateTimeFormatter ofPattern(时间格式) 获取格式化器对象
常见方法:
//public String format(时间对象) 格式化时间
LocalDateTime类中的方法://public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter) 解析时间
Period
作用:代表年月日时间间隔对象
创建对象:
// 1、public static Period between(LocalDate start, LocalDate end); 创建Period对象,封装两个日期对象。
常见方法:
// 2、通过period对象获取两个日期对象相差的信息。public int getYears(); public int getMonths(); public int getDays();
Duration
作用:代表时分秒时间间隔对象
创建对象:
// 1、public static Duration between(开始时间对象1,截止时间对象2); 得到Duration对象
常见方法:
// 2、获取两个时间对象间隔的信息 toxxx()
Arrays
作用:操作数组的工具类
常见方法:
// 1、public static String toString(类型[] arr): 返回数组的内容
// 2、public static 类型[] copyOfRange(类型[] arr, 起始索引(包含), 结束索引(不包含)) :拷贝数组 // 3、public static 类型[] copyOf(类型[] arr, int newLength):拷贝数组,可以指定新数组的长度。 // 4、public static void sort(类型[] arr):对数组进行排序(默认是升序排序)
如果要给自定义的对象数组进行排序:
指定排序规则
排序规则:根据重写方法的返回结果,决定即将排序的元素的存储位置
返回结果为正整数,即将排序的元素放在已经排好序的元素的右边
返回结果为复数,即将排序的元素放在已经排好序的元素的左边
返回结果为0,即将排序的元素按顺序依次放在已经存好元素的后面
(1)自然排序:1.让被排序的类实现comparable<被排序的类>接口 2.重写compareTo方法,在该方法中设置排序规则 this即将排序的元素 o已经排好序的元素
(2)比较器排序:1.创建comparator<被排序的类>比较器匿名内部类对象,将对象作为参数传递给sort方法的第二实参位置 2.重写compare方法,在该方法中设置排序规则 o1即将排序的元素,o2已经排好序的元素
compareTo比较字符串
Lambda表达式
作用:简化函数式接口的匿名内部类的写法
函数时接口:有且仅有以一个抽象方法的接口,该接口一般是被@Funcationallnterface注解检查
格式:
(被重写方法的参数列表)-> {被,重写方法的方法体代码}
省略规则:
1.参数类型可以省略
2.只有一个形参,()也可以省略
3.方法体代码只有一行,{}可以省略,分号可以省略,return必须省略
方法引用
作用:简化Lambda表达式的写法
分类:
静态方法引用:
场景:1. lambda表达式中只是在调用一个静态方法
2.前后参数一致
格式 类名::方法名
实例方法引用:
场景:1.lambda表达式中只是在调用一个实例方法
2.前后参数一致
格式 对象名::方法名
特定实例方法引用:
场景:1.Lambda表达式中只有一个实例方法
2.第一个参数作为方法的调用者,后面参数作为方法的实参传递
格式: 类型名::方法名
构造器引用:
场景:1.如果lambda表达式只是在创建对象
2前后参数一致
格式: 类名::new
算法
概述:解决方法的过程和方法
冒泡排序:让元素两两之间进行对比,将最值放到数组最后
选择排序:每轮选择一个当前元素,使用当前元素和后面的元素--对比,将最值放到当前位置
二分查找:定义最小索引和最大索引,计算中间索引,使用查找元素和中间索引的元素进行对比,如果不相等,重新计算最大,最小,中间索引,再次对比,直到相等
正则表达式
作用:定义一组正则表达式的规则校验一个数组的格式是否合法
异常
概述:程序出现的问题
体系:Throwable Error和Exception
Exception分为RuntimException 运行时异常,程序运行时可能出现的异常
其他异常,编译时异常,编码期间出现的异常
JVM默认处理方案:出现异常后,层层往上抛,最终会抛给JVM去处理,1.打印异常的信息(异常名称,异常描述,异常位置)2.结束虚拟机
两种处理异常方案:
抛出异常:1.throws,在方法上声明异常,告诉调用者该方法可能出现异常,运行时异常可以不用声明,编译时异常必须声明
throw,创建一个异常对象,将其抛给调用者,调用者就必须处理该异常
捕获异常:try{可能出现的异常的代码}catch(捕获异常类型 变量名){真正处理该异常的代码}
手动捕获到异常并处理,异常不会继续层层网上抛
自定义异常:
步骤:1.创建自定义异常类,让其继承Runtime Exception或Exception
2.右键生成两个构造器,无参,只有一个参数