字符串

  • 创建对象
  1. 直接赋值

  2. 通过构造器

    	String s1 = "aa";
    	String s2 = "aa";
    	String s3 = new String("aa");
    	System.out.println(s1 == s2);//true
    	System.out.println(s1 == s3);//false
    

    通过直接赋值的方式是先到常量区(运行时常量区是方法区的一部分)寻找是否存在当前字符串,若存在则引用当前字符串地址,

    通过构造器的方式每new一个对象就生成一个String对象,并且在常量池中生成一个字符串

  • 不可变性

    String字符串的改变是新对象的生成而不是自身的改变

      String s1 = "a";
      String s1 = "aa";
      //在常量区又生成了一个"aa"字符串,而不是"a"变成了"aa"
    
  • 字符串拼接符 + +=

    1. 仅有的经过重载的操作符

    2. 使用多个+拼接的字符串("abc"+"111"+"sdf"),编译器默认创建StringBuilder对象调用append()方法拼接字符串

    3. 在循环内拼接字符串应使用StringBuilder,如下面代码所示当进入循环后才默认创建StringBuilder对象,所以每个循环都会创建一个StringBuilder对象,这样性能是较低的

       String s = "";
       for(int i = 0;i<=args.length;i++) {
       	s += args[i];
       }
      

      所以应该手动创建一个StringBuilder对象

       StringBuilder sb = new StringBuilder();
       for(int i = 0;i<=args.length;i++) {
       	sb.append(args[i]);
       }
      
  • StringBuilder

    线程不安全,性能较高

  • StringBuilder

    线程安全,性能较低

  • AbstractStringBuilder

    StringBuilder和StringBuilder的父类,是一个抽象类,很多方法已经在此类中实现

正则表达式

  • 规则:到百度百科上找,Pattern类

  • String内的正则表达式功能

      split(String regex) 将字符串从正则表达式的位置切开
      split(String regex, int limit) 限制切开的次数
原文地址:https://www.cnblogs.com/mdc1771344/p/9914929.html