-
trim()并没有改变字符串的内容,而是返回了一个新字符串。
-
另一个strip()方法也可以移除字符串首尾空白字符。它和trim()不同的是,类似中文的空格字符\u3000也会被移除
-
拼接字符串使用静态方法join(),它用指定的字符串连接字符串数组:
String[] arr = {"A", "B", "C"};
String s = String.join("***", arr); // "A***B***C"
- 要把任意基本类型或引用类型转换为字符串,可以使用静态方法valueOf()。这是一个重载方法,编译器会根据参数自动选择合适的方法
- Integer有个getInteger(String)方法,它不是将字符串转换为int,而是把该字符串对应的系统变量转换为Integer.
- 从String的不变性设计可以看出,如果传入的对象有可能改变,我们需要复制而不是直接引用
- Java使用Unicode编码表示String和char;
- 转换为byte[]时,始终优先考虑UTF-8编码。
- 为了能高效拼接字符串,Java标准库提供了StringBuilder,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder中新增字符时,不会创建新的临时对象。(如append,+不用)
- 如果我们查看StringBuilder的源码,可以发现,进行链式操作的关键是,定义的append()方法会返回this,这样,就可以不断调用自身的其他方法。
- StringBuffer,这是Java早期的一个StringBuilder的线程安全版本,它通过同步来保证多个线程操作StringBuffer也是安全的,但是同步会带来执行速度的下降。
StringBuilder和StringBuffer接口完全相同,现在完全没有必要使用StringBuffer。 - 拼接字符串:在不需要指定“开头”和“结尾”的时候,用String.join()更方便
public class Main {
public static void main(String[] args) {
String[] names = {"Bob", "Alice", "Grace"};
var sj = new StringJoiner(", ", "Hello ", "!");
for (String name : names) {
sj.add(name);
}
System.out.println(sj.toString());
}
}
String[] names = {"Bob", "Alice", "Grace"};
var s = String.join(", ", names);
}
-
Java的数据类型分两种:
基本类型:byte,short,int,long,boolean,float,double,char 引用类型:所有class和interface类型
-
Java核心库提供的包装类型可以把基本类型包装为class
-
自动装箱和自动拆箱都是在编译期完成的(JDK>=1.5);
-
装箱和拆箱会影响执行效率,且拆箱时可能发生NullPointerException;
-
包装类型的比较必须使用equals();
-
JavaBean:主要用来传递数据,即把一组数据组合成一个JavaBean便于传输。
-
JavaBean是一种符合命名规范的class,它通过getter和setter来定义属性;
属性是一种通用的叫法,并非Java语法规定;
可以利用IDE快速生成getter和setter;
使用Introspector.getBeanInfo()可以获取属性列表。 -
引用类型比较,要始终使用equals()方法,但enum类型可以例外。这是因为enum类型的每个常量在JVM中只有一个唯一实例,所以可以直接用==比较
-
Java使用enum定义枚举类型,它被编译器编译为final class Xxx extends Enum { … };
通过name()获取常量定义的字符串,注意不要使用toString();
通过ordinal()返回常量定义的顺序(无实质意义);
可以为enum编写构造方法、字段和方法
enum的构造方法要声明为private,字段强烈建议声明为final;
enum适合用在switch语句中。 -
BigInteger用于表示任意大小的整数;
BigInteger是不变类,并且继承自Number;
将BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确。 -
BigDecimal用于表示精确的小数,常用于财务计算;
比较BigDecimal的值是否相等,必须使用compareTo()而不能使用equals()。 -
Java提供的常用工具类有:
Math:数学计算
Random:生成伪随机数
SecureRandom:生成安全的随机数