[ Java学习基础 ] String字符串的基本操作
2018-06-18 01:57:21来源:未知 阅读 ()
字符串的拼接
String字符串虽然是不可变的字符串,但也同样可以进行拼接,只是会产生一个新的对象。String字符串拼接的时候可以使用“+”运算符或String的concat(String str)方法。其中“+”运算符的优势是可以连接任何类型的数据拼接成为字符串,而concat方法只能拼接String类型的字符串。
示例如下:
1 String s1 = "Hello"; 2 // 使用+运算符连接 3 String s2 = s1 + " "; 4 String s3 = s2 + "World"; 5 System.out.println(s3); 6 7 String s4 = "Hello"; 8 // 使用+运算符连接,支持+=赋值运算符 9 s4 += " "; 10 s4 += "World"; 11 System.out.println(s4); 12 13 String s5 = "Hello"; 14 // 使用concat方法连接 15 s5 = s5.concat(" ").concat("World"); 16 System.out.println(s5); 17 18 int age = 18; 19 String s6= "I'm " + age + "years old."; 20 System.out.println(s6); 21 22 char score = 'A'; 23 String s7= "His grade is" + score; 24 System.out.println(s7); 25 26 java.util.Date now = new java.util.Date(); 27 //对象拼接自动调用toString()方法 28 String s8= "Date:" + now; 29 System.out.println(s8);
输出结果:
Hello World Hello World Hello World I'm 18 years old. His grade is A Date:Thu May 25 16:25:40 CST 2017
上述代码第3、4行使用+运算符进行字符串的拼接,其中产生了三个对象。代码第9、10行是使用+=赋值运算符,本质上也是+运算符进行拼接。
代码第15行采用concat方法进行拼接,该方法的完整定义如下:
public String concat(String str)
它的参数和返回值都是String,因此代码第15行可以连续调用该方法进行多个字符串的拼接。
代码第19和第23行是使用+运算符,将字符串与其他类型数据进行的拼接。代码第28行是与对象可以进行拼接,Java中所有对象都有一个toString()方法,该方法可以将对象转换为字符串,拼接过程会调用该对象的toString()方法,将该对象转换为字符串后再进行拼接。代码第26行的java.util.Date类是Java SE提供的日期类。
字符串查找
从给定的字符串中查找字符或字符串是常见的操作。String类中提供了indexOf和lastIndexOf方法供使用,方法返回值是所查找的字符或字符串所在的位置,若未找到,则会返回-1。以下是其它常用的重载方法:
-
int indexOf(int ch):从前往后搜索字符ch,返回第一次找到字符ch所在处的索引。
-
int indexOf(int ch, int fromIndex):从指定的索引开始从前往后搜索字符ch,返回第一次找到字符ch所在处的索引。
-
int indexOf(String str):从前往后搜索字符串str,返回第一次找到字符串所在处的索引。
-
int indexOf(String str, int fromIndex):从指定的索引开始从前往后搜索字符串str,返回第一次找到字符串所在处的索引。
-
int lastIndexOf(int ch):从后往前搜索字符ch,返回第一次找到字符ch所在处的索引。
-
int lastIndexOf(int ch, int fromIndex):从指定的索引开始从后往前搜索字符ch,返回第一次找到字符ch所在处的索引。
-
int lastIndexOf(String str):从后往前搜索字符串str,返回第一次找到字符串所在处的索引。
-
int lastIndexOf(String str, int fromIndex):从指定的索引开始从后往前搜索字符串str,返回第一次找到字符串所在处的索引。
示例如下:
String sourceStr = "There is a string accessing example."; //获得字符串长度 int len = sourceStr.length(); //获得索引位置16的字符 char ch = sourceStr.charAt(16); //查找字符和子字符串 int firstChar1 = sourceStr.indexOf('r'); int lastChar1 = sourceStr.lastIndexOf('r'); int firstStr1 = sourceStr.indexOf("ing"); int lastStr1 = sourceStr.lastIndexOf("ing"); int firstChar2 = sourceStr.indexOf('e', 15); int lastChar2 = sourceStr.lastIndexOf('e', 15); int firstStr2 = sourceStr.indexOf("ing", 5); int lastStr2 = sourceStr.lastIndexOf("ing", 5); System.out.println("原始字符串:" + sourceStr); System.out.println("字符串长度:" + len); System.out.println("索引16的字符:" + ch); System.out.println("从前往后搜索r字符,第一次找到它所在索引:" + firstChar1); System.out.println("从后往前搜索r字符,第一次找到它所在索引:" + lastChar1); System.out.println("从前往后搜索ing字符串,第一次找到它所在索引:" + firstStr1); System.out.println("从后往前搜索ing字符串,第一次找到它所在索引:" + lastStr1); System.out.println("从索引为15位置开始,从前往后搜索e字符,第一次找到它所在索引:" + firstChar2); System.out.println("从索引为15位置开始,从后往前搜索e字符,第一次找到它所在索引:" + lastChar2); System.out.println("从索引为5位置开始,从前往后搜索ing字符串,第一次找到它所在索引:" + firstStr2); System.out.println("从索引为5位置开始,从后往前搜索ing字符串,第一次找到它所在索引:" + lastStr2);
输出结果:
原始字符串:There is a string accessing example. 字符串长度:36 索引16的字符:g 从前往后搜索r字符,第一次找到它所在索引:3 从后往前搜索r字符,第一次找到它所在索引:13 从前往后搜索ing字符串,第一次找到它所在索引:14 从后往前搜索ing字符串,第一次找到它所在索引:24 从索引为15位置开始,从前往后搜索e字符,第一次找到它所在索引:21 从索引为15位置开始,从后往前搜索e字符,第一次找到它所在索引:4 从索引为5位置开始,从前往后搜索ing字符串,第一次找到它所在索引:14 从索引为5位置开始,从后往前搜索ing字符串,第一次找到它所在索引:-1
soucreStr字符串索引如下:
字符串比较
字符串也是常见的操作,包括比较相等、比较大小、比较前缀和后缀等。
-
比较相等
String提供的比较字符串相等的方法:
-
boolean equals(Object anObject):比较两个字符串中内容是否相等。
-
boolean equalsIgnoreCase(String anotherString):类似equals方法,只是忽略大小写。
-
-
比较大小
有时不仅需要知道是否相等,还要知道大小,String提供的比较大小的方法:
-
int compareTo(String anotherString):按字典顺序比较两个字符串。如果参数字符串等于此字符串,则返回值 0;如果此字符串小于字符串参数,则返回一个小于 0 的值;如果此字符串大于字符串参数,则返回一个大于 0 的值。
-
int compareToIgnoreCase(String str):类似compareTo,只是忽略大小写。
-
-
比较前缀和后缀
-
boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束。
-
boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
-
示例如下:
1 String s1 = new String("Hello"); 2 String s2 = new String("Hello"); 3 // 比较字符串是否是相同的引用 4 System.out.println("s1 == s2 : " + (s1 == s2)); 5 // 比较字符串内容是否相等 6 System.out.println("s1.equals(s2) : " + (s1.equals(s2))); 7 8 String s3 = "HELlo"; 9 // 忽略大小写比较字符串内容是否相等 10 System.out.println("s1.equalsIgnoreCase(s3) : " + (s1.equalsIgnoreCase(s3))); 11 12 // 比较大小 13 String s4 = "java"; 14 String s5 = "Swift"; 15 // 比较字符串大小 s4 > s5 16 System.out.println("s4.compareTo(s5) : " + (s4.compareTo(s5))); 17 // 忽略大小写比较字符串大小 s4 < s5 18 System.out.println("s4.compareToIgnoreCase(s5) : " + (s4.compareToIgnoreCase(s5))); 19 20 // 判断文件夹中文件名 21 String[] docFolder = { "java.docx", " JavaBean.docx", "Objecitve-C.xlsx", "Swift.docx " }; 22 int wordDocCount = 0; 23 // 查找文件夹中Word文档个数 24 for (String doc : docFolder) { 25 // 去的前后空格 26 doc = doc.trim(); 27 // 比较后缀是否有.docx字符串 28 if (doc.endsWith(".docx")) { 29 wordDocCount++; 30 } 31 } 32 System.out.println("文件夹中Word文档个数是: " + wordDocCount); 33 34 int javaDocCount = 0; 35 // 查找文件夹中Java相关文档个数 36 for (String doc : docFolder) { 37 // 去的前后空格 38 doc = doc.trim(); 39 // 全部字符转成小写 40 doc = doc.toLowerCase(); 41 // 比较前缀是否有java字符串 42 if (doc.startsWith("java")) { 43 javaDocCount++; 44 } 45 } 46 System.out.println("文件夹中Java相关文档个数是:" + javaDocCount);
输出结果:
s1 == s2 : false s1.equals(s2) : true s1.equalsIgnoreCase(s3) : true s4.compareTo(s5) : 23 s4.compareToIgnoreCase(s5) : -9 文件夹中Word文档个数是: 3 文件夹中Java相关文档个数是:2
上述代码第16行的compareTo方法按字典顺序比较两个字符串,s4.compareTo(s5)表达式返回结果大于0,说明s4大于s5,字符在字典中顺序事实上就它的Unicode编码,先比较两个字符串的第一个字符j和S,j的Unicode编码是106,S的Unicode编码是83,所以可以得出结论s4 > s5。
代码第18行是忽略大小写时,要么全部当成小写字母进行比较,要么当前成全部大写字母进行比较,无论哪种比较结果都是一样的s4 < s5。
代码第26行trim()方法可以去除字符串前后空白。代码第40行toLowerCase()方法可以将此字符串全部转化为小写字符串,类似的方法还有toLowerCase()方法,可将字符串全部转化为小写字符串。
字符串截取
Java中主要的两个常用字符串截取方法如下:
-
String substring(int beginIndex):从指定索引beginIndex开始截取一直到字符串结束的子字符串。
-
String substring(int beginIndex, int endIndex):从指定索引beginIndex开始截取直到索引endIndex - 1处的字符,注意包括索引为beginIndex处的字符,但不包括索引为endIndex处的字符。
示例如下:
1 String sourceStr = "There is a string accessing example."; 2 // 截取example.子字符串 3 String subStr1 = sourceStr.substring(28); 4 // 截取string子字符串 5 String subStr2 = sourceStr.substring(11, 17); 6 System.out.printf("subStr1 = %s%n", subStr1); 7 System.out.printf("subStr2 = %s%n",subStr2); 8 9 // 使用split方法分割字符串 10 System.out.println("-----使用split方法-----"); 11 String[] array = sourceStr.split(" "); 12 for (String str : array) { 13 System.out.println(str); 14 }
输出结果:
subStr1 = example. subStr2 = string -----使用split方法----- There is a string accessing example.
上述sourceStr字符串索引如下图所示。代码第3行是截取example.子字符串,由索引图可见e字符索引是28, 从索引28字符截取直到sourceStr结尾。代码第5行是截取string子字符串,由图可见,s字符索引是11,g字符索引是16,endIndex参数应该17。
另外,String还提供了字符串分割方法,见代码第11行split(" ")方法,参数是分割字符串,返回值String[]。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:JVM远程调试功能
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash