java用法积累!

java用法积累

Integer和int

Integer是int的包装类型,支持自动装箱和拆箱。
总结来说,Integer[]array和int[]的主要区别在于—个是对象数组,一个是基本
类型数组。
Integer[] array的默认值是null,因为它是对象引用。
int[]的默认值是0 因为它是基本类型

1
2
3
4
5
int[] intArray = {1, 2, 3};
Integer[] integerArray = {1, 2, 3};

integerArray[0] = intArray[0]; // 自动装箱:int 转换为 Integer
intArray[1] = integerArray[1]; // 自动拆箱:Integer 转换为 int

字符串

java.lang.StringBuilder

1
2
3
4
String str = ''
for(int i=0;i<1000;i++){
str=str+','+i;
}

上面这种字符串拼接方式会不断创建新的字符串,然后抛弃旧的,这样,绝大部分字符串都是临时对象,不但浪费内存,还会影响GC效率。

1
2
3
4
5
6
StringBuilder sb = new StringBuilder(1024);
for(int i=0;i<1000;i++){
sb.append(',');
sb.append(i);
}
String s = sb.toString();

支持链式操作

1
2
3
4
5
6
7
8
9
10
11
public class Main
{
public static void main(String[] args){
var sb = new StringBuilder(1024);
sb.append("Mr ")
.append"Bob")
.append("!")
.insert(0, "Hello, ");
System.out.println(sb.toString());
}
}

进行链式操作的关键是,定义的append()方法会返回this,这样,就可以不断调用自身的其他方法。

1
2
3
4
5
6
7
8
class Adder{
private sum=0;
public Adder add(int i){
sum+=i;
return this;
}

}

insert、append、delete方法

1
sb.delete(sb.length() - 2, sb.length());

StringJoiner

1
2
3
4
5
6
7
8
9
10
11
12
public class Main{
public static void main(String[] args){
String[] names = {'bob','tom','jerry'};
StringBuilder sb = new StringBuilder(1024);
sb.append('hello ');
for(String s:names){
sb.append(', ');
sb.append(s);
}
sb.append('!');
}
}

StringJoiner适用于将数组用特定字符拼接,并且还支持快捷设置首位字符!

1
2
3
4
5
6
7
8
9
public class Main{
public static void main(String[] args){
String[] names = {'bob','tom','jerry'};
StringJoiner sj = new StringJoiner(', ',"hello ","!");
for(String s:names){
sj.append(s);
}
}
}

String.join()

String还提供了一个静态方法join(),这个方法在内部使用了StringJoiner来拼接字符串,在不需要指定“开头”和“结尾”的时候,用String.join()更方便

1
2
String[] names = {"Bob", "Alice", "Grace"};
var s = String.join(", ", names);

java.lang.StringBuffer

StringBuffer,这是Java早期的一个StringBuilder的线程安全版本,它通过同步来保证多个线程操作StringBuffer也是安全的,但是同步会带来执行速度的下降。
StringBuilder和StringBuffer接口完全相同,现在完全没有必要使用StringBuffer

Math

Math.random() 返回一个大于等于 0 且小于 1 的伪随机浮点数
Math.round() 函数返回一个数字四舍五入后最接近的整数