String类
---------- android培训、java培训、期待与您交流!----------
1、String类
类位于java.lang.String包中,适合描述与字符串有关是事物,字符串有以下两种定义方式:
(1) String s1 = "abc"; (2) String s2 = new String("abc");
以上两种定义方式的区别:s1代表一个对象,s2有两个对象
字符串最大的特性:一旦被初始化值,其值就不会在发生改变。
注意:String类中覆写了Object类中的equals方法,不再是比较地址值,而是比较具体的内容。
2、字符串的常用操作
常用的操作有:
(1) 获取
获取字符串中字符的个数,也就是字符串的长度
获取字符串中字符的个数,也就是字符串的长度
int length();
根据位置获取某个字符
char charAt(int index);
根据字符获取该字符在字符串中第一次出现的位置
int indexOf(int ch);其中的ch接收ASCII码
从指定位置获取字符在字符串中出现的位置
int indexOf(int ch, int fromIndex);
返回的是str子串在字符串中第一次出现的位置
int indexOf(String str);
从指定位置获取子串str在字符串中出现的位置
int indexOf(String str, int fromIndex);
int indexOf(String str, int fromIndex);
反向索引一个字符出现的位置
int lastIndexOf(int ch);
int lastIndexOf(int ch);
(2) 判断
字符串中是否包含某一个子串。
boolean contains(String str);
字符串中是否有内容。
boolean isEmpty();
字符串是否以指定内容开头。
boolean startsWith(Sting str);
字符串是否以指定内容结尾。
boolean endsWith(String str);
判断字符串内容是否相同,覆写了Object类中的equals方法
boolean equals(String str);
判断内容是否相同,并忽略大小写
boolean equalsIgnoreCase();
boolean contains(String str);
字符串中是否有内容。
boolean isEmpty();
字符串是否以指定内容开头。
boolean startsWith(Sting str);
字符串是否以指定内容结尾。
boolean endsWith(String str);
判断字符串内容是否相同,覆写了Object类中的equals方法
boolean equals(String str);
判断内容是否相同,并忽略大小写
boolean equalsIgnoreCase();
(3) 转换
将字符数组转成字符串
构造函数:String(char[] ch);
String(char[] ch, int offset, int count);将字符数组的一部分转成字符串
静态方法:static String copyValueOf(char[] ch);
static String copyValueOf(char[] ch, int offset, int count);
static String valueOf(char[] ch);
将字符串转成字符数组
char[] toCharArray();
将字节数组转成字符串
构造函数:String(char[] ch);
String(char[] ch, int offset, int count);
将字符串转成字节数组
byte[] getBytes();
将基本数据类型转成字符串。
static String valueOf(int i);
static String valueOf(double d);等等
特殊:字符串和字节数组在转换过程中是可以指定编码表的
构造函数:String(char[] ch);
String(char[] ch, int offset, int count);将字符数组的一部分转成字符串
静态方法:static String copyValueOf(char[] ch);
static String copyValueOf(char[] ch, int offset, int count);
static String valueOf(char[] ch);
将字符串转成字符数组
char[] toCharArray();
将字节数组转成字符串
构造函数:String(char[] ch);
String(char[] ch, int offset, int count);
将字符串转成字节数组
byte[] getBytes();
将基本数据类型转成字符串。
static String valueOf(int i);
static String valueOf(double d);等等
特殊:字符串和字节数组在转换过程中是可以指定编码表的
(4) 替换
String replace(char oldChar, char newChar)
String replace(string oldStr, String newStr)
注意:如果要替换的内容不存在,那么返回的还是原来的字符串
(5) 切割
String[] split(regex);
(6) 子串,获取字符串中的一部分
String substring(int beginIndex);从指定位置开始切割,一直到结尾
String substring(int beginIndex, int endIndex);从指定位置开始切割,到结束位置,包含头,不包含尾
注意:1、substring(int beginIndex, int endIndex);相当于substring(int beginIndex, str.length());
2、如果传入的索引值大于字符串长度,将引发字符串角标越界异常
(7) 转换,去除空格,比较
将字符串转成大写或小写。
String toUpperCase()
String toLowerCase()
将字符串两端的多个空格去除。
String trim();只能去除字符串的两端空格,无法去除字符串内的空格
对两个字符串进行自然顺序的比较。
int compareTo(String str)
如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;
如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。
StringBuffer是字符串缓冲区,可看做是一个容器,并且其长度是可变的,StringBuffer可以操作多种数据类型,最终会通过toString()方法变成字符串。
常用的操作有:
(1) 存储
StringBuffer append(数据);将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(int index, 数据);可以将任意类型数据插入到指定index位置。
注意: StringBuffer s1 = new String StringBuffer();
StringBuffer s2 = s1.append(34);
以上代码中的s1与s2是同一个对象。
(2) 删除
StringBuffer delete(int start, int end);删除缓冲区中的数据,包含start但不包含end
StringBuffer deleteCharAt(int index);删除指定位置的字符
清空StringBuffer:s.delete(0, s.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(int start, intend, String str);根据索引将缓冲区的内容替换成str
void setCharAt(int index, char ch);根据索引将缓冲区中的某个字符换成指定字符
(5)反转
String replace(char oldChar, char newChar)
String replace(string oldStr, String newStr)
注意:如果要替换的内容不存在,那么返回的还是原来的字符串
(5) 切割
String[] split(regex);
(6) 子串,获取字符串中的一部分
String substring(int beginIndex);从指定位置开始切割,一直到结尾
String substring(int beginIndex, int endIndex);从指定位置开始切割,到结束位置,包含头,不包含尾
注意:1、substring(int beginIndex, int endIndex);相当于substring(int beginIndex, str.length());
2、如果传入的索引值大于字符串长度,将引发字符串角标越界异常
(7) 转换,去除空格,比较
将字符串转成大写或小写。
String toUpperCase()
String toLowerCase()
将字符串两端的多个空格去除。
String trim();只能去除字符串的两端空格,无法去除字符串内的空格
对两个字符串进行自然顺序的比较。
int compareTo(String str)
如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;
如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。
3、StringBuffer类
常用的操作有:
(1) 存储
StringBuffer append(数据);将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(int index, 数据);可以将任意类型数据插入到指定index位置。
注意: StringBuffer s1 = new String StringBuffer();
StringBuffer s2 = s1.append(34);
以上代码中的s1与s2是同一个对象。
(2) 删除
StringBuffer delete(int start, int end);删除缓冲区中的数据,包含start但不包含end
StringBuffer deleteCharAt(int index);删除指定位置的字符
清空StringBuffer:s.delete(0, s.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(int start, intend, String str);根据索引将缓冲区的内容替换成str
void setCharAt(int index, char ch);根据索引将缓冲区中的某个字符换成指定字符
(5)反转
StringBuffer reverse();将字符串缓冲区进行反转
4、StringBuilder类
JDK1.5版本之后出现了StringBuilder类,与StringBuffer相比,StringBuilder是线程不同步的,将该类的实例用于多个线程是不安全的,如果需要这样的同步,则建议使用StringBuffer。
StringBuilder的出现是为了提高效率,在不需要保证线程同步安全性的情况下,,尽量使用StringBuilder。
5、基本数据类型包装类
下表为8种基本数据类型及相应的包装类
(1) 基本数据类型转为字符串类型
基本数据类型+“”;
基本数据类型.toString(基本数据类型值);
(2) 字符串类型 转为 基本数据类型转为
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt("34");
double d = Double.parseDouble("12.34");
boolean b = Boolean.parseBoolean("true");
(3) 进制转换
toBinaryString();十进制转成二进制
toHexString();十进制转成十六进制
toOctalString();十进制转成八进制
parseInt(String, radix);其它进制转十进制
在JDK1.5之后出现了包装类的新特性,即:
自动装箱操作:
将Integer x = new Integer(4);简化为:Integer x = 4; 自动拆箱操作:
x = x + 2;其中x为Integer类型,自动将其变为int类型与2进行运算,再将运算结果自动装箱为Integer类型
基本数据类型+“”;
基本数据类型.toString(基本数据类型值);
(2) 字符串类型 转为 基本数据类型转为
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt("34");
double d = Double.parseDouble("12.34");
boolean b = Boolean.parseBoolean("true");
(3) 进制转换
toBinaryString();十进制转成二进制
toHexString();十进制转成十六进制
toOctalString();十进制转成八进制
parseInt(String, radix);其它进制转十进制
在JDK1.5之后出现了包装类的新特性,即:
自动装箱操作:
将Integer x = new Integer(4);简化为:Integer x = 4; 自动拆箱操作:
x = x + 2;其中x为Integer类型,自动将其变为int类型与2进行运算,再将运算结果自动装箱为Integer类型
---------- Windows Phone 7开发、.Net培训、期待与您交流! ----------