首页 > 编程 > Java > 正文

java中String,StringBuffer,StringBuilder的区别和一些案例

2019-11-08 19:41:57
字体:
来源:转载
供稿:网友

区别

String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高形式参数问题:String参数效果相当于基本类型,StringBuffer为引用类型

案例

案例1:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数

public static void main(String[] args) { //定义一个字符串 String s = "Hello123World"; //定义三个统计变量 int bigCount = 0; int smallCount = 0; int numberCount = 0; //遍历字符串,得到每一个字符。 for(int x=0; x<s.length(); x++){ char ch = s.charAt(x); //方式1 /* if(ch>='a' && ch<='z'){ smallCount++; }else if(ch>='A' && ch<='Z'){ bigCount++; }else if(ch>='0' && ch<='9'){ numberCount++; } */ // 方式2 if (Character.isUpperCase(ch)) { bigCount++; } else if (Character.isLowerCase(ch)) { smallCount++; } else if (Character.isDigit(ch)) { numberCount++; } } System.out.PRintln("大写字母"+bigCount+"个"); System.out.println("小写字母"+smallCount+"个"); System.out.println("数字"+numberCount+"个");}

案例2:统计大串中小串出现的次数

public static void main(String[] args) { // 定义大串 String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"; // 定义小串 String minString = "java"; int count = getCount(maxString, minString); System.out.println("Java在大串中出现了:" + count + "次");}public static int getCount(String maxString, String minString) { int count = 0; int index; while((index=maxString.indexOf(minString))!=-1){ count++; maxString = maxString.substring(index + minString.length()); } return count;}

案例3:字符串反转

public static void main(String[] args) { // 键盘录入一个字符串 Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串:"); String line = sc.nextLine(); String s = myReverse(line); System.out.println("实现功能后的结果是:" + s);}public static String myReverse(String s) { String result = ""; char[] chs = s.toCharArray(); // 倒着遍历字符串,得到每一个字符 for (int x = chs.length - 1; x >= 0; x--) { // 用新字符串把每一个字符拼接起来 result += chs[x]; } return result;}// 用StringBuffer的reverse()功能public static String myReverse2(String s) { return new StringBuffer(s).reverse().toString();}

案例4:把数组拼接成一个字符串

public static void main(String[] args) { // 定义一个数组 int[] arr = { 44, 33, 55, 11, 22 }; // 定义功能 // 方式1:用String做拼接的方式 String s1 = arrayToString(arr); System.out.println("s1:" + s1); // 方式2:用StringBuffer做拼接的方式 String s2 = arrayToString2(arr); System.out.println("s2:" + s2);}// 用StringBuffer做拼接的方式public static String arrayToString2(int[] arr) { StringBuffer sb = new StringBuffer(); sb.append("["); for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { sb.append(arr[x]); } else { sb.append(arr[x]).append(", "); } } sb.append("]"); return sb.toString();}// 用String做拼接的方式public static String arrayToString(int[] arr) { String s = ""; s += "["; for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { s += arr[x]; } else { s += arr[x]; s += ", "; } } s += "]"; return s;}

案例5:判断一个字符串是否是对称字符串

public static void main(String[] args) { // 创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串:"); String s = sc.nextLine(); // 一个一个的比较 boolean b = isSame(s); System.out.println("b:" + b); //用字符串缓冲区的反转功能 boolean b2 = isSame2(s); System.out.println("b2:"+b2);}public static boolean isSame2(String s) { return new StringBuffer(s).reverse().toString().equals(s);}public static boolean isSame(String s) { boolean flag = true; // 把字符串转成字符数组 char[] chs = s.toCharArray(); for (int start = 0, end = chs.length - 1; start <= end; start++, end--) { if (chs[start] != chs[end]) { flag = false; break; } } return flag;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表