循环字符串数组/集合拼接成新字符串的实现
旧方法 StringBuilder
String[] arr = {"hello","world","hi"};
StringBuilder stringBuilder = new StringBuilder("[");
for (String s : arr){
stringBuilder.append(s);
stringBuilder.append(",");
}
String str = stringBuilder.substring(0,stringBuilder.length() - 1);
System.out.println(str + "]");
新方法StringJoinner
String[] arr = {"hello","world","hi"};
//分隔符 起始符号 结束符号
StringJoiner sj = new StringJoiner(",","[","]");
for (String s : arr){
sj.add(s);
}
System.out.println(sj.toString());
可变参数的实现
原来
String getStr(String[] arr){}
新
等同于数组,如果多个参数,可变参数需要放在最后,否则会报错
String getStr(String... arr)
引用拷贝,浅拷贝,深拷贝
引用拷贝
A a = new A();
A b = a;
只复制对象的地址,此时a与b指向堆中同一个对象,两者修改均影响同一个对象。
浅拷贝
A a = new A();
A b = a.clobe();(A必须实实现Cloneable接口,且重写Object clone方法)
此时指向不同对象,创建新对象,属性属性复制
但如果A中存在其他引用类型,此时clone方法(实际开发一般不考虑)同样只复制该属性引用地址,则a,b中指向同一个引用对象
深拷贝
连同对象中为引用类型的属性一起拷贝
主体浅拷贝后再对属性进行拷贝
1.StringBuffer跟StringBuild谁更安全
2.BeanUtils.copyProperties总是搞不清复制的前后对象
3.char与varchar的区别
4.huttool中Assert.isFase与isTrue容易搞混