最近学了java,把一些能拎出来汇总的部分写成帖子,给自己回顾用。
以下代码和执行结果都是我自己亲自执行的,执行结果是可信的。但描述的文案是自己的理解的,可能会有偏差。如存在问题,欢迎指正,以免误导了他人。
public class StringNormalMethod {
public static void main(String[] args){
char[] value = {'0', '1', '2', '3', '4', '5', '6'};
String str3 = new String("abcdefabc");
String str4 = new String("abCDEfabc");
String str5 = new String("abc");
//1. 用字符数组value创建一个String对象:public String(char[] value)
String str1 = new String(value);
System.out.println("【1】str1:"+str1);
//2. 用字符数组以下标x开始的n个字符创建一个String对象:
String str2 = new String(value, 2, 4);
System.out.println("【2】str2:"+str2);
//3. 获取字符串长度:
System.out.println("【3】" + str1 + "的长度:" + str1.length());
//4. 获取字符串某一位置(下标)的字符:
System.out.println("【4】" + str1 + "中下标为5的字符是:" + str1.charAt(5));
//5. 获取字符串的自传:
System.out.println("【5】" + str1 + "的[5,length-1]子串:" + str1.substring(5));
System.out.println("【5】" + str1 + "的[2,5)子串:" + str1.substring(2,5));
//6-1. 字符串比较:按字典顺序进行大小比较(返回值是【对象-参数】的值)
System.out.println("【6-1】" + str4 + "和" + str3 + "比较大小:" + str4.compareTo(str3));//返回:-32
//6-2. 字符串比较:忽略大小写
System.out.println("【6-2】" + str4 + "和" + str3 + "忽略大小写比较:" + str4.compareToIgnoreCase(str3));
//6-3. 字符串比较:是否相等。相等true,不等false
System.out.println("【6-3】" + str4 + "和" + str3 + "比较是否相等" + str4.equals(str3));
//6-4. 字符串比较:是否相等(忽略大小写)
System.out.println("【6-4】" + str4 + "和" + str3 + "忽略大小写比较是否相等:" + str4.equalsIgnoreCase(str3));
//7-1. 查找子串在字符串中的位置:首次出现的位置(下标),没有则返回-1
System.out.println("【7-1】" + str5 + "在" + str3 + "中首次出现的位置:" + str3.indexOf(str5));
System.out.println("【7-1】" + str4 + "在" + str3 + "中首次出现的位置:" + str3.indexOf(str4));
//7-2. 【从后往前】查找子串在字符串中的位置:第一次出现的位置(下标)
System.out.println("【7-2】" + str5 + "在" + str3 + "中最后一次出现的位置:" + str3.lastIndexOf(str5));
//7-3. 从字符串的特定位置开始查找子串:首次出现的位置
System.out.println("【7-3】" + str5 + "在" + str3 + "中从下标2以后首次出现的位置:" + str3.indexOf(str5, 2));
//7-4. 从字符串的特定位置开始【往前】查找子串,第一次出现的位置:
System.out.println("【7-4】" + str5 + "在" + str3 + "中从下标4开始【往前】第一次出现的位置:" + str3.lastIndexOf(str5, 4));
//8. 字符的大小写转换:
System.out.println("【8-1】" + str4 + "转换为全部小写后:" + str4.toLowerCase());
System.out.println("【8-1】" + str4 + "转换为全部大写后:" + str4.toUpperCase());
//9. 字符串两端去空格:
System.out.println("【9】" + "[ ab cd ]去除前后空格后:[" + " ab cd ".trim() + "]");
//10. 将字符串切割成字符串数组:第一个分隔符前面的,即使是空,也存进数组;最后一个分隔符的后面,如果是空,就不存了。
/*split()中的参数是正则表达式,因此,当分隔符是正则中的通配符时,需要使用\进行转义,"\\"转义后才表示一个"\"
* 而在string的双引号""中,表示一个\需要"\\"来表示,综上,split的参数如果要表达一个反斜线“\”,则总共需要2×2=4个反斜线。
* 即:string双引号中的2 × 每个\在正则中需要2个\表示
*
* 同理,如果分隔符是*,则split()的参数应为"\\*"
* */
String str6 = "==abc====def===hig==";
System.out.println("【10】" + str6 + "分隔成数组后:");
String[] subStringArr = str6.split("==");
for(int i = 0; i < subStringArr.length; i++){
System.out.println("subStringArr[" + i + "]:" + subStringArr[i]);
}
String[] subStringA = "\\ab\\cd\\efg".split("\\\\");
System.out.println("【10】\\ab\\cd\\efg分隔成数组后:");
for(int i = 0; i < subStringA.length; i++){
System.out.println(subStringA[i]);
}
String[] subStringB = "*ab*cd*efg".split("\\*");
System.out.println("【10】*ab*cd*efg分隔成数组后:");
for(int i = 0; i < subStringB.length; i++){
System.out.println(subStringB[i]);
}
//11. 基本类型转换为字符串:
System.out.println("【11】" + "[12.30]转换为String类型:" + String.valueOf(12.30));
//12-1. 替换字符(串):替换所有,不支持正则
System.out.println("【12-1】" + str6 + "中的=替换为*后:" + str6.replace('=', '*'));
System.out.println("【12-1】" + str6 + "中的==替换为**后:" + str6.replace("==", "**"));
//12-2. 替换字符串(按正则匹配):替换第一个
System.out.println("【12-2】" + str6 + "中的第一个==替换为**后:" + str6.replaceFirst("==", "**"));
//12-3. 替换字符串(按正则匹配):替换全部
System.out.println("【12-3】" + str6 + "中的==替换为**后:" + str6.replaceAll("==", "**"));
//13. 字符串连接:
System.out.println("【13】" + str1 + "后面连接字符串\"sss\"和字符串\"aaa\":" + str1.concat("sss").concat("aaa"));
//14. 判断字符串的是否以某字符串(String)起始/结尾:也可以指定开头的下标(但不支持指定结尾的下标)
System.out.println("【14-1】" + str1 + "是否以\"01\"开头?:" + str1.startsWith("01"));
System.out.println("【14-2】" + str1 + "从下标2开始,是否以字符\'2\'开始?:" + str1.startsWith("2",2));
System.out.println("【14-3】" + str1 + "是否以\"67\"结尾?:" + str1.endsWith("67"));
//15. 将2个字符串从各自指定的下标开始,比对特定的长度,相等则返回true:
System.out.println("【15】从" + str3 + "的下标0开始,从" + str4 + "的下标6开始,比较3个字符,是否相等?:"
+ str3.regionMatches(0,str4,1,3));
System.out.println("【15】从" + str3 + "的下标6开始,从" + str4 + "的下标0开始,忽略大小写比较3个字符,是否相等?:"
+ str3.regionMatches(true,6,str4,0,3));
//16. 判断字符串中是否包含某字符串:
System.out.println("【16】" + str3 + "中是否包含字符串\"abc\"?:" + str3.contains("abc"));
//17-1. String类转为基本数据类型:Byte,Short,Int,Long,Float,Double
System.out.println("【17-1】" + "a123a" + "转换为byte:" + Byte.parseByte("123"));
System.out.println("【17-1】" + str1 + "转换为Integer:" + Integer.parseInt(str1));
System.out.println("【17-1】" + "a123a" + "转换为Short:" + Short.parseShort("123"));
System.out.println("【17-1】" + str1 + "转换为Long:" + Long.parseLong(str1));
System.out.println("【17-1】" + str1 + "转换为Float:" + Float.parseFloat(str1));
System.out.println("【17-1】" + str1 + "转换为Double:" + Double.parseDouble(str1));
//17-2. 基本类型转换为String类:
System.out.println("【17-2】int、long类型123转换为String :" + String.valueOf(123));
System.out.println("【17-2】char类型'a'转换为String :" + String.valueOf('a'));
System.out.println("【17-2】float、double类型123转换为String:" + String.valueOf(123.45));
System.out.println("【17-2】boolean类型false转换为String :" + String.valueOf(false));
}
}
以上代码的执行结果如下:
【1】str1:0123456
【2】str2:2345
【3】0123456的长度:7
【4】0123456中下标为5的字符是:5
【5】0123456的[5,length-1]子串:56
【5】0123456的[2,5)子串:234
【6-1】abCDEfabc和abcdefabc比较大小:-32
【6-2】abCDEfabc和abcdefabc忽略大小写比较:0
【6-3】abCDEfabc和abcdefabc比较是否相等false
【6-4】abCDEfabc和abcdefabc忽略大小写比较是否相等:true
【7-1】abc在abcdefabc中首次出现的位置:0
【7-1】abCDEfabc在abcdefabc中首次出现的位置:-1
【7-2】abc在abcdefabc中最后一次出现的位置:6
【7-3】abc在abcdefabc中从下标2以后首次出现的位置:6
【7-4】abc在abcdefabc中从下标4开始【往前】第一次出现的位置:0
【8-1】abCDEfabc转换为全部小写后:abcdefabc
【8-1】abCDEfabc转换为全部大写后:ABCDEFABC
【9】[ ab cd ]去除前后空格后:[ab cd]
【10】==abc====def===hig==分隔成数组后:
subStringArr[0]:
subStringArr[1]:abc
subStringArr[2]:
subStringArr[3]:def
subStringArr[4]:=hig
【10】\ab\cd\efg分隔成数组后:
ab
cd
efg
【10】*ab*cd*efg分隔成数组后:
ab
cd
efg
【11】[12.30]转换为String类型:12.3
【12-1】==abc====def===hig==中的=替换为*后:**abc****def***hig**
【12-1】==abc====def===hig==中的==替换为**后:**abc****def**=hig**
【12-2】==abc====def===hig==中的第一个==替换为**后:**abc====def===hig==
【12-3】==abc====def===hig==中的==替换为**后:**abc****def**=hig**
【13】0123456后面连接字符串"sss"和字符串"aaa":0123456sssaaa
【14-1】0123456是否以"01"开头?:true
【14-2】0123456从下标2开始,是否以字符'2'开始?:true
【14-3】0123456是否以"67"结尾?:false
【15】从abcdefabc的下标0开始,从abCDEfabc的下标6开始,比较3个字符,是否相等?:false
【15】从abcdefabc的下标6开始,从abCDEfabc的下标0开始,忽略大小写比较3个字符,是否相等?:true
【16】abcdefabc中是否包含字符串"abc"?:true
【17-1】a123a转换为byte:123
【17-1】0123456转换为Integer:123456
【17-1】a123a转换为Short:123
【17-1】0123456转换为Long:123456
【17-1】0123456转换为Float:123456.0
【17-1】0123456转换为Double:123456.0
【17-2】int、long类型123转换为String :123
【17-2】char类型'a'转换为String :a
【17-2】float、double类型123转换为String:123.45
【17-2】boolean类型false转换为String :false