---------------------- android培训、java培训、期待与您交流! ----------------------
一、String类
String s1="abc";
String s2="abc"; //编译器会优化使s1、s2指向同一对象
主要方法
char charAt(int)
int length() //最后没有\0的
int indexOf(int ch) //ch用ASCII码
int indexOf(int ch,int fromIndex)
int lastIndexOf(int ch)
boolean startsWith(String str)
boolean endsWith(String str)
boolean isEmpty() JDK1.6
boolean contains(CharSequence str) //CharSequence的实现类包括String、StringBuilder、StringBuffer
boolean equalsIgnoranceCase(String str)
char[]->String
String(char[])
String(char[],offset,count)
static String copyValueOf(char[])
static String copyValueOf(char[],offset,count)
static String valueOf(char[])
String->byte[]
getByte()
String->char[]
toCharArray()
byte[]->String
String(byte[])
int/double..->String
valueOf(..)
3+""
String replace(char oldchar,char newchar) //替换后返回,this不变
String replace(CharSequence,CharSequence)
String replace(String regex,String replacement)
String[] split(regex)
String substring(int begin,int end)
String toUpperCase()
String toLowerCase()
String trim() //去掉两端多余空格
int compareTo(String) //比较Unicode值,按字典顺序比较,第一个不同的char值之差,参数大,返回<0.
题4、获取2个字符串的最大相同子串
思路:
将短的那个子串按照长度递减的方式获取到;
将每个获取到的子串去长串中判断是否包含。
以下代码可以获取所有最大子串:
if(s1.length()>s2.length())
getMaxSubstring(s2,s1);
else getMaxSubstring(s1,s2);
getMaxSubstring(String small,String large){
for(int len=small.length();len>0;len--){
for(int start=0;start<=small.length()-len;start++){
tmp=small.substring(start,start+len-1);
if(large.contains(tmp))
strArray.add(tmp);
}
return strArray;
二、StringBuffer与StringBuilder
StringBuffer线程安全,StringBuilder效率高,一般用StringBuilder.
StringBuffer主要方法
StringBuffer append()//将指定数据作为参数添加到已有数据结尾。
StringBuffer inster(index,数据):可以将数据插入指定index位置。
StringBuffer delete(start,end) //删start,保留end,删除缓冲区数据。
StringBuffer deleteCharAt(index)//删除指定位置的字符,相当于delete(index,index+1)
sb.delete(0,sb.length()); //清空缓冲区。
char charAt(int indext);通过角标获得字符
int indexOf(String str);通过字符串获得这个缓冲区中第一个字符串所在的角标
int lastIndexOf(String str); 通过字符串有右到左索引,获得这个缓冲区中第一个字符串所在的角标
int length();获得缓冲区长度。
String substring(int start,int end);获得这个缓冲区的字串。
StringBuffer replace(int start,int end,Sting st)//替换,原来sb.replace(...),sb会变de
void setCharAt(int index,char ch)
StringBuffer reverse()
void getChars(int srcBegin,int srcEnd,char[] dsc,int dstBegin) //将缓冲区中指定数据存储到指定字符数组中
三、基本数据类型对象包装类
基本数据类型对象包装类的最常见作用就是用于基本数据类型和字符串类型之间做转换。
格式:
1、 基本数据类型转成字符串。
<1>、基本数据类型+““;
<2>、基本数据类型。toString(基本数据类型值);
例如:Integer.toString(34);//将34变成“34“。
2、 字符串转换成基本数据类型。
static int parseInt(String s):其中s必须是数字格式字符串。否则出现异常。
格式:xxx a=Xxx.parseXxx(String s);
Boolean b=Boolean.parseBoolean(“true”);
Integer i=new Integer(“123“);
int num=i.intValue();
十进制转换其他进制:
toBinaryString();//转二进制
toHexString();//转十六进制
toOctalString();//转八进制
其他进制转换成十进制:
static parseInt(String s, int radix)
例如:int x=new Integer(“123“8);把123转换成八进制表现形式。
基本数据类型对象包装类新特性
Integer中的equals()方法覆写了Object中的equals()方法,他比较的是数值是否相同。
Integer x=new Integer(“123“);
Integer y=new Integer(123);
当x==y时结果false,因为他们是指向的两个对象。
x.equals(y)时为true。
JDK1.5版本以后:
Integer x=new Integer(4);
可以写成Integer x=4;//自动装箱。new Integer(4)
x = x/* x.intValue() */ + 2;//x+2:x 进行自动拆箱。变成成了int类型。和2进行加法运算。
//再将和进行装箱赋给x。
当x=null时,x=x+2;会出现运行时异常,所以在x=x+2;之前要判断。
Integer m=128;
Integer n=128;
m==n;时结果为false。
而:Integer a=128;
Integer b=128;
a==b;时结果为true。
因为a和b指向同一个Integer对象。原因当数值在byte范围内时,对于新特性:如果该数值已经存在,则不会再开辟新的空间。
----------------------android培训、java培训、期待与您交流! ----------------------