Java学习笔记八(API)
1 包装类基本类型 包装类型 byte Byte short Short int Integer long Long double Double float Float boolean Boolean char Character(1) 自动拆箱自动变intint i Integer.valueOf(11);// new Integer过时了。超过127的话 new Integer会生成新的地址导致 new Integer(128) new Integer(128) 返回false。(2) 自动装箱自动变IntegerInteger i 1;2 字符串API2.1 String2.2.1 字符串编辑(1) 定义字符串String str abc;// str(堆区 abc常量池(2) 创建字符串String str newString(abc);// str(堆区new地址 abc常量池。String str new String(byte[]); 默认开发平台字符集eclipseGBK, ideaUTF-8。String str new String(byte[], 字符集); 指定字符集。(3) 转换字符串String str String.valueOf(char[] | boolean | char | int | long | float | double)(4) 拼接字符串String str abcdef; String str str1.concat(str2);(5) 截取字符串String str str1.subString(开始下标[终止下标]);// 含开始不含结束(6) 替换字符串String str str.replace(str1, str2)// 将所有str1替换成 str2(7) 转小写String str str.toLowerCase();(8) 转大写String str str.toUpperCase();2.2.2 判断(1) 判空boolean isEmpty str.isEmpty(); // 是否为空不包含半角空格(2) 判空boolean isBlank str.isBlank(); // 是否为空除了半角空格以外没有其它字符(3) 相等boolean isSame str1.equals(str2);(4) 相等int res str1.compareTo(str2); // 返回0 相同(5) 包含boolean has str.contains(str2); // str是否包含str2(6) 开始判断boolean isStart str.startsWith(str2[, startIndex]);(7) 结束判断boolean isEnd str.endsWith(str2);2.2.3 获取数据(1) 取长int len str.length();(2) 取字符char c str.charAt(int);(3) 取二进制byte[] b str.getBytes([String | Charset]);(4) 取下标int index str.indexOf(String[,startIndex])(5) 取下标int index str.lastIndexOf(String[,startIndex]);2.2.4 正则(1) 拆分String[] strs str.split(正则字符)(2) 正则替换String str str.replaceAll(正则字符, str2);(3) 正则匹配boolean has str.matches(正则字符);// 返回是否满足正则表达式注释正则作用判断字符串是否符合规则校验数据合法性电话邮箱\d需要做转移处理\\d单字符匹配[abc]匹配[^abc]排除,[a-cA-Z]连续范围匹配[a-c[n-y]]间断范围匹配[a-z[^m-y]]连续范围排除。多字符匹配abc取正则数据String regex 正则; // 定义正则字符 Pattern p Pattern.compile(regex); // 生成正则类 Matcher m p.matcher(字符串); // 绑定指定字符串 while(m.find()) { // 查找是否有满足正则条件的字符串 m.group(); // 获取到满足正则条件的字符串 ]2.2 StringBuilder(1) 创建StringBuilder sb new StringBuilder([str]);(2) 添加sb.append(str);(3) 转成字符串sb.toString()2.3 StringBuffer注释线程安全(1) 创建StringBuffer sb new StringBuffer([str]);(2) 添加sb.append(str);(3) 转成字符串sb.toString()3 数值API3.1 BigDecimal注释不推荐double类型构造器参数传参之前double失去京都推荐String类型(1) 加BigDecimal num num1.add(num2);(2) 减BigDecimal num num1.subtract(num2);(3) 乘BigDecimal num num1.multiply(num2);(4) 除BigDecimal num num1.devde(num2, 保留的小数位数, RoundingMode.HALF_UP);// 四舍五入3.2 数值格式化(1)DecimalFormat #不满为不显示0不满位显示0DecimalFormat format new DecimalFormat(#,###.00); String str format.format(1234.567);(2)String.formatString s1 String.format(%02d, int); // [0]左补0[2d]补满2位整数 String s2 String.format(%,.2f, ); // [,]:逗号分隔数值[.2f]保留2位小数 String s3 String.format(%.0f, String); // [.0f]不保留小数4 日期API4.1 Date注释Date修改值会使源对象变更线程不安全只精确到毫秒不推荐使用(1) 创建Date date new Date();//获取系统日期时间(2) 格式化SimpleDateFormat format new SimpleDateFormat(yyyy-MM-dd); //线程不安全每个用户需单独创建 String dateStr fromat.format(date); // 格式化日期 // yyyy年, MM月, dd日, HH 24小时 hh 12小时 mm 分钟, ss 秒, sss毫米(3) 反格式化 Date date format.parse(dateStr);// 需要处理异常4.2 LocalDate注释对象不可变更变更时间需要重新定义对象精确到毫秒后1000微秒1000纳秒年月日星期LocalDate时分秒纳秒LocalTime年月日时分秒LocalDateTime(1) 创建LocalDate.now(); // 年月日 LocalTime.now(); // 时分秒 LocalDateTime.now(); // 年月日时分秒 LocalDate local LocalDate.of(年, 月, 日); // 指定时间创建(2) 获取localDate.getYear(); // 年 localDate.getMonthValue(); // 月 localDate.getDayOfMonth(); // 日(3) 变更LocalDate d2 d1.withYear(2024); // 年获取年变更后的对象 LocalDate d2 d1.withMonth(12); // 月获取月变更后的对象 LocalDate d2 d1.withDayOfMonth(31); // 日获取日变更后的对象 加算 LocalDate d3 d2.plusYears(2); // 加2年 LocalDate d3 d2.plusMonths(2); // 加2月 LocalDate d3 d2.plusDays(2); // 加2日 减算 LocalDate d4 d3.minusYears(2); // 减2年 LocalDate d4 d3.minusMonths(2); // 减2月 LocalDate d4 d3.minusDays(2); // 减2日(4) 比较boolean isSame d1.equals(d2); // 等于 boolean isAfter d1.isAfter(d2); // d1 大于 d2 boolean isBefore d1.isBefore(d2); // d1 小于 d2(5) 格式化格式化1 DateTimeFormatter format DateTimeFormatter.ofPattern(yyyy-MM-dd); // 定义格式 String dateStr format.format(LocalDateTime.now()); // 返回格式化后字符串 格式化2 String str LocalDateTime.now().format(format); String str LocalDate.now().format(format); String str LocalTime.now().format(format); 反格式化 LocalDateTime dateTime LocalDateTime.parse(2024-12-22, format);(6) 获取间隔日期间隔 Period p Period.between(localDate1, localDate2); // 定义两个日期 p.getYears(); // 获取间隔年数 p.getMonths(); // 获取间隔月数 p.getDays(); // 获取间隔天数 时间间隔 Duration d Duration.between(localTime1, localTime2); // 定义两个时间也可指定localDateTime 获取时分秒5 数组5.1 Arrays(1) 转字符串String str Arrays.toString(byte[] ... short | int | long | double | float | boolean | char | Objet数组);(2) 转集合List list Arrays.asList(T...);(3) 数值排序Arrays.sort(数值数组);// 改变参数数组值升序(4) 对象排序Arrays.sort(对象数组);// 改变参数数组对象实现Comparable接口public class User implements ComparableUser { public int compareTo(User o) { return this.age - o.age; // 正数顺序不变0相等负数改变顺序 } }(5) 对象排序匿名内部类Arrays.sort(User[], new Comparator() { Override public int compare(o1, o2) { return o1 - o2; // 正数顺序不变0相同负数改变顺序 } }6 对象6.1 Objects(1) 克隆浅克隆实现Cloneable接口实现clone方法。// User user2 user1.clone();public class User implements Cloneable { private int age; private String name; Override publi User clone() { return super.clone(); } }(2) 比较Objects.equals(s1, s2);// 可避免空指针(3) 判nullObjects.isNull(对象);Objects.isnonNull(对象);// 判断是否为null或是否不为null7 其它7.1 运行时(1) 运行时调用其它程序RuntimeRuntime run Runtime.getRuntime(); Process p r.exec(磁盘路径.exe); // 执行其它程序 p.destroy(); // 关闭启动的程序7.2 控制台输入(1) 控制台输入ScannerScanner sc new Scanner(System.in); int i sc.nextInt(); // 代码执行到这里等待控制台输入