黑马程序员_字符串

---------------------- 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培训、期待与您交流! ----------------------





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值