在Java中,String类是字符串操作类,提供了多种方法对字符串进行操作,经过学习对String类的常用方法总结如下:

一、String字符串的创建

由于String类位于Java的lang包下,所以在使用时不需要通过import引入(导包)。String类是final类,不能被继承,对象创建后不可修改,并且由0或多个字符组成,包含在一对双引号之间。其次String类其实是通过char数组来保存字符串的,它值是不可变的。
所以,字符串的创建方式有如下3种:

首先,我们应该知道,每当我们创建一个字符串对象时,首先就会检查字符串常量池中是否存在面值相等的字符串,如果有,则不再创建,直接返回字符串常量池中对该对象的引用;若没有,则创建然后放入到字符串常量池中并且返回新建对象的引用。这个机制是非常有用的,因为可以提高效率,减少了内存空间的占用。

方式1:在字符串池里直接创建

     String str1 = "just so so";` String str2 = "just so so";str2="just do it"

由于字符串池里已经有了“just so so”,所以当再定义String str2 = "just so so"时,str2不会再重新创建新字符串,而是会指向原来的字符串地址。
str2="just do it"时, str2重新创建新字符串"just do it"并指向了新的字符串地址。

方式2: 在堆中开辟空间,创建并保存字符串

     String str3 = new String("just go go");

这种方法不仅在字符串池中创建了“just go go”,还在堆中开辟了一片内存,用来存储该字符串在字符串池里的地址。

方式3:将字符数组,转换成字符串

     char[] chs = {'g','o','g','o','!'};String str4 = new String(chs);System.out.println(str4);

二.String类的常用方法

1. equals() : 方法

== : 运算符,基本数据类型进行值的比较,引用数据类型进行内存地址的比较
equals() : 方法,基本数据类型没有方法,引用数据类型(String)进行值(字符串内容)的比较

     // 基本数据类型// int a = 12, b = 45;System.out.println(a == b);//false// 引用数据类型StringString str1 = "gogo";String str2 = "gogo";//引用数据类型进行内存地址的比较String str3 = new String("gogo");System.out.println(str1 == str2);//trueSystem.out.println(str1 == str3);//falseScanner input = new Scanner(System.in);String str4 = input.nextLine();String str5 = input.nextLine();System.out.println(str4 == str5);//false//字符串内容的比较boolean isEquals = str4.equals(str5);System.out.println(isEquals);

2. String.valueOf()

功能:将指定类型转换为字符串类型
传入:需要转换的其他类型的数据(int,double,float,boolean,char[ ]数组)
返回:转换后的字符

     // int => StringString strInt = String.valueOf(123);System.out.println(strInt);// double => StringString strDouble = String.valueOf(15.98);System.out.println(strDouble);// boolean => StringString strBoolean = String.valueOf(true);System.out.println(strBoolean);char[] array = { 65, 66, 67, 68, 69 };String strArray = String.valueOf(array);System.out.println(strArray);

3. String.format( )

功能:按照指定的格式字符串(”%d-%s-%f “),创建生成新字符串

传入:参数1:格式字符串(%s,%d,%f)
参数x:动态参数值(依次按占位符的位置,传入对应的值)

返回:按照格式,产生的新字符串

     // 案例1int num1 = 15, num2 = 30;int sum = num1 + num2;// 格式化输出System.out.printf("%d+%d=%d\n", num1, num2, sum);// 格式化字符串String str = String.format("%d+%d=%d", num1, num2, sum);System.out.println(str);// 案例2// xxxx年xx月String now1 = LocalDate.now().getYear() + "年" + LocalDate.now().getMonthValue() + "月";String now2 = String.format("%s年%s月", LocalDate.now().getYear(), LocalDate.now().getMonthValue());System.out.println(now2);// xx月xx日String now3 = String.format("%s月%s日", LocalDate.now().getMonth(), LocalDate.now().getDayOfMonth());System.out.println(now3);

4. charAt()

作用:按照指定的下标位置,获取对应的字符
传入: 下标位置(注意,下标位置不能“越界”)
返回:该下标位置对应的字符

     String str1 = "ABCD";System.out.println(str1.charAt(0)); //AString str2 = "CDAA";System.out.println(str2.charAt(0)); //C

5. toCharArray()

作用:将当前字符串转换为字符数组
传入:无
返回:该字符串对应的字符数组

     String str3 = "天王盖地虎";char[] chs =  str3.toCharArray();System.out.println(chs[1]);System.out.println(chs[2]);

6.split( )

作用:按照指定的“字符串”,对原字符串进行切割
传入:指定字符串(进行切割的格式),指定字符串中如果包含特殊字符(正则表达式),需要使用 \\进行转义
返回:字符串数组,包含切割后的每个子字符串

     // 功能:按照指定字符串进行切割,返回字符串数组// 案例1String sourceStr = "北京#-石家庄#-广州#-西安#-武汉";String[] resultArray = sourceStr.split("#-");for (String city : resultArray) {System.out.println(city);}// 案例2sourceStr = "渭城朝雨浥轻尘,客舍青青柳色新。劝君更近一杯酒,西出阳关无故人。";String[] resultArray01 = sourceStr.split("。");String[] resultArray011 = resultArray01[0].split(",");String[] resultArray012 = resultArray01[1].split(",");resultArray01 = new String[4];System.arraycopy(resultArray011, 0, resultArray01, 0, 2);System.arraycopy(resultArray012, 0, resultArray01, 2, 2);System.out.println(Arrays.toString(resultArray01));// 案例3String ip = "192.168.16.118";// 切割字符串如果是特殊符号(正则表达式),需加入\\进行转义String[] ipArray = ip.split("\\."); for(String strNum : ipArray) {System.out.println(strNum);}// 案例4sourceStr = "北京#$石家庄#$广州#$西安#$武汉";// 切割字符串如果是特殊符号(正则表达式),需加入\\进行转义String[] cityArray = sourceStr.split("#\\$");for(String cityName : cityArray) {System.out.println(cityName);}

7.compareTo( )

作用:比较两个字符串之间的大小
比较规则:先比较两个字符串对应字符 ASCII码(英文)或Unicode码(中文)的"差", 如果比较的所有字符一致,再比较字符串的长度“差”。
传入:需要比较的另外一个字符串

返回:
正数:字符串1 > 字符串 2
零:字符串1 = 字符串2
负数:字符串1 < 字符串2

     String str1 ="天";String str2 ="地";System.out.println(str1.compareTo(str2));

8. equals( ) 或 equalsIgnoreCase( )

作用:
equals( ) 比较字符串内容是否一致,区分大小写
equalsIgnoreCase( ) 比较字符串内容是否一致,不区分大小写

传入:需要比较的另外一个字符串

返回:
true:代表两个字符串内容一致
false:代表两个字符串内容不一致

     String str1 ="天";String str2 ="第";System.out.println(str1.equals(str2));String str3 = "nike";String str4 = "NIKE";System.out.println(str3.equalsIgnoreCase(str4));

9. contains( )

作用: 判断当前字符串中是否包含指定子字符串
传入:子字符串
返回:true:代表包含 false:代表不包含

     String str1 = "ABABABASOSOASB";System.out.println(str1.contains("soso"));System.out.println(str1.contains("BA"));String source = "SDKLSKDJFJSIODFOISDJFOJSDFJLSDF";String world = "timi";System.out.println(source.contains(world));

10.startsWith( )

作用:判断当前字符串是否以指定字符串“开头”
传入:子字符串
返回:true:是 false:不是

     String url = "http://www.baidu.com";System.out.println(url.startsWith("http"));

11.endsWith( )

作用:判断当前字符串是否以指定字符串“结尾”
传入:子字符串

返回:true:是 false:不是

     String fileName = "weixin.docx";System.out.println(fileName.endsWith(".png"));

12.indexOf( )

作用:查找子字符串的首次出现的位置

传入:
方式1: 子字符串,从当前字符串的下标0位置查找
方式2:子字符串,开始位置,从当前字符串的指定开始位置查找

返回:如果找到,则返回该子字符串的第一次出现的位置; 如果没有找到,则返回负数

     // 案例1String data1 = "陕西:{nowConfirm:0,confirmAdd:2,dead:0,heal:2,zero:0}";int pos1 = data1.indexOf(":"); // 从下标0开始查找System.out.println(pos1); // 2int pos2 = data1.indexOf(":", 5); // 从下标5开始查找System.out.println(pos2); // 18// 案例2 : 判断email邮箱地址中,是否包含@,并且@的位置不在首位或尾部String email = "billgmail.com"; // 正常// String email02 = "@billgmail.com"; //错误// String email03 = "billgmail.com@"; //错误int pos = email.indexOf("@");System.out.println(pos);if (pos == 0 || pos == email.length() - 1 || pos < 0) {System.out.println("邮箱格式有误");} else {System.out.println(

13.lastIndexOf( )

作用:查找子字符串的最后一次出现的位置
传入:查找的子字符串
返回:如果找到,则返回该子字符串的最后一次出现的位置; 如果没有找到,则返回负数

     String str2="ABABCCDSCSKCDBKA";//查找出子字符串第一次出现的位置int pos01=str2.indexOf("CD");System.out.println(pos01);//查找出子字符串最后一次出现的位置int pos02=str2.lastIndexOf("CD");System.out.println(pos02);

14.replace( )

作用:替换子字符串(全部)
传入:子字符串, 替换字符串
返回:替换后的新字符串

     // 案例1:替换标点符号String content = "where there is a will there is a way,I will go where you will go,there you!finish this job";content = content.replace(",", " ").replace("!", " ");System.out.println(content);// 案例2:String src ="<img src=\"https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2621379901.webp\" alt=\"拆弹专家2\" rel=\"nofollow\" class=\"\" />"+ "  <img src=\"https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2618446242.webp\" alt=\"温暖的抱抱\" rel=\"nofollow\" class=\"\" />"+ "  <img src=\"https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2627788612.webp\" alt=\"沐浴之王\" rel=\"nofollow\" class=\"\" />";//src = src.replace(".webp", ".jpg");src = src.replaceFirst(".webp", ".png");System.out.println(src);

15.replaceFirst( )

作用:替换子字符串( 第一个 )
传入:子字符串, 替换字符串
返回:替换后的新字符串

16.toUpperCase( )

作用:小写转大写

     String str2 = UUID.randomUUID().toString();str2 = str2.toUpperCase();System.out.println(str2);

17.toLowerCase( )

作用:大写转小写

     String str3 = "ABCDE";str3 = str3.toLowerCase();System.out.println(str3);

18.trim()

作用:去除字符串左右空格
传入:无
返回:去除左右空格后的新字符串

     src = "                                    <img src=\"https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2627788612.webp\" alt=\"沐浴之王\" rel=\"nofollow\" class=\"\" />";System.out.println("使用前:"+src);//src = src.replace(" ", ""); //将字符中的所有空格替换为""字符串src = src.trim(); //去除字符串的左右空格System.out.println("使用后:"+src);

19.substring()

功能:截取子字符串
返回:截取后的子字符串

        String fileName = "weweweweweok.apk";int beginPos = fileName.indexOf("."); // 查找.的位置// 案例1:截取后缀名// 从指定开始位置,截取至字符串的尾部(截取后缀名)String suffix = fileName.substring(beginPos);System.out.printf("%s的后缀名是%s\n", fileName, suffix);// 案例2:截取文件名String name = fileName.substring(0, beginPos);System.out.printf("%s的文件名是%s\n", fileName, name);// 案例3:提取confirmAdd对应的数据String data2 = "河北:{nowConfirm:114,confirmAdd:100,dead:0,heal:103,zero:2}";// 找出confirmAdd的位置int confirmAddIndex = data2.indexOf("confirmAdd");// 从confirmAdd的位置开始查找第1个“:”的下一个位置int beginIndex = data2.indexOf(":",confirmAddIndex) + 1;// 从confirmAdd的位置开始查找第1个“,”的位置int endIndex = data2.indexOf(",",confirmAddIndex);String strData = data2.substring(beginIndex, endIndex);System.out.println(strData);

20.String.join()

功能:将字符串数组,按照指定字符串进行连接
传入:间隔连接符、需连接的数组
返回:连接后的新字符串

     String[] array = { "AE", "AD", "AB" };String result01 = String.join("#", array);System.out.println(result01);

21.StringJoiner

功能:进行字符串的连接
StringJoiner joiner = new StringJoiner(",");
参数表示:连接数组元素间的符号格式

StringJoiner joiner = new StringJoiner(",","{","}");
参数表示:参数1:连接数组元素的间隔符
参数2:所连接字符串的前缀符
参数3:所连接字符串的后缀符

     String[] array = { "AE", "AD", "AB" };//用法1:// StringJoiner joiner = new StringJoiner(","); // 仅使用分隔符//用法2:StringJoiner joiner = new StringJoiner(",","{","}"); //分隔符,前缀,后缀for(String s : array) {joiner.add(s); //添加字符串} String result02 = joiner.toString();System.out.println(result02);

基于Java的String字符串基本用法总结相关推荐

  1. Java中String字符串截取几种方法(substring,split)

    Java中String字符串截取几种方法 substring,split 这是一个Java中的String的基础用法的演示. 下面通过代码对大家进行讲解 substring 这里用来ndexOf,la ...

  2. Java中String 字符串与List<String>互转

    Java中String 字符串与List互转 大家好,我是酷酷的韩~ 1.String转List public static void main(String[] args) {String aa = ...

  3. Java中String字符串:空字符串、存放空的字符串、null的区别

    Java中String字符串:空字符串.存放空的字符串.null的区别 Java String字符串中有三种特殊的字符串:空字符串.存放空的字符串.字符串为Null,如下所示: String str1 ...

  4. Java将String字符串里的每个字符都分割取出来

    Java将String字符串里的每个字符都分割取出来 方法一 String str = "play with style"; char[] strArray = str.toCha ...

  5. java基础-String字符串字符长度校验

    java基础-String字符串字符长度校验 /*** 校验字符串是否在规定字符数内* @param str* @param maxLength* @return*/ public static bo ...

  6. java中String的常见用法总结

    首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 以下是关于str ...

  7. Java中string字符串的值_Java中的字符串(String)

    一.基本概念: 字符串是一系列字符串的序列.在Java语言中字符串是用一对对双引号"",括起来的字符系列.例如"Hello","你好".从数 ...

  8. java中String类的用法

    一.不变模式: 一个字符串对象创建后它的值不能改变. String str1="hello";//创建一个对象hello,不会变: System.out.println(str1) ...

  9. [探讨java深入的不变模式] java中String类的用法

    2019独角兽企业重金招聘Python工程师标准>>> 不变模式(Immutable Pattern)顾名思义,它的状态在它的生命周期内是永恒的(晕,永恒的日月星晨,对象如人, 太渺 ...

最新文章

  1. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍(转)
  2. 2 关于数据仓库维度数据处理的方法探究系列——无变化维度处理
  3. perl 对ENV环境变量的使用
  4. ASP.NET页面的CheckBoxList组件
  5. 感恩工作平台心得体会_感恩有你,一路同行——石龙联社组织举办10月份员工集体生日会...
  6. HTML基础-张晨光-专题视频课程
  7. 【CodeForces - 602D】Lipshitz Sequence(思维,单调栈,斜率单调性)
  8. [React] 尚硅谷 -- 学习笔记(四)
  9. 计算机基础0018,自学考试计算机用基础 0018复习资料.doc
  10. 图两点间的最短路径,所有路径算法C语言实现
  11. java 显示图片的一部分_求只显示图片上半部分三分之一的写法
  12. 超全超详细Rime中州韵输入法配置指南
  13. 2018百战程序员大数据全套教程
  14. elementui 多选框的使用
  15. OSChina 周三乱弹 —— 领悟人生,一百块钱都不给?
  16. 单片机中存储器扩展位地址线怎么算_单片机程序存储器的扩展
  17. layui 下拉框多选
  18. Handling Complexity in the Halo 2 AI
  19. js制作12进制的时钟特效
  20. ROS path [0]=/opt/ros/melodic/share/rosROS path [1]=/home/huanyu-pc/robot_ws/srcROS path [2]=/opt/

热门文章

  1. ireport 导出pdf文件 字体问题
  2. 梦到娭毑_原水_新浪博客
  3. 怎么把图片转换成文字?这几种转换方法值得一试
  4. Spring的初体验-2
  5. layui轮播图切换会有跳动_使用jQuery做了一个轮播图,但是在图片的切换中会出现闪烁情况,该如何解决?...
  6. 沿任意轴旋转及其推导
  7. 篱笆家装宝典之二十一——窗
  8. 汇编 - 3.2 - 由源程序到程序运行
  9. 如何用UE4制作非写实“草浪”?
  10. c语言求a b 最大公约数和最小公倍数,常见算法:C语言求最小公倍数和最大公约数三种算法...