JavaAPI(一)
String类
字符串是一个特殊的对象。字符串一旦初始化不可以被改变。
字符串初始化的方法:
String str=”abc”;
String str1=new String(“abc”);
str与str1的区别:str代表一个对象,str2代表两个对象。
System.out.println(str.equals(str1));//结果为true.因为Sting类复写了Object类中的equals方法,该方法用于判断字符串是否相同。
Eg:String s1=”abc”;
String s2=new String(“abc”);
String s3=”abc”;
System.out.println(s1==s2);//false。因为s1与s2指向不同的对象
System.out.println(s1==s3);//因为s1已经在内存中存在,因此s3不会再内存中开辟空间。
String类适用于描述字符串事物。常见操作有:
1.获取
int length():获取长度
Char charAt(int index)根据位置获取位置上的字符
int indexOf(int ch)返回ch第一次在字符串中出现的位置
int indexOf(int ch,int fromindex)从fronindex指定位置开始,获取ch在字符串中出现的位置
int indexOf(String s)返回的是s在字符串中第一次出现的位置
2.判断
Boolean contains(str)//字符串中是否包含某个一个字串
特殊之处:
boolean isEmpty()//字符串是否为空
boolean startswith()//字符串是否为指定内容开头
boolean endswith()//字符串是否为指定内容结尾
boolean equals(str)//比较字符串内容是否相等
boolean equalsIgnoreCase()//判断内容是否相等,忽略大小写
3.转换
将字符数组转成字符串:
构造函数:String(char[])
String(char[],offset,count)//将字符数组中的一部分转成字符串
静态函数:
Static String copyValueof(char[])
Static String copyValueof(char[],int offset,int count)
Static String valueof(char[])
将字符串转成字符数组:
Char[] toCharArray()
将字节数组转成字符串:
String(byte[])
String(byte[],offset,count)//将字节数组中的一部分转成字符串
将字符串转成字节数组
byte[] getBytes()
将基本数据类型转成字符串:
Static String valueof(int)
Static String valueof(double)
4.替换
String replace(oldchar,newchar)
5.切割
String[] split(regex)
6.字串。获取字符串中的一部分
String subString(begin)
String subString(begin,end)
7.转换,去除空格,比较
String toUpperCase()//将字符串转成大写
String toLowerCase()//将字符串转换成小写
String trim()//将字符串两端的多个空格去除
int compareTo(string)//对两个字符串进行自然顺序的比较
Eg1:
//字符串反转
public class StringDemo3 {
public static void main(String[]args)
{
String str="ab cdf";//定义字符串str
char[] ch=str.toCharArray();//字符串转为数组ch
/*reverse(ch,0,ch.length-1);//全部反转
String str1=new String(ch);//反转数组转换成字符串
System.out.println(str1);//输出反转后的字符串
*/
reverse(ch,1,2);//部分反转
String str2=new String(ch);//反转数组转换成字符串
System.out.println(str2);//输出反转后的字符串
}
//反转
private static void reverse(char[] ch,int x,int y) {
// TODO Auto-generated method stub
for(int i=x,j=y;i<j;i++,j--)
{
swap(ch,i,j);
}
}
//交换
private static void swap(char[] ch,int x, int y) {
// TODO Auto-generated method stub
char temp=ch[x];
ch[x]=ch[y];
ch[y]=temp;
}
}
Eg2:
//获取一个字符串在另一个字符串中出现的次数
public class StringDemo4 {
public static void main(String[]args)
{
String str="abcdabdfabrt";//定义字符串str
String str1="ab";//定义字符串str1
System.out.println("字符串ab在str中出现的次数为:"+getcount(str,str1));
}
//获取一个字符串在另一个字符串中出现的次数
public static int getcount(String a,String b)
{
int count=0,index=0;//count计数,index索引
/*第一种方法:
while((index=a.indexOf(b))!=-1)
{
a=a.substring(index+b.length());
count++;
}*/
//第二种
while((index=a.indexOf(b, index))!=-1)
{
index=index+b.length();
count++;
}
return count;
}
}
StringBuffer:字符缓冲区
字符串的组成原理是通过该类实现的。StringBuffer可以对字符串内容进行增删。StringBuffer是一个容器,StringBuffer是可变长度
基础操作:
1.存储
StringBuffer append():将指定数据作为参数添加
StringBuffer insert(index,数据):可以将数据插入到指定Index位置
2.删除
StringBuffer delete(start,end):删除缓冲区中数据,包含start,不包含end
StringBuffer deletecharAt(index):删除指定位置的字符
3.获取
Char charAt(int index)
int indexof(String str)/int lastindexof(String str)
int length()
String substring(int start,int end)
4.修改
StringBuffer raplace(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是线程不同步
升级三要素:提高效率,简化书写,提高安全性
基本数据类型转成字符串
基本数据类型+””
基本数据类型.toString(基本数据类型值) eg:Integer.toString(34)//J将34转成整数34
字符串转成基本数据类型:
Xxx a=xxx.parsexxx(String)//eg:int a=Integer.parseInt(“123”);
十进制转成其他进制
toBinaryString()/toHexString()/toOctalString()
其他进制转成十进制:
parseInt()//eg:int a=Integer.parseInt(“3c”,16);//后面指的是进制数