java小知识2

  1. trim()并没有改变字符串的内容,而是返回了一个新字符串。

  2. 另一个strip()方法也可以移除字符串首尾空白字符。它和trim()不同的是,类似中文的空格字符\u3000也会被移除

  3. 拼接字符串使用静态方法join(),它用指定的字符串连接字符串数组:

String[] arr = {"A", "B", "C"};
String s = String.join("***", arr); // "A***B***C"
  1. 要把任意基本类型或引用类型转换为字符串,可以使用静态方法valueOf()。这是一个重载方法,编译器会根据参数自动选择合适的方法
  2. Integer有个getInteger(String)方法,它不是将字符串转换为int,而是把该字符串对应的系统变量转换为Integer.
  3. 从String的不变性设计可以看出,如果传入的对象有可能改变,我们需要复制而不是直接引用
  4. Java使用Unicode编码表示String和char;
  5. 转换为byte[]时,始终优先考虑UTF-8编码。
  6. 为了能高效拼接字符串,Java标准库提供了StringBuilder,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder中新增字符时,不会创建新的临时对象。(如append,+不用)
  7. 如果我们查看StringBuilder的源码,可以发现,进行链式操作的关键是,定义的append()方法会返回this,这样,就可以不断调用自身的其他方法。
  8. StringBuffer,这是Java早期的一个StringBuilder的线程安全版本,它通过同步来保证多个线程操作StringBuffer也是安全的,但是同步会带来执行速度的下降。
    StringBuilder和StringBuffer接口完全相同,现在完全没有必要使用StringBuffer。
  9. 拼接字符串:在不需要指定“开头”和“结尾”的时候,用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);
}

  1. Java的数据类型分两种:

       基本类型:byte,short,int,long,boolean,float,double,char
       
       引用类型:所有class和interface类型
    
  2. Java核心库提供的包装类型可以把基本类型包装为class

  3. 自动装箱和自动拆箱都是在编译期完成的(JDK>=1.5);

  4. 装箱和拆箱会影响执行效率,且拆箱时可能发生NullPointerException;

  5. 包装类型的比较必须使用equals();

  6. JavaBean:主要用来传递数据,即把一组数据组合成一个JavaBean便于传输。

  7. JavaBean是一种符合命名规范的class,它通过getter和setter来定义属性;
    属性是一种通用的叫法,并非Java语法规定;
    可以利用IDE快速生成getter和setter;
    使用Introspector.getBeanInfo()可以获取属性列表。

  8. 引用类型比较,要始终使用equals()方法,但enum类型可以例外。这是因为enum类型的每个常量在JVM中只有一个唯一实例,所以可以直接用==比较

  9. Java使用enum定义枚举类型,它被编译器编译为final class Xxx extends Enum { … };
    通过name()获取常量定义的字符串,注意不要使用toString();
    通过ordinal()返回常量定义的顺序(无实质意义);
    可以为enum编写构造方法、字段和方法
    enum的构造方法要声明为private,字段强烈建议声明为final;
    enum适合用在switch语句中。

  10. BigInteger用于表示任意大小的整数;
    BigInteger是不变类,并且继承自Number;
    将BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确。

  11. BigDecimal用于表示精确的小数,常用于财务计算;
    比较BigDecimal的值是否相等,必须使用compareTo()而不能使用equals()。

  12. Java提供的常用工具类有:

Math:数学计算
Random:生成伪随机数
SecureRandom:生成安全的随机数

发布了12 篇原创文章 · 获赞 0 · 访问量 517

猜你喜欢

转载自blog.csdn.net/s1421578048/article/details/103818769