Java——String类的方法

String str1 = “abc” 与String str2 = new String(“abc”)有什么区别?

  • 字符串常量存储在字符串常量池,目的是共享
  • 字符串非常量对象存储在堆中

String的常用方法

常用方法1:

  • int length():返回字符串的长度return value.length
String str = "abcdefghijklmn";
System.out.println(str.length());
/*输出结果:14*/
  • char charAt(int index):返回某索引处的字符return value[index]
String str = "abcdefghijklmn";
System.out.println(str.charAt(13));
/*输出结果:n*/
  • boolean isEmpty():判断是否是空字符串return value.length == 0
String str = "abcdefghijklmn";
System.out.println(str.isEmpty());
/*输出结果:false*/
/*为空返回true,不为空返回false*/
  • String toLowerCase():使用默认语言环境,将String中的所有字符转换成小写
String str = "AbcdefghijklmN";
System.out.println(str.toLowerCase());
/*输出结果:abcdefghijklmn*/
  • String toUpperCase():使用默认语言环境,将String中的所有字符转换成大写
String str = "AbcdefghijklmN";
System.out.println(str.toUpperCase());
/*输出结果:ABCDEFGHIJKLMN*/
  • String trim():返回字符串的副本,忽略前导空白和尾部空白(中间的空白不能忽略)
String str = "     AbcdefghijklmN     ";
System.out.println(str.trim());
/*输出结果:AbcdefghijklmN*/
  • boolean equals(Object obj):比较字符串的内容是否相同
String str = "AbcdefghijklmN";
System.out.println(str.equals("abcdefghijklmN"));
/*输出结果:false*/
  • boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
String str = "AbcdefghijklmN";
System.out.println(str.equalsIgnoreCase("abcdefghijklmN"));
/*输出结果:true*/
  • String concat(String str):将指定字符串连接到此字符串的结尾。等价于“+”
String str = "AbcdefghijklmN";
System.out.println(str.concat("abcdefghijklmN"));
/*输出结果:AbcdefghijklmNabcdefghijklmN*/
  • int compareTo(String anotherString):比较两个字符串的大小
String str = "Ac";
System.out.println(str.compareTo("Ab"));
/*输出结果:1*/String str = "Ab";
System.out.println(str.compareTo("Ab"));
/*输出结果:0*/String str = "Ab";
System.out.println(str.compareTo("Ad"));
/*输出结果:-2*/
  • String substring(int beginIndex):返回一个新的字符串,它是此字符串从deginIndex开始到最后一个字符结束的一个子字符串
String str = "abcdefghijklmN";
System.out.println(str.substring(2));
/*输出结果:cdefghijklmN*/
  • String substring(int beginIndex,int endIndex):返回一个新的字符串,它是此字符串的从begin开始,截取到endIndex(不包含)的一个子字符串
String str = "abcdefghijklmN";
System.out.println(str.substring(2,9));
/*输出结果:cdefghi
不包含str[9]
*/

常用方法2:

  • boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
String str = "abcdefghijklmN";
System.out.println(str.endsWith("lmN"));
/*输出结果:true*/
  • boolean startsWith(String prefix):测试此字符串是否以指定的前缀结束
