欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java学习-day4-字符串(String)

程序员文章站 2022-03-01 13:05:20
...

字符串(String)

  • 值传递

    • 基本类型的值传递:方法调用时,基本类型是拷贝值,拷贝完成后相互之间独立,是值之间进行赋值

      public static void main(String[] args){
        int x=2;
        calc(x);
        System.out.println(x);
      }
      
      private static void calc(int x){
        x=x+10;
      }
      
    • 引用类型的值传递:方法调用时,引用类型是拷贝引用的值,拷贝完成后,两个变量指向同一个对象,这里通过x1改变对象的值,再通过x访问被改变的对象,因此值发生改变。虚拟地址之间进行赋值

      public static void main(String[] args){
        int[] x={2,3,5};
        calc(x);
        System.out.println(Arrays.toString(x));
      }
      
      Private static void calc(int[] x1){
        x1[0]=999;
      }
      
  • 不可变性

    • 一旦一个字符串被创建后,它的值就不能被修改;

      String s1="Hello";
      s1="World";
      //这里只是指向发生了变化,而不是改变了值
      
    • 会改变内容的方法全部都有返回值。表明,改变内容会产生新的字符串,与不可变性一致

  • 方法

    • contains 当且仅当此字符串包含指定的 char 值序列时,返回 true。
    • endsWith / startsWith 是否以参数为结尾/开头
    • equals / equalsIgnoreCase 比较
    • indexOf / lastIndexOf / charAt 从头或尾部查找第一次出现指定字符或者字符串的索引位置
    • length() / isEmpty 长度/判断长度是否为空
    • replace / repalceAll /replaceFirst 替换
    • split 拆分
    • subString 返回一个新字符串,它是此字符串的一个子字符串。
    • trim 缩进字符串两边空格
    • toUpperCase /toLowerCase 转换为大/小写
    • valueOf 转换类型
  • 常量池

    • 为了能够重用这些不变的字符串,Java使用了字符串常量池;
    • 凡是用=直接赋值的方式得到的字符串,都存储在常量池中;相同的值共用一个具体字符串;
    • 使用new创建的字符串不适用常量池,每次都分配新的内存空间;
  • 可变的字符串

    • StringBuffer 可变线程安全
    • StringBuilder 可变线程不安全(优先使用,比StringBuffer效率高)
    • 常用方法
      • append 从尾部加入
      • insert 从中间插入
      • delete / deleteCharAt
      • indexOf /lastIndexOf
      • setCharAt
      • replace
      • reverse 倒序
      • subString