String字符补充
来源:互联网 发布:微信 for ubuntu 编辑:程序博客网 时间:2024/05/21 09:32
一、String字符串补充
对于String:获取(length()、chatAt()、indexOf()-有三种、lastdexOf())、判断(contains、isEmpty、 startWith()、endWith()、equals()、 equalsIgnore())、替换(replace)、转换(trim、toUpperCase、toLowerCase、valueOf()、tocharArray)、子串(获取一部分 substring)、切割(split())
1、int compareto(String anotherString)
相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。
Eg:
public static void main(String[] args) {
String s1 = new String("abcdefghijklmn");
String s2 = new String("abcdefghij");
String s3 = new String("abcdefghijalmn");
//返回 s2, 和s3的长度差
System.out.println("s1.compareto(s2):" + s1.compareTo(s2));
//返回“k”和“a”的差
System.out.println("s1.compareto(s3):" + s1.compareTo(s3));
}
2、indexOf是第一个与其匹配的字符、lastdexOf是最后一个与其匹配的字符,这里就强调一下。总是混!
二、String, StringBuffer, StringBuilder
1. String 类
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。
String a = "a"; //假设a指向地址0x0001
a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。
因此String的操作都是改变赋值地址而不是改变值操作。
2. StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。
3.StringBuffer
StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。
4.线程安全
StringBuffer 线程安全
StringBuilder 线程不安全
5.速度
一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。
6.总结
(1).如果要操作少量的数据用 = String
(2).单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
(3).多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
- String字符补充
- string 补充
- NEFU 1210 补充字符
- String 基本操作补充
- String类补充
- 【个人】string知识点补充
- java随机字符补充版
- IO流--字符流(补充)
- Java的String char()[待补充]
- String类常用方法(补充)
- 替换String中的字符
- string 中英文字符
- C++ string 分割字符
- String字符编码转换
- string中英文字符
- string.Format() 字符格式化
- 去除String首尾字符
- java_深入String 字符
- AbstractRoutingDataSource动态切换数据源
- 某中国500强企业BI系统成功应用案例
- live555安装配置
- 程序运行提示msvcp100d.dll和msvcp100r.dll缺少的解决方案 http://blog.csdn.net/ztz0223/article/details/8886247
- 移动互联网未来发展趋势
- String字符补充
- memset+strcpy+strncpy的函数详解以及字符数组输出的特殊情况
- intent.putExtra()方法参数
- 安卓菜单的使用系列1:使用java代码显示菜单
- jquery layer弹窗弹层插件 小巧强大
- 设置网格UICollectionView的单元格间距
- 面向对象题
- learn python the hard way(笨办法学python) 练习46
- leetcode--Happy Number