---------- android培训、java培训、期待与您交流! ----------
String
1.特性
String s1 = “abc”;
s1是一个类类型变量,”abc”是一个对象
字符串最大的特点是:一旦被初始化就不会被改变==>存在于常量池中
结果:
上述代码中的s.replace产生的是一个新字符串:现在内存中存在两个字符串
如果替换的字符不存在,则返回的原串
s1= “kk”
打印的结果肯定是kk,因为这不是“abc”发生改变,而是S1指向了新的地址”kk”
==和”equals”的区别
==
**可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。
**可以用于比较引用数据类型,比较的是对象的地址值是否相等。
equals
equals只能用于比较引用数据类型的。
**Object提供的equals是用于比较对象地址值是否相同。
**自定义类中,如果重写了equals方法,那么就是按照你自己的需求来比较的。
String s1 = “abc”;
String s2 = new String(“abc”);
s1和s2的区别
s1创建了1个对象("abc”)
s2创建了2个对象(new和"abc”)
2.方法
1.获取
1.1 字符串中的包含的字符数,也就是字符串的长度。
int length():获取长度。
1.2 根据位置获取位置上某个字符。
char charAt(int index):
1.3 根据字符获取该字符在字符串中位置。
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。
//从末尾开始,用法同上
int lastIndexOf(int ch):
int lastIndexOf(int ch, int fromIndex)
lastIndexOf(String str)
lastIndexOf(String str, int fromIndex)
2.判断
2.1 字符串中是否包含某一个子串。
boolean contains(str):
特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。
所以,也可以用于对指定判断是否包含。
if(str.indexOf("aa")!=-1)
而且该方法即可以判断,有可以获取出现的位置。
2.2 字符中是否有内容。
boolean isEmpty():原理就是判断长度是否为0.
“”是一个对象 null是指向空
2.3 字符串是否是以指定内容开头。
boolean startsWith(str);
2.4 字符串是否是以指定内容结尾。
boolean endsWith(str);
2.5 判断字符串内容是否相同。复写了Object类中的equals方法。
boolean equals(str);
2.6 判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase();
3.转换
3.1 将字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset, int count)
static String valueOf(char[]):
3.2 将字符串转成字符数组。
char[] toCharArray():
3.3 将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.4 将字符串转成字节数组。
byte[] getBytes():
3.5 将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
//3+"";//String.valueOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4.替换
String replace(oldchar,newchar);
5.切割
String[] split(regex);
6.子串==>获取字符串中的一部分。
String substring(begin);
String substring(begin,end);
7.转换,去除空格,比较
7.1 将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
7.2 将字符串两端的多个空格去除。
String trim();
7.3 对两个字符串进行自然顺序的比较。
int compareTo(string);
StringBuffer
1.字符串的组成原理就是通过该类实现的。
2.StringBuffer可以对字符串内容进行增删。
3.StringBuffer是一个容器。
4.很多方法与String相同。
5.StringBuffer是可变长度
==>StringBuffer与String最大的区别就是存储在其中的字符串是可以删除的,String则是一旦生成就一直存在
可以改变其中的值(与上面的String比较)sb和sb1指向的是同一对象
StringBuffer是字符串缓冲区。是一个容器。
特点:
1,长度是可变化的。==>数组也是容器,但是长度是固定的
2,可以字节操作多个数据类型。==>数组一次只能操作一个数据类型
3,最终会通过toString方法变成字符串。
StringBuffer特有的方法
1,存储。
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
2,删除。
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index):删除指定位置的字符。
清空StringBuffer的缓存区的方法:sb.delete(0,sb.length())
3,获取。
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start, int end)
4,修改。
StringBuffer replace(start,end,string);
void setCharAt(int index, char ch) ;
5,反转。
StringBuffer reverse();
6,
将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
JDK1.5 版本之后出现了StringBuilder.
StringBuffer是线程同步。
StringBuilder是线程不同步。
以后开发,建议使用StringBuilder
java选择升级考虑的三个因素:
1,提高效率。
2,简化书写。
3,提高安全性。
---------- android培训、java培训、期待与您交流! ----------
详情请查看:http://edu.csdn.net/heima/