/*
* 多线程使用StringBuffter
* 单线程使用StringBuilder
*/
public class StringBufferTest01 {
public static void main(String arag[]){
int [] arr = {1,2,3,4,5};
System.out.println(arrayToString_1(arr));
System.out.println(arrayToString_2(arr));
}
/*
* 将一个int数组变成字符串,通过字符的连接形式
* 通过每次添加一个字符串常量,来进行,会增加N多个字符常量
*/
public static String arrayToString_1(int [] arr){
String str = "[";
for(int i = 0; i < arr.length ; i++){
if(i!=arr.length-1){
str+=arr[i]+",";
}else{
str+=arr[i]+"]";
}
}
return str;
}
/*
* 将一个int数组变成字符串,通过StringBuilder容器进行连接
* 不断添加数据到数组,最后返回一个字符串
*/
public static String arrayToString_2(int [] arr){
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int i = 0 ; i< arr.length; i++){
if(i!=arr.length-1){
sb.append(arr[i]+",");
}else{
sb.append(arr[i]+"]");
}
}
return sb.toString();
}
}
/*
* 给定一个字符串数组,按照字典顺序进行从小到大的排序
* {"nba","abc","cba","zz","qq","haha",}
*/
public class StringTest01 {
public static void main(String[] args) {
String [] arr = {"nba","abc","cba","zz","qq","haha",};
printArray(arr);
sortString(arr);
System.out.println();
printArray(arr);
}
public static void sortString(String[] arr) {
for(int i = 0; i < arr.length ; i++){
for(int j = i+1; j< arr.length; j++){
if(arr[i].compareTo(arr[j])>0){
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) {
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}
}
}
/*
* 一个子串在字符串中出现的次数
* 1.要找的字符串是否存在,存在先获取字符串的位置,使用indexOf()
* 2.如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找子串
* 而剩余字符串的起始位是出现位置+子串长度
*/
public class StringTest02 {
public static void main(String[] args) {
String str = "nbaernbatnbaynbauinbaopnba";
String key = "nba";
int count = getStringCount(str,key);
System.out.println(count);
}
public static int getStringCount(String str, String key) {
int count = 0;
int index = 0;
while((index = str.indexOf(key,index))!=-1){
index = index + key.length();
count++;
}
return count;
}
}
/*
* 俩个字符串中最大的相同子串
* 1.找到长度较小的字符串
* 2.首先看较小的字符串是否被包含在较大的字符串中,是,直接返回
* 如果不是,将较小的字符串进行长度递减,进行判断,是,直接返回
*/
public class StringTesto3 {
public static void main(String[] args) {
String str = "qwerabcdtyuiop";
String st = "xcabcdvbn";
String sub = getMaxSubString(str,st);
System.out.println(sub);
}
public static String getMaxSubString(String str, String st) {
String max = (str.length()>st.length())?str:st;
String min = (max.equals(str))?st:str;
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); //该方法的结束索引不被包含
if(str.contains(sub)){
return sub;
}
}
}
return null;
}
}
/*
* 去除字符串两端的空白,模拟一个与trim功能一致的方法
*1.定义俩个角标,一个从头开始,一个从尾开始
*2.判断到不是空格为止,取头尾之间的字符串即可
*/
public class StringTest04 {
public static void main(String[] args) {
String s = " ab c ";
String a = myTrim(s);
System.out.println("-"+a+"-");
}
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);
}
}