字符串

  • 创建对象
  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) 限制切开的次数

posted @ 2018-11-06 14:03  原来是这样啊  阅读(135)  评论(0)    收藏  举报