常用类
Objects
java7新增的一个工具类 提供一些工具方法来操作对象 这些工具方法大多是"空指针"安全的 比如不能确定一个引用变量是否为null 如果贸然的使用toString方法 可能报空指针异常 但如果使用Objects提供的toSting方法就不会引发异常 只会返回一个"null"字符串
// 输出null对象的hashCode值 输出0 System.out.println(Objects.hashCode(objectsTest)); // 输出一个null对象的toString 输出null System.out.println(Objects.toString(objectsTest)); // 要求objectsTest不能为空 如果objectsTest为空则引发异常 System.out.println(Objects.requireNonNull(objectsTest,"不能为null"));
// 如果为空则抛出异常 不为空就赋值 ObjectsTest obj = Objects.requireNonNull(objectsTest,"空");
String,StringBuffer,StringBuilder
String类是不可变类 即一旦一个String对象被创建后 包含在这个对象中的字符序列是不可改变的 直至对象被销毁
StringBuffer 对象则代表一个字符序列可变的字符串 线程安全
StringBuilder 与StringBuffer类似 但线程不安全 如果需要创建一个内容可变的字符串对象 优先考虑StringBuilder
String类是不可变的 String的实例一旦生成就不会再改变了
//除了使用了3个字符串直接量外 还会额外生成2个字符串量 b 和 h String str1 = "h"; str1 = str1 + "b"; str1 = str1 + "c";
因为String是不可变的 所以会额外产生很多临时变量 使用StringBuffer或StringBuilder可以避免这个问题
StringBuilder sb = new StringBuilder(); sb.append("1"); // sb = 1 sb.insert(0,"2"); // sb = 2 1 sb.replace(1,1,","); // sb = 2,1 sb.delete(1,2);// sb = 21 sb.reverse(); // sb = 12 System.out.println(sb.toString()); System.out.println(sb.capacity()); System.out.println(sb.length());