1 包装类
基本类型 包装类型 byte Byte short Short int Integer long Long double Double float Float boolean Boolean char Character(1) 自动拆箱(自动变int):int i = Integer.valueOf(11);// new Integer过时了。超过127的话 new Integer会生成新的地址导致 new Integer(128) == new Integer(128) 返回false。
(2) 自动装箱(自动变Integer):Integer i = 1;
2 字符串API
2.1 String
2.2.1 字符串编辑
(1) 定义字符串:String str ="abc";// str(堆区), "abc"(常量池)
(2) 创建字符串:String str =newString("abc");// str(堆区new地址), "abc"(常量池)。String str = new String(byte[]); 默认开发平台字符集(eclipse=GBK, idea=UTF-8)。String str = new String(byte[], "字符集"); 指定字符集。
(3) 转换字符串:String str = String.valueOf(char[] | boolean | char | int | long | float | double)
(4) 拼接字符串:String str = "abc"+"def"; 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 数值API
3.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不满位显示0
DecimalFormat format = new DecimalFormat("#,###.00"); String str = format.format(1234.567);(2)String.format:
String s1 = String.format("%02d", int); // [0]:左补0,[2d]:补满2位整数 String s2 = String.format("%,.2f", ); // [,]:逗号分隔数值,[.2f]:保留2位小数 String s3 = String.format("%.0f", String); // [.0f]:不保留小数4 日期API
4.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 Comparable<User> { 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) 判null:Objects.isNull(对象);Objects.isnonNull(对象);// 判断是否为null,或是否不为null
7 其它
7.1 运行时
(1) 运行时调用其它程序:Runtime
Runtime run = Runtime.getRuntime(); Process p = r.exec("磁盘路径.exe"); // 执行其它程序 p.destroy(); // 关闭启动的程序7.2 控制台输入
(1) 控制台输入:Scanner
Scanner sc = new Scanner(System.in); int i = sc.nextInt(); // 代码执行到这里,等待控制台输入