种方法"/>
String类常见的20种方法
new与不new的区别?
String x =“ok”;//地址一样(常量池查找机制)String y =“ok”;Sytem.out.println(x==y);//tureString a=new String(“ok”);//new 一次开辟一次空间,两个地址不一样String b=new String(“ok”);Sytem.out.println(x==y);//false
String 和StringBuffer/StringBuilder的区别?
StringBuffer和StringBuilder在第一次创建对象的时候底层会多预留16块缓冲区【目的:追加连接效率高】
String 有两种创建方式,new与不new,StringBuffer和StringBuilder只有一种:new
String类是不可改变类,所有的方法都不会直接处理原本的字符串,只是将符合条件的字符串返回给我们,需要我们对他进行接收;
StringBuffer和Stringbuilder里面的所有的方法都是直接处理原本的字符串,不需要接收;
StringBuffer同一时间允许一个线程进行访问,效率较低,但不会出现并发错误
StringBuilder同一时间允许多个线程进行访问,效率较高,但是可能会出现并发错误
StringBuffer的常用方法
返回值类型 | 方法名称 | 描述 |
---|---|---|
int | length() | 获取当前StringBuffer中的字符的个数 |
int | capacity() | 获取当前StringBuffer的容量 |
int | indexOf(String str) | 查找某个字符串str在StringBuffer中的索引位置,找到返回索引,找不到返回-1 |
StringBuffer | append(…) | 将指定的参数的字符串追加到序列中 |
StringBuffer | delete(int start, int end) | 从start的位置开始删除字符,一直删除到索引为end的位置(包含start,不包含end) |
void | setCharAt(int index,char c) | 使用字符c替换指定的索引index位置上的字符 |
注:append(…)中的…代表各种类型的参数,如append(int i)、append(char c)、append(String str)等
String 类常见的20种方法:
返回类型 | 方法签名 | 作用 |
---|---|---|
int | length() (长度相关) | 得到字符个数 |
byte[] | getBytes() (和数组相关) | 将一个字符串转换成字节数组 一个英文对应一个正数字节 一个中文对应两个负数字节 |
char[] | toCharArray() (和数组相关) | 将一个字符串转换成字符数组 |
String[] | split(String) (和数组相关) | 将一个字符串按照指定的字符劈开 |
boolean | equals(String) (和判断相关) | 判断两个字符串内容是否相等 |
boolean | equalsIgnoreCase(String) | 忽略大小写的比较字符串是否相等 |
boolean | contains(String) | 判断一个字符串是否包含指定的字符串 |
boolean | startsWith(String) | 判断一个字符串是否以指定的字符串开头 |
boolean | endsWith(String) | 判断一个字符串是否以指定的字符串结尾 |
String | toUpperCase() | 将一个字符串全部转变为大写字母 |
String | toLowerCase() | 将一个字符串全部转变为小写字母 |
String | replace(StringA,StringB) | 将一个字符串StringA替换为StringB |
String | replaceAll(StringA,StringB) | 将一个字符串StringA替换为StringB,支持正则表达式 |
String | replaceFirst(StringA,StringB) | 将一个字符串第一次出现的StringA替换为StringB |
String | trim() | 去除一个字符串的前后空格 |
String | substring(int x,int y) | 将一个字符串从x位置截取到y-1位置 |
String | substring(int x) | 将一个字符串从x位置截取到最后 |
char | charAt(int x) | 找到下标x对应的元素 |
int | indexOf(String) | 找到某个字符串第一次出现的下标 |
int | lastIndexOf(String) | 找到某个字符串最后一次出现的下标 |
equals(String):
Student[] data=new Student[5];data[0]=new Student("张三",22,78);data[1]=new Student("老四",18,70);data[2]=new Student(null,18,95);data[3]=new Student("王五",20,31);data[4]=new Student("张三",18,66);
//将18岁张三的成绩打出来
for(Student stu:data){/*排空操作if(stu.name!=null&&stu.name.equals("张三")&&stu.age==18){System.out.println(stu.score);}*///固定内容放前面,有效避免空指针异常if("张三".equals(stu.name)&&stu.age==18){System.out.println(stu.score);}
getBytes():
public class Exec3{public static void main(String[] args){String str="ladygaga的坏罗曼史";byte[] data=str.getBytes();/*int count=0;for(byte x:data){if(x<0){count++;}}System.out.println("汉字出现:"+count/2+"次");*/System.out.println(data.length-str.length());//字节减去字符的个数就是汉字多出来的个数
}//一个中文和英文都是一个字符
}//一个中文两个字节,一个英文一个字节
判断一个字符串是否全是数字
public class Exec5{public static void main(String[] args){System.out.println(check3("123木头人"));System.out.println(check3("etoak666"));System.out.println(check3("72896"));System.out.println(check3("4y7r437r40"));
}
public static boolean check(String str){return str.replaceAll("[0-9]","").length()==0;}public static boolean check2(String str){char[] data=str.toCharArray();int count=0;for(char x:data){if(x>='0'&&x<='9') count++;}return count==data.length; }public static boolean check3(String str){char[] data=str.toCharArray();for(char x:data){if(x<'0' || x>'9') {return false;}}return true; }
}
例1: 吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮
(统计葡萄个数)
public class Grape{public static void main(String[] args){String str="吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮";count1(str);count2(str);count3(str);count4(str);count5(str);count6(str);
}public static void count1(String s){int count =0;for(int i=0;i<s.length();i++){if( s.substring(i, i+1).equals("葡")){count++;}
}System.out.println(count);}//将字符串打碎,判断数组前一个字符是不是葡,后一个字符是不是萄,是的话计数器加一public static void count2(String s){char[] data=s.toCharArray();int count=0;for(int i=0;i<data.length-1;i++){if(data[i]=='葡'&&data[i+1]=='萄'){count++;}}System.out.println(count);}//将葡萄替换成萄,得到新的字符串,长度减一public static void count3(String s){String x=s.replaceAll("葡萄","葡");System.out.println(s.length()-x.length());}//不断判断字符串里是否还有葡萄,有就将第一次出现的葡萄替换成核桃,计数器加一public static void count4(String s){int count=0;while(s.contains("葡萄")){s=s.replaceFirst("葡萄","核桃");count++;}System.out.println(count);}//将字符串按照葡萄劈开,看剩下的 段数,段数减一public static void count5(String s){s +="a";String[] str =s.split("葡萄");System.out.println(str.length-1);}public static void count6(String s){int count=0;while(s.contains("葡萄")){s=s.substring(s.indexOf("葡萄")+2);count++;}System.out.println(count);}
}
例2:将一个字符串里第一次出现的非重复元素打印出来
public class Exec13{public static void main(String[] args){String str = "swwiss";//将第一个非重复元素打印出来 -》 w/*遍历字符串中的每一个元素,将它在字符串第一次出现的坐标与最后一次的坐标对比,一样则只出现一次*/for(int i=0;i<str.length();i++){char x=str.charAt(i);if(str.indexOf(x)==str.lastIndexOf(x)){System.out.println(x);break;}}print(str);}
/*判断删除首字母后的字符串长度是否比原来字符串长度少一,
少一则表示该字母只出现一次*/public static void print(String str){while(str.length()!=0){int x=str.length();String szm=str.substring(0,1);str=str.replace(szm,"");int y=str.length();if(x-y==1){System.out.println(szm);break;}}}}
例3:将所有第一次出现的字母打印出来
public class Exec7{public static void main(String[] args){String str = "helloWorld";//将所有第一次出现的字母打印出来//heloWrd//比较坐标char[] data=str.toCharArray();for(int i=0;i<data.length;i++){if( i==str.indexOf(data[i])){System.out.print(data[i]);}}System.out.print("\n");prin1(str+"\n");prin2(str);}// 将首字母打印,将与首字母相同的后续字母删掉public static void prin1(String str){while(str.length()!=0){String szm=str.substring(0,1);System.out.print(szm);str=str.replace(szm,"");}}
//新建字符串,将新字符串没有的老字符串中字符追加在新字符串中public static void prin2(String str){char[] data=str.toCharArray();String temp="";for(char x:data){if(!temp.contains(x+"")){temp+=x;}}System.out.println(temp);}}
更多推荐
String类常见的20种方法
发布评论