黑马程序员之java中操作字符串的常用类String和StringBuffer学习

------- android培训java培训、期待与您交流! ----------

String类中常用方法:

将字符数组转成字符串;

static String copyValueof(char[] data,int offset,int count)
static String copyValueOf(char[])
static String valueOf(char[]);
将基本数据类型转成字符串:
static String valueOf(int);
static String valueOf(double);
将字节数组转成字符串:
String(byte[]);
String(byte[],offset,count)//将字节数组中的一部分转成字符串
将字符串转成字符数组:
char[] toCharArray();
将字符串转成字节数组:
byte[] getBytes();
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

替换字符串中某个字符(替换的函数不会改变原来串,只会产生一个新串)
String replace(oldchar,newchar);//如果替换的字符不存在返回原串

String replace(CharSequence target,CharSequence replacement);

切割: String[] split(regex);

子串,获取字符串中的一部分:

String subString(int begin);//如果角标不存在,会出现字符串角标越界异常
String subString(int begin,int end);
转换,去除空格,比较:
将字符串转成大写或小写:
String toUpperCase();
String toLoweCase();
将字符串两端的多个空格去除:
String trim();
对两个字符串进行自然顺序的比较:
int compareTo(String str);//大于:整数;等于:0;小于:负数
1,去掉字符串头尾空格:
思路:用charAt函数判断第一个不为空的角标,和倒数第一个不为空的角标;然后再用subString函数截取;
2,将字符串翻转:
思路:1,将字符串变成数组;2,对数组反转;将数组变成字符串
3,获取一个字符串在另一个字符串中出现的次数:
思路:1,第一个计数器;2,获取字符串第一次出现的位置;3,从第一次出现位置后剩余的字符串中继续获取字符串出现的位置;
4,当获取不到时,计数完成;
/*
public static int getSubCount(String str,String key){
int count = 0;
int index = 0;
while((index=str.indexof(key,index)) != -1){
index = index+key.length();
count++;
}
return count;
}
*/
public static int getSubCount(String str,String key){
int count = 0;
int index = 0;
while(str.indexOf(key)!=-1){
str = str.substring(index+key.length());
System.out.println("str="+str);
count++;
}
return count;
}
4,获取两个字串中最大相同子串
public static String getMaxSubString(String s1,String s2){
String max = "",min = "";
max = (s1.length()>s2.length())?s1:s2;
min = (max==s1)?s2:s1;
for(int x=0;x<min.length;x++){
for(int y=0,z<min.length()-x;z!=min.length()+1;y++,z++){
String temp = min.substring(y,z);
if(max.contains(temp))
return temp;
}
}

}

StringBuffer类:

StringBuffer:可以对字符串修改,长度可变,可以操作多个数据类型,最终会toString方法变成字符串;

String的字符串不能修改。

StringBuffer是一个容器:

1,存储:append,insert(可以再指定位置插入数据);

2,删除:StringBuffer delete(start,end)包含start不含end,

StringBuffer deleteCharAt(indext)删去指定位置字符;

3,获取:char charAt(index);indexOf(str);lastIndexOf(str);substring(start,end);

4,修改: StringBuffer replace(start,end,string);void setCharAt(int index,char ch)//修改指定位置的字符为ch;

5,反转:StringBUffer reverse();

6, 将缓冲区中指定位置的字符存到指定字符数组中指定位置

void getChars(int srcBegin,int srcEnd,char[] dst,int dsgBegin);

StringBuffer sb = new StringBuffer("abcdefg");

char[] chs = new char[4];

sb.getChars(1,4,chs,1);//将sb中1到4位置的字符存到chs数组中,从数组的1位置开始存;

StringBuilder(1.5以后):

构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。方法和StringBuffer一样;

StringBuffer是线程同步,StringBuilder是线程不同步;

基本数据类型对象包装类:

常见作用:就是用于基本数据类型和字符串类型之间转换;

基本数据类型转字符串:基本数据类型+"";

基本数据类型.toString(基本数据类型值);如:Integer.toString(34);

字符串转成基本数据类型:xxx a = Xxx.parseXxx(str);//静态调用方式

Integer.parseInt(str);

Long.parseLong(str);

Integer i = new Integer("123");

int num = i.intValue();//对象调用方式

十进制转成其他进制:toBinaryString()十;toHexString()十六;toOctalString()八;

其他进制转成十进制:parseInt(string,radix);如:int x = Integer.parseInt("3c",16);将字符串按16进制转成十进制

使用StringBuilder:

StringBuilder sb = new StringBuilder("abcdefg");

sb.append("hi");  //abcdefghi

sb.insert(1,"e");//aebcdefg

sb.deleteCharAt(2);//abdefg

sb.delete(2,4);//abefg

sb.setLength(4);//abcd

sb.setCharAt(0,'k');//kbcdefg

sb.replace(0,2,"hehe");//hehecdefg

使用StringBuffer类:

StringBuffer sb = new StringBuffer();      

sb.append(12).append("haha");//方法调用链。

String s = "abc"+4+'q';

s = newStringBuffer().append("abc").append(4).append('q').toString();

------- android培训java培训、期待与您交流! ----------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值