• Java — 字符串


    字符串概要
    1.基本介绍
    • 定义:多个字符组成的序列称为字符串
    • 字符串常量:用双引号""引起来的字符序列
    2.空串与空引用
    • 空串:无任何字符的字符串,即双引号之间无任何字符

    • 空引用:字符串队形指向null

      String str = "";	//空串
      String str1 = null; //空引用
      String str2 = " ";  //含一个空格的串
      
      • 1
      • 2
      • 3
    3.字符串类

    Java中讯在多种字符串相关类

    • 字符串常量类java.lang.String
    • 字符串变量类java.lang.StringBufferjava.lang.StringBuilder
    • 字符串分隔解析类java.util.StringTokenizer
    String
    1.基本介绍
    • String类是final修饰的,无法被继承

    • String是字符串常量类:可以指向新的对象但是对象本身的值不能改变

      String str3 = "abc";
      System.out.println(str3);//abc
      str3 = "def";
      System.out.println(str3);//def
      
      • 1
      • 2
      • 3
      • 4
    • 初始化:有直接赋值和应用构造方法两种

      //两种初始化方式的区别
      
      String str4 = "abc";
      String str5 = "abc";
      System.out.println(str4.equals(str5));//比较内容是否相等 true
      System.out.println(str4 == str5);	  //是否指向一个对象 true
      //字符串存储在常量区已有指向已有不在开辟新空间
      
      String str6 = new String("abc");
      String str7 = new String("abc");
      System.out.println(str6.equals(str7));//true
      System.out.println(str6 == str7);	  //false
      //用new永远都是新开辟内存空间
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    2.常用的字符串处理
    • 获取字符串长度字符串.length()

      System.out.println(str.length()); 	 //空串:0
      // System.out.println(str1.length());//空引用异常
      System.out.println(str2.length());	 // 1
      
      • 1
      • 2
      • 3
    • 字符串拼接字符串1.concat(字符串2)

      System.out.println(str5.concat("def")); //abcdef
      System.out.println(str5 + "def");		//abcdef
      
      • 1
      • 2
    • 字符串查找

      • indexOf:返回第一次出现的下标值
      • lastIndexOf:返回最后一次出现的下标值
      • startWith:是否以某个字符串开头
      • charAt:查找相应索引对应的值
      String str8 = "abcbca";
      System.out.println(str8.indexOf("bc"));		// 1
      System.out.println(str8.lastIndexOf("bc")); // 3
      System.out.println(str8.startsWith("bc"));  //false
      System.out.println(str8.charAt(1));			// b
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 字符串分割:字符串.split("以什么分割")

      String str9 = "吴小祖 彭小晏 周小伦";
      String[] infos = str9.split(" ");//以什么分割
      System.out.println("第一名:" + infos[0]);
      System.out.println("第二名:" + infos[1]);
      System.out.println("第三名:" + infos[2]);
      String str10 = "吴小祖:彭小晏 周小伦";
      String[] infos1 = str10.split(" |:");//如果不只一种分隔符用 |
      String str11 = "吴小祖|彭小晏|周小伦";
      String[] infos2 = str11.split("\\|");//如果分隔符是|需要转义
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • 字符串比较

      • equalsIgnoreCase:比较是否相等,不分大小写
      • compareTo:返回值为0是代表相等
      System.out.println(str12.equalsIgnoreCase(str13)); //true
      System.out.println(str12.compareTo(str13));
      
      • 1
      • 2
    • 字符串替换:字符串.replace(旧串, 新串)

      String str14 = "吴小祖 彭小晏 周小伦";
      System.out.println(str14.replace(' ', '|'));//吴小祖|彭小晏|周小伦
      
      • 1
      • 2
    • 求子串:字符串.substring(起始下标, 起始下标+截取长度)

      String str15 = "abcdefg";
      System.out.println(str15.substring(1, 5));//bcde
      
      • 1
      • 2
    StringBuffer
    1.基本介绍
    • 是一种字符串变量类型

    • 只能用构造方法创建对象

      StringBuffer strbuf = new StringBuffer("abc");
      
      • 1
    2.常用的方法
    • 字符串连接:append

      //传参:拼接字符串
      strbuf.append("def");
      System.out.println(strbuf);//直接将原字符串修改 abcdef
      
      • 1
      • 2
      • 3
    • 字符串插入:insert

      //传参:插入位置,插入字符串
      strbuf.insert(1, "123");
      System.out.println(strbuf);//a123bcdef
      
      • 1
      • 2
      • 3
    • 字符串删除:delete

      //传参:起始下标,其实下标+截取长度
      strbuf.delete(1, 4);
      System.out.println(strbuf);//abcdef
      
      • 1
      • 2
      • 3
    • 字符串逆序:reserve

      strbuf.reverse();
      System.out.println(strbuf);//fedcba
      
      • 1
      • 2
    StringBuilder类与StringTokenizer
    1.StringBuilder
    • StringBuilder类与StringBuffer类的方法调用是一致的
    • 但是其属于非线程安全的
    2.StringTokenizer
    • 主要用途是将字符串以定界符为界,分析为一个个独立的词组
    • 定界符可以自己指定
  • 相关阅读:
    数据结构--栈的实现
    Visual Studio 2019程序运行出现‘Access violation reading location‘的问题
    vue--10.路由守卫、仓库vuex、elementUI框架
    如何利用python来提取SQL语句中的表名称
    如何学习能减少对现有工作的依赖?
    Nginx之日志模块解读
    AngouriMath: 用于C#和F#的开源跨平台符号代数库
    字节跳动面试官:请你实现一个大文件上传和断点续传
    小白从CentOS7到安装CDH6.3.2入坑实操指北(一)
    MySQL 8.2 Command Line Client打开时一闪而过闪退问题
  • 原文地址:https://blog.csdn.net/m0_60610120/article/details/128105883