黑马程序员——String类常见的操作方法
2015-07-25 11:36
429 查看
——- android培训、java培训、期待与您交流! ———-
String类 常见操作方法
1,获取
1.1字符串中包含的字符数,也就是字符串的长度
int length();
1.2根据位置获取位置上的某个字符。
char charAt(int index);
1.3 根据字符获取该字符在字符串中的位置
int indexOf(int ch);返回的是ch在字符串中第一次出现的位置
int indexOf(int ch,int fromIndex);从fromIndex指定的位置开始,获取ch在字符串中出现的位置。
2,判断
2.1 字符串中是否包含某一个子串
boolean contains(str);
特殊之处:indexOf(str);也可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中存在。
所以,也可以用于对指定判断是否包含。
if(str.indexOf(“aa”)!=-1)
而且该方法即可以判断,有可以获取出现的位置。
2.2 字符串中是否有内容。
boolean isEmpty(): 原理就是判断长度是否为0.
2.3 字符串是否是以指定内容开头。
boolean startsWith(str);
2.4 字符串是否是以指定内容结尾。
boolean endWith(str);
2.5 判断字符串内容是否相同。复写了Object类中的equals方法。
boolean equals(str);
2.6 判断内容是否相同。并忽略大小写。
boolean equalsTgnoreCase();
3.转换。
3.1将字符数组转成字符串。
构造函数: String(char[])
String(char[],offect,count);将字符数组中的一部分转换成字符串
静态方法:
static String copyValueof(char[]);
static String copyValueOf(char[] data,int offest,int count)
3.2将字符串转成字符数组。**重点
char[] toCharArray()
3.3将字节数组转成字符串。
String(byte[])
String(byte[],offect,count);
3.4将字符串转成字节数组。
byte[] getBytes();
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
3.5将基本数据类型转成字符串。
String valueOf(int)
String valueOf(double)
4.替换
String replasce(oldchar,newchar);
5.切割
String split(regex);
6.获取子串。
String substring(begin);
String substring(begin,end);
7.特殊转换。(去除空格,两者比较)
7.1 将字符串转换成大写或者小写
String toUperCase();
String ToLowerCase();
7.2将字符串两端多余空格去除。
String trim();
7.3将两字符串进行既然顺序的比较。
int compareTo(string);
示例1:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/cd6fa1b0bfae57f97ee10d063a1c7be2)
编译如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/c9de4889650b0c061c7a07f0dab2b2ea)
编译如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/d4401c762db7e7a72fa731b7e7a022ff)
编译如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/b8c5a7d07824fe284f5525ce113facd0)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/76bdac5a84ed51769c8039092d1f2942)
编译如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/15/38e2967aa2e92126825d426252840be8)
StringBuffer是字符缓冲区
是一个容器C create U update R read D delete
1.长度是可变化的,数组是一个容器,长度是固定的
2.可以直接操作多个数据类型
3.最终会通过toString方法变成字符串。
4.当数据类型不确定,数据个数不确定,最终变成字符串时候用。
1.存储。
StringBuffer append();将知道数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
2.删除。
delete(statrt,end),删除头不删除尾
delete(0,str.length()) 清空缓冲区
deleteCharAt(n)清空n位置的字符。
3.获取
int charAt(int index)
int indexOf(String str)
String substring(int start,int end)
4.修改
replace(int start,int end,String str1)//换头不换尾
setCharAt(2,k);替换字符
5.反转
StringBuffer reverse()
6. 定义一个新数组,将缓冲区指定位置字符串存储到该字符数组指定位置(不包含尾)
void getChars(int strBegin,int sreEnd,char[] dst, int dstBegin)
原来头, 原来尾, dst的字符数组,数组存储开始位
**升级三个因素:
1.提高效率。
2.提高安全性。
3.简化书写。**
编译如下:
String类 常见操作方法
1,获取
1.1字符串中包含的字符数,也就是字符串的长度
int length();
1.2根据位置获取位置上的某个字符。
char charAt(int index);
1.3 根据字符获取该字符在字符串中的位置
int indexOf(int ch);返回的是ch在字符串中第一次出现的位置
int indexOf(int ch,int fromIndex);从fromIndex指定的位置开始,获取ch在字符串中出现的位置。
int indexOf(String str);返回的是str在字符串中第一次出现的位置 int indexOf(String str,int fromIndex);从fromIndex指定的位置开始,获取str在字符串中出现的位置。
2,判断
2.1 字符串中是否包含某一个子串
boolean contains(str);
特殊之处:indexOf(str);也可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中存在。
所以,也可以用于对指定判断是否包含。
if(str.indexOf(“aa”)!=-1)
而且该方法即可以判断,有可以获取出现的位置。
2.2 字符串中是否有内容。
boolean isEmpty(): 原理就是判断长度是否为0.
2.3 字符串是否是以指定内容开头。
boolean startsWith(str);
2.4 字符串是否是以指定内容结尾。
boolean endWith(str);
2.5 判断字符串内容是否相同。复写了Object类中的equals方法。
boolean equals(str);
2.6 判断内容是否相同。并忽略大小写。
boolean equalsTgnoreCase();
3.转换。
3.1将字符数组转成字符串。
构造函数: String(char[])
String(char[],offect,count);将字符数组中的一部分转换成字符串
静态方法:
static String copyValueof(char[]);
static String copyValueOf(char[] data,int offest,int count)
3.2将字符串转成字符数组。**重点
char[] toCharArray()
3.3将字节数组转成字符串。
String(byte[])
String(byte[],offect,count);
3.4将字符串转成字节数组。
byte[] getBytes();
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
3.5将基本数据类型转成字符串。
String valueOf(int)
String valueOf(double)
4.替换
String replasce(oldchar,newchar);
5.切割
String split(regex);
6.获取子串。
String substring(begin);
String substring(begin,end);
7.特殊转换。(去除空格,两者比较)
7.1 将字符串转换成大写或者小写
String toUperCase();
String ToLowerCase();
7.2将字符串两端多余空格去除。
String trim();
7.3将两字符串进行既然顺序的比较。
int compareTo(string);
示例1:
class String1 { public static void method_get() { String str="abcdeakpf"; //长度 //System.out.println(str.length); //获取某个位置的字符 //System.out.println(str()); sop(str.length()); //长度 //根据索引获取字符 sop(str.charAt(4));// //根据字符获取索引 sop(str.indexOf('a'));//第一次的位置 sop(str.indexOf('a',3));//3位置后第一次出现的位置 } public static void main(String[] args) { method_get(); String s1="abc"; String s2=new String("abc"); String s3="abc"; String s4=new String("abc"); System.out.println(s1==s2); //false System.out.println(s1==s3); //true System.out.println(s4==s2); //false System.out.println(s1==s2); } public static void sop(Object obj) { System.out.println(obj); } }
//示例2 class test1 { public static void main(String[] args) { String str=" a, d "; testn1(str); System.out.println("<"+str+">");//没有去两头空字符 } public static void testn1(String str) { int start =0; int end =str.length()-1;//和数组异常str角标从零开始,长度从1开始 while(start<=end&&str.charAt(start)==' ') start++; while(start<=end&&str.charAt(end)==' ') end--; System.out.println("内<"+str.substring(start,end+1)+">"); } }
编译如下:
/** 将字符串反转 */ class test2 { public static void sop(String arr)//封装输出语句 { System.out.println("<"+arr+">"); } public static void main(String[] args) //定义主函数 { String s=" ab,cd,ef "; sop(s); sop(reverseString(s)); } public static String reverseString(String s)// { char[] arr=s.toCharArray();//转换为数组进行操作A reverse(arr); //反转操A return new String(arr); //返回一个数组并转换成字符串 } public static void reverse(char[] arr)//A1 { for(int x=0,y=arr.length-1;x<y;x++,y--) {swap(arr,x,y);} } public static void swap(char[] arr,int x,int y)//A2 { char temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } }
编译如下:
/** 将部分字符串a--c反转 */ class test3 { public static void sop(String arr)//封装输出语句 { System.out.println("<"+arr+">"); } public static void main(String[] args) //定义主函数 { String s=" ab,cd,ef "; sop(s); sop(reverseString(s,5,8)); } public static String reverseString(String s,int a,int b) { char[] arr=s.toCharArray();//转换为数组进行操作A reverse(arr,a,b); //反转操A return new String(arr); //返回一个数组并转换成字符串 } public static void reverse(char[] arr,int a,int b)//A1 { for(int x=a,y=b-1;x<y;x++,y--) {swap(arr,x,y);} } public static void swap(char[] arr,int x,int y)//A2 { char temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } }
编译如下:
/** 获取字串的位置”abkkcdkkefkkskk“ 利用split切割方法 */ class test4 { public static void main(String[] args) { String str="kkabkkcdkkefkks"; sop("count=------"+str.split("kk").length);//不建议使用 sop("count="+ getSubCount(str, "kk"));//改变了字符串 sop("count="+ getSubCount_1(str, "kk"));//不改变字符串 } public static void sop(String str) { System.out.println(str); } public static int getSubCount_1(String str,String key) { int count=0;//Key出现的次数 int index=0;//字串位置 while((index=str.indexOf(key,index))!=-1)//indexOf(String str, int fromIndex) { //返回从指定的位置开始搜索返回子字符串第一次出现的位置 sop("str= "+str); sop("index= "+index); index+=key.length(); count++; } return count; } public static int getSubCount(String str,String key) { int count=0;//key出现的次数 int index=0;//字串位置 while((index=str.indexOf(key))!=-1)//index的位置设定为每次key字符的位置 { sop("str= "+str); str=str.substring(index+key.length());//每循环一次都会取key后面子字符串 count++; } return count; } }
/** 获取两个字符串最大相同的子串 s1="abcwerthelloyuiodef" s2="cvhellobnm" 思路; 1,将短的字符串按照长度递减的方式获取到 2,将每获取到的子串去长串判断是否包含。 如果包含,已经找到。 */ class test5 { public static void main(String[] args) { String s2="abcwerthelloyuiodef"; String s1="cvhellobnm"; //getmin(s1,s2); sop(getMaxSubstring(s1,s2)); } public static void getmin(String s1,String s2 ) { String max="",min=""; max=(s1.length()>s2.length())?s1:s2; min=(max==s1)?s2:s1; sop("max="+max); sop("min="+min); sop(getMaxSubstring(max,min)); } public static void sop(String temp) { System.out.println(temp); } public static String getMaxSubstring(String s1,String s2) { String max="",min=""; max=(s1.length()>s2.length())?s1:s2; min=(max==s1)?s2:s1; sop("max="+max); sop("min="+min); for(int x=0;x<min.length();x++) { for (int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)//y;每一层开始地址。z:每一层结束位地址 { //遍历每一层都是y和z分别加1,最后判断z到最后一位就是字符串的末位所以是(s.length+1) String temp= min.substring(y,z); sop("min.substring(y,z) "+temp); if(max.contains(temp))//if(max.indexOf(temp)!=-1) return temp; } } return ""; } }
编译如下:
StringBuffer是字符缓冲区
是一个容器C create U update R read D delete
1.长度是可变化的,数组是一个容器,长度是固定的
2.可以直接操作多个数据类型
3.最终会通过toString方法变成字符串。
4.当数据类型不确定,数据个数不确定,最终变成字符串时候用。
1.存储。
StringBuffer append();将知道数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
2.删除。
delete(statrt,end),删除头不删除尾
delete(0,str.length()) 清空缓冲区
deleteCharAt(n)清空n位置的字符。
3.获取
int charAt(int index)
int indexOf(String str)
String substring(int start,int end)
4.修改
replace(int start,int end,String str1)//换头不换尾
setCharAt(2,k);替换字符
5.反转
StringBuffer reverse()
6. 定义一个新数组,将缓冲区指定位置字符串存储到该字符数组指定位置(不包含尾)
void getChars(int strBegin,int sreEnd,char[] dst, int dstBegin)
原来头, 原来尾, dst的字符数组,数组存储开始位
**升级三个因素:
1.提高效率。
2.提高安全性。
3.简化书写。**
class test6 { public static void main(String[] args) { StringBuffer sb=new StringBuffer(); //StringBuilder sb=new StringBuilder();//方法一样 sb.append("abc").append("true").append(38);//"abctrue38" sb.insert(1,"qq");//1位置插入数据 sop(sb.toString()); char [] str=new char [6];//定义新数组长度为6 sb.getChars(1, 4,str,1) ;//将sb字符串中数据从1位置到3位置存储到str数组1位置后。 sop(new String(str)); for(int x=0;x<str.length;x++) { sop("str["+x+"]= "+str[x]); } /*sb.replace(1,4,"java");//**替换1--4,不包含4 sop(sb.toString()); sb.delete(1,5);//**删除1--5,不包含5 sop(sb.toString()); sb.deleteCharAt(3);//删除3 sop(sb.toString()); sb.setCharAt(3,'k');//替换2 sop(sb.toString()); sb.delete(0,(sb.length()));//清空缓冲区 sop("<"+sb.toString()+">"); //sop(sb1.toString()); //sop(sb2.toString()); //sop("sb1==sb: "+(sb1==sb));*/ } public static void sop(String str) { System.out.println(str+">"); } }
编译如下:
相关文章推荐
- 面试题10_二进制中1的个数
- (剑指Offer)面试题32:从1到n整数中1出现的次数
- 黑马程序员——Java File类总结
- 黑马程序员---数据类型及内存占用字节
- 面试题09_斐波那契数列及其变种详解——剑指offer系列
- Java程序员之从菜鸟到职场高手的必看...
- 面试题08_旋转数组的最小数字——剑指offer系列
- 高效能程序员的修炼
- android面试总结01 activity生命周期
- 黑马程序员——Java基础-集合框架
- 自学android半年,已从.net转型成android程序员,分享下这个过程(转)
- 面试题07_用两个栈实现队列——剑指offer系列
- (剑指Offer)面试题31:连续子数组的最大和
- 剑指Offer面试题5(Java版):从尾到头打印链表
- 黑马程序员——Java IO总结一
- 程序员,为什么千万不要重写代码?
- 关于“构造函数”中的几个小问题,也许面试会问到哦~
- 神奇的decimal,也许面试会问到哦~
- 【黑马程序员】----java基础---反射
- 黑马程序员——Java基础-异常