一、StringBuilder类
StringBuilder代表可变字符串对象,相当于是一个容器,它里面的字符串是可以改变的,就是用来操作字符串的。
1.1 使用方法
1 2 3 4 5 6 7 8 9
| StringBuilder s = new StringBuilder("abcs");
s.append(12); s.append("黑马"); s.append(666).append("黑马")
s.reverse();
s.length();
|
1.2 应用案例
将int数组转换为指定格式的字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class Test{ public static void main(String[] args){ String str = getArrayData( new int[]{11,22,33}); System.out.println(str); } public static String getArrayData(int[] arr){ if(arr==null){ return null; } StringBuilder sb = new StringBuilder("["); for(int i=0; i<arr.length; i++){ if(i==arr.legnth-1){ sb.append(arr[i]).append("]");; }else{ sb.append(arr[i]).append(","); } } return sb.toString(); } }
|
二、StringJoiner类
StringJoiner号称是拼接神器,不仅效率高,而且代码简洁。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class Test{ public static void main(String[] args){ StringJoiner s = new StringJoiner(","); s.add("java1"); s.add("java2"); s.add("java3"); System.out.println(s); StringJoiner s1 = new StringJoiner(",","[","]"); s1.add("java1"); s1.add("java2"); s1.add("java3"); System.out.println(s1); } }
|
三、Arrays类
Arrays是操作数组的工具类,它可以很方便的对数组中的元素进行遍历、拷贝、排序等操作。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
public class ArraysTest1 { public static void main(String[] args) { int[] arr = {10, 20, 30, 40, 50, 60}; System.out.println(Arrays.toString(arr));
int[] arr2 = Arrays.copyOfRange(arr, 1, 4); System.out.println(Arrays.toString(arr2));
int[] arr3 = Arrays.copyOf(arr, 10); System.out.println(Arrays.toString(arr3));
double[] prices = {99.8, 128, 100}; Arrays.setAll(prices, new IntToDoubleFunction() { @Override public double applyAsDouble(int value) { return prices[value] * 0.8; } }); System.out.println(Arrays.toString(prices));
Arrays.sort(prices); System.out.println(Arrays.toString(prices)); } }
|
现在,想对Student类的一些对象排序,两种方法:
方法一:让Student类实现Comparable接口,同时重写compareTo方法。Arrays的sort方法底层会根据compareTo方法的返回值是正数、负数、还是0来确定谁大、谁小、谁相等。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12
| public class Student implements Comparable<Student>{ private String name; private double height; private int age; @Override public int compareTo(Student o){ return this.age - o.age; } }
|
方法二:在调用Arrays.sort(数组,Comparator比较器);
时,除了传递数组之外,传递一个Comparator比较器对象。Arrays的sort方法底层会根据Comparator比较器对象的compare方法方法的返回值是正数、负数、还是0来确定谁大、谁小、谁相等。代码如下:
1 2 3 4 5 6
| Arrays.sort(students, new Comparator<Student>()){ @Override public int compare(Student o1, Student o2){ return Double.compare(o1.getHeight(), o2.getHeight()); } }
|
四、Lambda表达式
作用:用于简化匿名内部类代码的书写。
在使用Lambda表达式之前,必须先有一个接口,而且接口中只能有一个抽象方法。(注意:不能是抽象类,只能是接口)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public class LambdaTest1 { public static void main(String[] args) { Swimming s = new Swimming(){ @Override public void swim() { System.out.println("学生快乐的游泳~~~~"); } }; s.swim(); Swimming s1 = () -> { System.out.println("学生快乐的游泳~~~~"); }; s1.swim(); } }
|
使用lambda表达式重新写排序方法
1 2
| Arrays.sort(students, (Student o1, Student O2) -> { return Double.compare(o1.getHeight() , o2.getHeight());});
|
五、正则表达式
正则表达式其实是由一些特殊的符号组成的,它代表的是某种规则。
正则表达式的作用1:用来校验字符串数据是否合法
正则表达式的作用2:可以从一段文本中查找满足要求的内容
matches(String regex)
。这个方法是属于String类的方法。

举例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| "a".matches("[abc]"); "e".matches("[^abc]"); "a".matches(["a-zA-Z"]); "k".matches("[a-z&&[^bc]]");
"许".matches(".") ; "3".matches("\\d"); "d".matches("\\D"); " ".matches("\s"); "s".matches("\\w");
"a".matches("\\w?"); "abc12".matches("\\w*"); "abc12".matches("\\w+");
|