Java中的String
来源:互联网 发布:淘宝whoo小样是真的吗 编辑:程序博客网 时间:2024/06/05 20:47
一、:String的性质
1.1.String的创建
String类常见的构造方法有:
1)String(String original):创建一个String对象为original的拷贝;
2)String(char[] value):用一个字符数组创建一个String对象;
3)String(char[] value,int offset,int count):用一个字符数组从offset项开始的count个字符序列创建一个String对象;
1.2.字符串池的属性
在字符串中存在一个非常特殊的地方,那就是字符串池。每当我们创建一个字符串对象时,首先就会检查字符串池中是否存在面值相等的字符串,如果有,则不再创建,直接放回字符串池中对该对象的引用,若没有则创建然后放入到字符串池中并且返回新建对象的引用。这个机制是非常有用的,因为可以提高效率,减少了内存空间的占用。1.3.String创建之后就不能修改
String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。 String 对象创建后则不能
被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如果需要对字符串做很多修改,
那么应该选择使用StringBuffer类或StringBuilder 类。
二、:String的方法
2.1.字符串的比较
equals() ------判断内容是否相同。
compareTo() ------判断字符串的大小关系。
compareToIgnoreCase(String int) ------在比较时忽略字母大小写。
== ------判断内容与地址是否相同。
equalsIgnoreCase() ------忽略大小写的情况下判断内容是否相同。
reagionMatches() ------对字符串中的部分内容是否相同进行比较
2.2.字符串的连接
public class StringTest { /** 使用+、concat()、append()方法循环10W次 */ public static void main(String[] args) { //+ long start_01 = System.currentTimeMillis(); String a = "a"; for(int i = 0 ; i < 100000 ; i++){ a += "b"; } long end_01 = System.currentTimeMillis(); System.out.println(" + 所消耗的时间:" + (end_01 - start_01) + "毫米"); //concat() long start_02 = System.currentTimeMillis(); String c = "c"; for(int i = 0 ; i < 100000 ; i++){ c = c.concat("d"); } long end_02 = System.currentTimeMillis(); System.out.println("concat所消耗的时间:" + (end_02 - start_02) + "毫米"); //append long start_03 = System.currentTimeMillis(); StringBuffer e = new StringBuffer("e"); for(int i = 0 ; i < 100000 ; i++){ e.append("d"); } long end_03 = System.currentTimeMillis(); System.out.println("append所消耗的时间:" + (end_03 - start_03) + "毫米"); } } ------------ Output: + 所消耗的时间:19080毫米 concat所消耗的时间:9089毫米 append所消耗的时间:10毫米通过以上可以看出append的效率是最高的,为什么最高呢,这要看源代码了,但是我现在的水平太低了,根据大神的分析因为append没有创建新的对象所以比较快,其他的两个都是通过创建新对象的方式。
2.3.字符串的查找
charAt(int index) ------返回指定索引index位置上的字符,索引范围从0开始。
indexOf(String str)------从字符串开始检索str,并返回第一次出现的位置,未出现返回-1。
indexOf(String str,int fromIndex);------从字符串的第fromIndex个字符开始检索str。
lastIndexOf(String str)------查找最后一次出现的位置。
lastIndexOf(String str,int fromIndex)----从字符串的第fromIndex个字符查找最后一次出现的位置。
starWith(String prefix,int toffset)-----测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
starWith(String prefix)------测试此字符串是否以指定的前缀开始。
endsWith(String suffix)------测试此字符串是否以指定的后缀结束。
<span style="font-size:18px;">package TwoWeek;public class StringManager {public static void main(String args[]){String str1 = "Hello World";System.out.println(str1.charAt(1)); //eSystem.out.println(str1.indexOf("e")); //1System.out.println(str1.indexOf("o", 2));System.out.println(str1.lastIndexOf("o"));//7System.out.println(str1.startsWith("Hello"));//true}}</span>
三、:String、StringBuffer和StringBuilder
3.1.StringBuffer
StringBuffer和String一样都是用来存储字符串的,只不过由于他们内部的实现方式不同,导致他们所使用的范围不同,对于StringBuffer而言,他在处理字符串时,若是对其进行修改操作,它并不会产生一个新的字符串对象,所以说在内存使用方面它是优于String的。3.2.StringBuilder
3.3.小总结
1、String:在字符串不经常变化的场景中可以使用String类,如:常量的声明、少量的变量运算等。
2、StringBuffer:在频繁进行字符串的运算(拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装等。
3、StringBuilder:在频繁进行字符串的运算(拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,如SQL语句的拼装、JSON封装等(貌似这两个我也是使用|StringBuffer)。
- Java中的String数据类型
- Java中的String数据类型
- java中的String池
- java 中的比较String
- JAVA中的String函数
- java中的String
- java 中的String
- java中的String
- 揭秘Java中的String
- JAVA中的String剖析
- Java中的String
- Java中的String
- Java中的String数据类型
- Java中的String
- Java中的String
- java中的String
- java中的String类型
- java中的String... args
- 社团划分——有向图的Label Propagation算法
- 执行mvn 报错 source-7或source 1.5 中不支持 diamond运算符
- HDU 5701 中位数计数 (百度之星初赛)
- androidstudio中将library生成为arr文件
- 67. Add Binary
- Java中的String
- 欢迎使用CSDN-markdown编辑器
- C/C++头文件一览
- 【poj 2976】 Dropping tests 二分(分数优化)
- 70. Climbing Stairs
- eclipse 断点进不去 显示 source not found
- LambdaMART的思想
- [PKU 3046] Ant Counting (计数DP+差分加数)
- Java中有关Null的9件事