String类
java.lang.StringString str = "abc";//一个对象
String str1 = new String("abc");//两个对象
String str2 = "abc";
str == str2;// true;
str == str1;// false;
常见操作:
1.获取1.1字符串中包含的字符数,也就是字符串的长度
int lenght();// 数组中也有长度 .length;此为属性
1.2根据位置获取位置上某个字符。
char charAt(int index);
1.3根据字符获取该字符在字符串中的位置
int indexOf(int ch);//返回的是ch在字符串中第一次出现的位置 ch为字符
int indexOf(int ch,int fromIndex);// 从fromIndex位置开始,获取ch出现的位置。如果没有找到返回-1
int indexOf(String str);//返回的是str在字符串中第一次出现的位置
int indexOf(String str,int fromIndex);// 从fromIndex位置开始,获取str出现的位置。如果没有找到返回-1
int lastindexOf(int ch);// 返回ch在字符串中最后一个出现的位置。
2.判断
2.1字符串中是否包含一个子串。
boolean contains(CharSequence cs);//CharSequence是String跟StringBuffer、StringBuilder的接口
特殊之处:indexOf(str);可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在。
所以,也可以用于对指定判断是否包含。
if(str.indexOf("aa")!=-1)而且该方法既可以判断是否存在,又可以返回出现的位置。
2.2字符串中是否有内容。
boolean isEmpty();// 1.6JDK:即判断length()是否为0||||""--->对象null为空
2.3字符串是否以指定内容开头。
boolean startWith(str);
2.4字符串是否以指定内容结尾。
boolean endWith(str);
2.5判断字符串的内容是否相同,复写了Object类中的equals方法。
boolean equals(str);
2.6判断内容是否相同,并忽略大小写。
boolean equalsIgnorCase();
3.转换。
3.1将字符数组转成字符串。
构造函数: String(char[] value);
String(char[],offset,count);将字符数组中的一部分转成字符串。
静态方法:static String copyValueOf(char[]);
static String copyValueOf(char[] date,int index,int count);
static String valueOf(char[]);--->还可以将基本数据类型转换成String类型
3.2将字符串转成字符数组。
char[] toCharArray();
3.3将字节数组转成字符串。
String(byte[] value);
String(byte[],offset,count);将字节数组中的一部分转成字符串。
3.4将字符串转成字节数组。
byte[] getBytes();
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4.替换
String replace(oldchar,newc har);//如果要替换的字符不存在,则返回的还是原串
5.切割
String[] split(regex);
6.子串,获取字符串中的一部分。
String substring(int begin);// 从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常。
String substring(int begin,int end);// 包含头,不包含尾
7转换
7.1将字符串转成大写或小写
String toUperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除
String trim();//用户名、密码的时候去空
7.3对两个字符串进行自然顺序的比较
int compareTo(string);// "acc".compareTo("aaa")--->2相当于"c".compareTo"a";
一:忽略大小写比较:先都转成小写再比较
二:字符串反转:先转为字符数组,再把数组反转,数组反转就是首尾互换。一般遵循包含头不包含尾!
三:获得一个字符串在另一个字符串中出现的次数。
方法:用indexOf(char)判断 是否包含,然后用substring截子串
也可以直接indexOf(char,int),一直从找到的位置往后查找,更高效
注意:如果用split切割的话,如果"aacd".split("aa")则切出来的数组会有两个一个是""一个是"cd"(理应是两个,就是多的一个是"")
如果在结尾切的话切出来的数组长度会少一个
尽量不要用split切割
四:两个字符串中最大共同子串。
方法:从两个字符串中长度小的入手。小的里面从最大的字符串找起,用substring方法取子串,用contains判断大字符串是否包含。
StringBuffer
是字符串缓冲区,是一个容器,特点:
1.而且长度是可变化的。
2.可以直接操作多个数据类型。
3.最终会通过toString()方法变成字符串。
容器的面盘理论:
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append(34);
sb == sb1;//true;都是34。
1、存储:append()
2、删除:delete(start,end);//删除缓冲区中的数据,包含start,不包含end。
delete(index);//删除指定位置的字符。
3、获取
length();
Char charAt();
indexOf(String str);
lastindexOf(String str);
String substring(int start,int end);//注意StringBuffer中只有这里返回的是String类型。跟String是一样的。
4、修改
replace(int start,int end,String str);
setCharAt(int index,char char);
5、插入:insert(index,数据);//可以将数据插入到index位置
6、反转 StringBuffer reverse();
7、将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin);
JDK1.5版本之后出现了StringBuilder。
StringBuffer是线程同步的。
StringBuilder是线程不同步。
建议使用StringBuilder,更效率
升级是三个因素:
1.提高效率
2.简化书写
3.提高安全性
基本数据类型对象包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
基本数据类型数据包装类的最常见作用
就是用于基本数据类型和字符串类型之间转换。
基本数据类型转成字符串。
基本数据类型.toString(基本数据类型值)
如:Integer.toString(34);
字符串转基本数据类型。
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt("123");
十进制转成其他进制。
toBinarystring();
toHexString();
toOctalString();
其他进制转成十进制。
parseInt(string,radix);
自动装箱、自动拆箱(1.5JDK新特性)------- android培训、java培训、期待与您交流! ----------