本片主要介绍String,StringBuffer,StringBuilder的特点和运用。
下图是对String,StringBuffer,StringBuilder的详细描述
示例代码段1:给定一个字符串数组。按照字典顺序进行从小到大的排序。
{"nba","abc","cba","zz","qq","haha"}
package cn.itcast.p1.string.test; /* * 1,给定一个字符串数组。按照字典顺序进行从小到大的排序。 * {"nba","abc","cba","zz","qq","haha"} * * 思路: * 1,对数组排序。可以用选择,冒泡都行。 * 2,for嵌套和比较以及换位。 * 3,问题:以前排的是整数,比较用的比较运算符,可是现在是字符串对象。 * 字符串对象怎么比较呢? 对象中提供了用于字符串对象比较的功能。 * * */ public class StringTest_1 { /** * @param args */ public static void main(String[] args) { String[] arr = { "nba", "abc", "cba", "zz", "qq", "haha" }; printArray(arr); sortString(arr); printArray(arr); } public static void sortString(String[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length; j++) { if(arr[i].compareTo(arr[j])>0)//字符串比较用compareTo方法 swap(arr,i,j); } } } private static void swap(String[] arr, int i, int j) { String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void printArray(String[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i != arr.length - 1) System.out.print(arr[i] + ", "); else System.out.println(arr[i] + "]"); } } }
示例代码段2:需求:2,一个子串在整串中出现的次数。 "nbaernbatynbauinbaopnba
package cn.itcast.p1.string.test;
/*
* 2,一个子串在整串中出现的次数。
* "nbaernbatynbauinbaopnba"
* 思路:
* 1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
* 2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
* 而剩余字符串的起始位是出现位置+子串的长度.
* 3,以此类推,通过循环完成查找,如果找不到就是-1,并对 每次找到用计数器记录。
*
*/
public class StringTest_2 {
/**
* @param args
*/
public static void main(String[] args) {
String str = "nbaernbatnbaynbauinbaopnba";
String key = "nba";
int count = getKeyStringCount_2(str,key);
System.out.println("count="+count);
}
public static int getKeyStringCount_2(String str, String key) {
int count = 0;
int index = 0;
while((index = str.indexOf(key,index))!=-1){
index = index + key.length();
count++;
}
return count;
}
/**
* 获取子串在整串中出现的次数。
* @param str
* @param key
* @return
*/
public static int getKeyStringCount(String str, String key) {
//1,定义计数器。
int count = 0;
//2,定义变量记录key出现的位置。
int index = 0;
while((index = str.indexOf(key))!=-1){
str = str.substring(index+key.length());
count++;
}
return count;
}
}
示例代码段3:需求:3,两个字符串中最大相同的子串。 "qwerabcdtyuiop" * "xcabcdvbn"
package cn.itcast.p1.string.test; /* * 3,两个字符串中最大相同的子串。 * "qwerabcdtyuiop" * "xcabcdvbn" * * 思路: * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。 * 如果存在,短的那个字符串就是最大子串。 * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。 * 如果存在就已找到,就不用在找了。 * * */ public class StringTest_3 { /** * @param args */ public static void main(String[] args) { String s1 = "qwerabcdtyuiop"; String s2 = "xcabcdvbn"; String s = getMaxSubstring(s2, s1); System.out.println("s=" + s); } /** * 获取最大子串 * * @param s1 * @param s2 * @return */ public static String getMaxSubstring(String s1, String s2) { String max = null,min = null; max = (s1.length()>s2.length())?s1:s2; min = max.equals(s1)?s2:s1; System.out.println("max="+max); System.out.println("min="+min); for (int i = 0; i < min.length(); i++) { for(int a = 0,b = min.length()-i; b != min.length()+1; a++,b++){ String sub = min.substring(a, b); // System.out.println(sub); if(max.contains(sub)) return sub; } } return null; } }
示例代码段4:需求模拟一个trim功能一致的方法。去除字符串两端的空白
package cn.itcast.p1.string.test; /* * 4,模拟一个trim功能一致的方法。去除字符串两端的空白 * 思路: * 1,定义两个变量。 * 一个变量作为从头开始判断字符串空格的角标。不断++。 * 一个变量作为从尾开始判断字符串空格的角标。不断--。 * 2,判断到不是空格为止,取头尾之间的字符串即可。 */ public class StringTest_4 { /** * @param args */ public static void main(String[] args) { String s = " ab c "; s = myTrim(s); System.out.println("-" + s + "-"); } public static String myTrim(String s) { int start = 0, end = s.length() - 1; while (start <= end && s.charAt(start) == ' ') { start++; } while (start <= end && s.charAt(end) == ' ') { end--; } return s.substring(start, end + 1); } }
相关推荐
String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证
String,StringBuffer,StringBuilder区别。几乎所有的应用开发都离不开操作字符串,理解字符串的设计和实现以及相关 工具如拼接类的使用,对写出高质量代码是非常有帮助的
String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别
StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段代码:
下面小编就为大家带来一篇浅谈java中String StringBuffer StringBuilder的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
介绍了String、StringBuffer、StringBuilder的使用方法,以及理论知识
String ,StringBuffer与StringBuilder的区别
stringbuilder用法 String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String...
简单的介绍了String、StringBuffer和StringBuilder的区别
String、StringBuffer 和 StringBuilder 的区别 碎碎念 简单认识这三个对象 String StringBuffer StringBuilder 深入理解 String、StringBuilder、StringBuffer 从设计角度理解 String StringBuilder StringBuffer ...
String及StringBuffer和StringBuilder的区别
string,stringbuffer,stringbuilder
string,stringBuffer,stringBuilder
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间有什么区别呢?下面小编给大家总结了Java中String、StringBuffer、StringBuilder的区别详解,需要的朋友参考下吧
目录StringStringBuffer与StringBuilder总结 String ...StringBuffer与StringBuilder 这两者基本相似,都是可变字符串对象,主要区别为线程是否安全。 总结 最后,引用菜鸟教程下的总结以及相关评论: S
主要介绍了Java 中 String,StringBuffer 和 StringBuilder 的区别及用法的相关资料,需要的朋友可以参考下
String,StringBuilder,StringBuffer
String、StringBuilder以及StringBuffer的区别
主要介绍了java 中String和StringBuffer与StringBuilder的区别及使用方法的相关资料,在开发过程中经常会用到String 这个类进行操作,需要的朋友可以参考下
Java中String,StringBuffer与StringBuilder的区别和用法。