String str = "abcdefghijklmN";
System.out.println(str.startsWith("abb"));
/*输出结果:false*/
  • boolean startsWith(String prefix,int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始
String str = "abcdefghijklmN";
System.out.println(str.startsWith("de",3));
/*输出结果:true*/
  • boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回true
String str = "abcdefghijklmN";
System.out.println(str.contains("hi"));
/*输出结果:true*/
  • int indexOf(String str):返回指定子字符串在此字符串中第一次出现的索引,从指定的索引开始
String str = "lllllabcdeabcdeabcsde";
System.out.println(str.indexOf("abcs"));
/*输出结果:15*/
  • int lastIndexOf(String str):返回指定字符串在此字符串中最右边出现处的索引
String str = "abcdeabcdeabcde";
System.out.println(str.lastIndexOf("abcde"));
/*输出结果:10*/

常用方法3:

  • String replace(char oldChar,char newChar):返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的
String str = "abcd abcd abcd csdn csdn adcc";
System.out.println(str.replace("abcd", "csdn"));
/*输出结果:csdn csdn csdn csdn csdn adcc*/
  • String replaceAll(String regex,String replacement):使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串

  • boolean matches(String regex):告知此字符串是否匹配给定的正则表达式

  • String[] split(String regex):根据正则表达式的匹配拆分此字符串

  • String[] split(String regex,int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中

public static void main(String[] args){String s = "Hello";s += " World";System.out.println(s);
}


如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。如何解决这个问题???可以通过Java提供的StringBuilder类来解决。

StringBuilder和StringBuffer

StringBuilder是一个可变的字符串类,可以把它看成一个容器,这里的可变是指StringBuilder对象中的内容是可变的,可以对字符串内容进行增删,它做字符串拼接的时候是不会创建一个新的对象的

String的内容是不可变的
StringBuilder内容是可变的,StringBuffer内容是可变的

StringBuffer常用的方法:

  • StringBuffer append(xxx):进行字符串拼接
StringBuffer bf = new StringBuffer("lll");
System.out.println(bf.append("sss"));
/*输出结果:lllsss*/
  • StringBuffer delete(int start,int end):删除指定位置的内容
StringBuffer bf = new StringBuffer("aaaasssscccc");
System.out.println(bf.delete(4, 8));
/*输出结果:aaaacccc
不包括bf[8]*/
  • StringBuffer replace(int start,int end,String str):把[start,end]位置替换为str
StringBuffer bf = new StringBuffer("aaaasssscccc");
System.out.println(bf.replace(4, 8, "bbbb"));
/*输出结果:aaaabbbbcccc*/StringBuffer bf = new StringBuffer("aaaasssscccc");
System.out.println(bf.replace(4, 8, "bb"));
/*输出结果:aaaabbcccc*/
  • StringBuffer insert(int offset,xxx):在指定位置插入xxx
  • StringBuffer reverse():把当前字符序列逆转

String字符串拼接、StringBuffer、StringBuilder三者效率测试

package string;public class StringDemo06 {public static void stringJoin() {long startTime = System.currentTimeMillis();String s = "";for(int i=0;i<10000;i++) {s = s + "Hello";s = s + "World";s = s + "Hello";}long endTime = System.currentTimeMillis();System.out.println("使用String进行字符串拼接用时(毫秒):"+(endTime - startTime));}public static void stringBufferJoin() {StringBuffer strBuffer = new StringBuffer("");long startTime = System.currentTimeMillis();for(int i=0;i<10000;i++) {strBuffer.append("Hello");strBuffer.append("World");strBuffer.append("Hello");}long endTime = System.currentTimeMillis();System.out.println("使用StringBuffer进行字符串拼接用时(毫秒):"+(endTime - startTime));}public static void stringBuilderJoin() {StringBuilder strBuilder = new StringBuilder();long startTime = System.currentTimeMillis();for(int i=0;i<10000;i++) {strBuilder.append("Hello");strBuilder.append("World");strBuilder.append("Hello");}long endTime = System.currentTimeMillis();System.out.println("使用StringBuilder进行字符串拼接用时(毫秒):"+(endTime - startTime));}public static void main(String[] args) {//String拼接字符串用时stringJoin();//StringBuffer拼接字符串用时stringBufferJoin();//StringBuilder拼接字符串用时stringBuilderJoin();}
}

运行结果:


总结:StringBuffer与StringBuilder的区别

  1. StringBuffer:可变字符序列、效率低、线程安全、多线程操作字符串缓冲区下操作大量数据用StringBuffer
  2. StringBuilder:可变字符序列、效率低、线程不安全、单线程操作字符串缓冲区下操作大量数据用StringBuilder

Java——String类的方法相关推荐

  1. java string类的方法_Java-String类的常用方法总结

    一.String类 String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创 ...

  2. Java String 类的方法

    1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = "abc"; ...

  3. 【转】java string类的方法及说明

    http://suyu8776.javaeye.com/blog/192629 String:字符串类型 1.构造函数. String() :构造一个空字符串对象. String(byte[] byt ...

  4. Educoder–Java String类 length()方法与compareTo()方法的使用 - 花名册 substring()方法与indexOf()方法的使用 - 姓名查找编程要求

    文章目录 第1关:length()方法与compareTo()方法的使用 - 花名册 答案 第2关:substring()方法与indexOf()方法的使用 - 姓名查找编程要求 答案 第1关:len ...

  5. java string.substring 参数,Java,String类中的subString()方法,stringsubstring

    Java,String类中的subString()方法,stringsubstring public class TestStringSubString { // main函数 public stat ...

  6. Java String类的split方法简介

    Java String类的split方法简介 String的split()方法用于按传入的字符或字符串对String进行拆分,返回拆分之后的数组. 1.一般用法 用一般的字符,例如 @ 或 , 等符号 ...

  7. java --String类解决面试问题

    2019独角兽企业重金招聘Python工程师标准>>> 1.概述 字符串对象是一种特殊的对象.String类是一个不可变的类..也就说,String对象一旦创建就不允许修改 Stri ...

  8. java string类api_JAVA中String类的常用方法API

    @[toc] 前言 String 类是我们日常经常使用的Java类,以下是对该类的信息汇总,类的关系图如下 String类关系图 创建: String s="hello!";//使 ...

  9. java日历类add方法_Java日历computeTime()方法及示例

    java日历类add方法 日历类computeTime()方法 (Calendar Class computeTime() method) computeTime() method is availa ...

最新文章

  1. Mac下mysql服务器安装
  2. 智能车竞赛车模轮子与电机齿轮的参数
  3. python官网下载步骤视频-Python 实现视频下载
  4. 干货|吴恩达Coursera课程教你学习神经网络二!
  5. CF388D-Fox and Perfect Sets【dp,线性基】
  6. Kafka(三)-- Kafka主要参数
  7. Applese 的 QQ 群
  8. OpenGL基础42:实例化
  9. !HDU 1078 FatMouse and Cheese-dp-(记忆化搜索)
  10. Gzip, Bzip2,Xz压缩
  11. VM 网络设置 for xp3
  12. 解读:【小爱同学】智能问答系统
  13. 2011美剧季终/剧终时间表。
  14. 傅里叶级数构建信号要求频率有正有负_电子科大学长说—信号与系统考研例题详解重点习题...
  15. azkaban跑项目的时候,一直running,
  16. 浅析MySQL死锁检测
  17. 中兴OLT告警日志服务器,中兴olt_中兴olt c300用户手册_中兴olt掉线(4)
  18. IE主页改不了怎么办
  19. 橙汁的面试经验汇总(百度、平安壹钱包、诺瓦、快手、bigo、海信、奇安信、小米、迈瑞医疗、顺丰、网易互娱、多益游戏、京东、穆迪)
  20. Hive 基础知识(二)

热门文章

  1. LeetCode 748. 最短完整词
  2. LeetCode 1026. 节点与其祖先之间的最大差值(二叉树DFS)
  3. LeetCode 581. 最短无序连续子数组(排序单调栈)
  4. LeetCode 212. 单词搜索 II(Trie树+DFS)
  5. 朴素贝叶斯算法--过滤垃圾短信
  6. html 获取鼠标在canvas上的坐标,html5-canvas 检测鼠标在画布上的位置
  7. c语言(int)x 100,【单选题】下列语句执行后,变量a、c的值分别是( ) int x=182; int a,c;c=x/100;a=x%10;...
  8. C语言数组相似度比对,某课程设计---文件相似度判断
  9. 非线性回归 - 案例按步骤详解 -(SPSS建模)
  10. 阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则