第54-55集:String类的常用方法
String类常用方法
查找:endsWith、startsWith、indexOf、lastIndexOf
比较:equals、equalsIgnoreCase、compareTo
创建并返回一个新的String对象:concat、replace、substring、toLowerCase、toUpperCase、trim
将基本类型数据转换为字符串:valueOf
其它办法:charAt、length
测试String类的equals与==的区别
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
System.out.println(str1 == str2);//str1与str2不是同一个对象
System.out.println(str1.equals(str2));//str1与str2类型相同,引用的数组中的元素也相同
System.out.println(str3 == str4);//str3与str4指向堆中方法区常量池中的同一常量
System.out.println(str3.equals(str4));//同上
System.out.println(str5 == str1);//str1的引用(对象地址)赋值给str5后,str5与str1便指向了同一对象
System.out.println(str6 == str3);//str3的引用(对象地址)赋值给str6后,str6与str3便指向了同一对象(常量池中的常量)
}
测试String类的equalsIgnoreCase
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
//该方法用于忽略大小写进行比较
String str3Case = "DEFEA";
boolean boolean3 = str3.equalsIgnoreCase(str3Case);
System.out.println(boolean3);
}
测试String类的compareTo
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
// //该方法用于比较两个字符之间大小的差值(unnicode编码顺序之间的差值或者字符串长度的差值)
// //从第一个字符开始比较,若用于比较的字符串字符值有不相同的,甭管长度一不一样,返回不相同字符在unnicode编码表中的顺序差值。
// String a1 = "abc";
// String b1 = "abcd";
// int c1 = a1.compareTo(b1);
// System.out.println(c1);
//
// //从第一个字符开始比较,若用于比较的字符串字符值都相同,但长度不一样,则访问它们之间长度的差值。
// String a2 = "abk";
// String b2 = "abcd";
// int c2 = a2.compareTo(b2);
// System.out.println(c2);
测试String类的concat方法
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
// //测试String类的concat方法
// //该方法用于合并并返回一个新的字符串
// String a3 = "abc";
// String b3 = "a";
// String c3 = a3.concat(b3);
// System.out.println(c3);
测试String类的replace方法用于替换字符串中某一个值
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
// //String类的replace方法用于替换字符串中某一个值
// String str7 = str3.replace('e','*');// 经过str3操作后,str3的值没变,str7获得的是str3的复制!!!
// System.out.println(str7);
测试String类的isEmpty方法
// //测试String类的isEmpty方法
// //isEmpty只看字符串长度是不是为0
// //isEmpty若遇到null会报空指针异常。
// //若要判断一个字符串是否为空,最好的办法是String==null||String.isEmpty()
// String a = "";
// if(a==null||a.isEmpty()){
// System.out.println("\"\"");
// }
// String a = new String();
// String b = "";
// String c = null;
// if(c.isEmpty())//这里将会报错NullPointerException
// {
// System.out.println("null");
// }
// if(a.isEmpty())
// {
// System.out.println("String a = new String");
// }
// if(b.isEmpty())
// {
// System.out.println("String b = \"\"");
// }
// if(c==null)
// {
// System.out.println("String c =null");
// }
// if(null == a) {
// System.out.println("String a =null");
// }
// if(a=="")
// {
// System.out.println("a = ''");
// }
//
// //1. 此时a是分配了内存空间,但值为空,是绝对的空,是一种有值(值存在为空而已)
// //2. 此时b是分配了内存空间,值为空字符串,是相对的空,是一种有值(值存在为空字串)
// //3. 此时c是未分配内存空间,无值,是一种无值(值不存在)
String类的indexOf(int/String)方法用于查询字符串中某一个字符第一次出现的索引值
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
// //String类的indexOf(int/String)方法用于查询字符串中某一个字符第一次出现的索引值
// //indexOf重载了很多次,形参有很多,以下测试并不全面,详见JDK中源码
// int a = str3.indexOf(97);//十进制数97对应英文字母a,a的Unicode编码为/u0061
// int b = str3.indexOf('e');//单引号是字符,双引号是字符串,这里倒没啥区别
// int c = str3.indexOf("e");//同上
// int d = str3.indexOf('g');//找不到检索的字符输出-1
// int e = str3.indexOf("ef");
// System.out.println(a);
// System.out.println(b);
// System.out.println(c);
// System.out.println(d);
// System.out.println(e);
String类的lastindexOf()方法用于查询字符串中某一个字符最后一次出现的索引值
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
// //String类的lastindexOf()方法用于查询字符串中某一个字符最后一次出现的索引值
// int f = str3.lastIndexOf('e');
// System.out.println(f);
String类的substring方法用于裁减字符串(从当前索引值开始)
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
// //String类的substring方法用于裁减字符串(从当前索引值开始)
// String str8 = str3.substring(1);//从1截取对象
// System.out.println(str8);
// String str9 = str3.substring(-1);//从-1截取,报错。
// System.out.println(str9);
String类的split方法用于按照指定字符分割字符串
package com.text054;
public class TextString {
public static void main(String[] args){
String str1 = new String("abcd");
String str2 = new String("abcd");
String str3 = "defea";
//String str3 = "aaa";//不能改变字符串引用变量的引用对象
String str4 = "def";
String str5 = str1;
String str6 = str3;
// //String类的split方法用于按照指定字符分割字符串
// String str10 = "aaa,bbb,ccc,ddd";
// String[] strlist = str10.split(",");
// for(int i = 0;i<strlist.length;i++){
// System.out.println(strlist[i]);
// }
测试String类的toLowerCase
// //测试String类的toLowerCase
// //作用是将大写转换为小写
// String a4 = "ABCD";
// String b4 = a4.toLowerCase();
// System.out.println(b4);
测试String类的toUpperCase
// //测试String类的toUpperCase
// //作用是将小写转换为大写
// String a5 = "abcd";
// String b5 = a5.toUpperCase();
// System.out.println(b5);
trim用于去除首尾空格
// //trim用于去除首尾空格
// String str11 = " abc ";
// String str12 = str11.trim();
// System.out.println(str12);
测试String类的charAt
// //测试String类的charAt
// //作用返回指定索引处的字符
// String a6 = "123456789";
// char b6 = a6.charAt(8);
// System.out.println(b6);
测试String类的length方法
// //测试String类的length方法
// String a7 = "sasffasf";
// int b7 = a7.length();
// System.out.println(b7);
toString用于返回调用对象本身
// //toString用于返回调用对象本身
// String str13 = "zxc";
// String str14 = str13.toString();//将str13引用指向的对象赋值给str14
// System.out.println(str14);
// System.out.println(str13==str14);
toCharArray用于将字符串转换为字符数组
// //toCharArray用于将字符串转换为字符数组
// String str15 = "asdf";
// char[] str16 = str15.toCharArray();
// System.out.println(str16);
// for(int i = 0;i<str16.length;i++){
// //System.out.println(str15[i]);//str15不是数组,是字符串,所以它不能这样像数组一样输出
// System.out.println(str16[i]);//str16是字符数组。
//
// }
startwith用于检测字符串前缀是否相符,相符返回true,否则返回false。
// //startwith用于检测字符串前缀是否相符,相符返回true,否则返回false。
// String str17 = "asdfg";
// String str18 = "as";
//
// //测试startsWith(String prefix);
// boolean boolean17 = str17.startsWith("asd");
// System.out.println(boolean17);
//
// //测试startsWith(String prefix,int toffset);从str1索引值为toffset的位置开始比较是否与prefix相等
// boolean boolean18 = str17.startsWith("sdf",1);
// System.out.println(boolean18);
//
endswith用于检测字符串后缀是否相符,相符返回true,否则返回false
// //endswith用于检测字符串后缀是否相符,相符返回true,否则返回false。
// //测试endswith(String suffix);
// boolean boolean22 = str17.endsWith("fg");
// System.out.println(boolean22);
// //没有endswith(String suffix,int toffset);方法
测试valueOf
// //测试valueOf
// //将byte、short、int、long、float、double、char、char[]、boolean、Object转换为字符串
// byte k1 = 1;
// short k2 = 10;
// int k3 = 100;
// long k4 = 1000;
// float k5 = (float)3.012;
// double k6 = 3.012;
// char k7 = 'a';
// char[] k8 = {'a','b','c'};
// boolean k9 = true;
// Object k10 = new Object();
//
// System.out.println(k1);
// System.out.println(k2);
// System.out.println(k3);
// System.out.println(k4);
// System.out.println(k5);
// System.out.println(k6);
// System.out.println(k7);
// System.out.println(k8);
// System.out.println(k9);
// System.out.println(k10);
字符串拼接方法
//字符串拼接方法
String a = "a";
String b = a+1;
System.out.println(b);
//c可指向不同字符串对象【即可变】,但是字符串里的字符不可变【如"a"这个字符串对象中的字符a就不可变】
String c = "a";
c = "b";
System.out.println(c);
}
}