1.String类中的equals(Object anObject)
1.equals方法并不是String类的实例方法,它原本是Object类的实例方法,只是String继承Object类,将这个方法重写了。
2.所有的java类都默认继承了Object,包括我们自己定义的Java类。只是我们在自定义java类的时候没有使用extends关键字去继承Object类。【一切皆对象】
equals方法的含义是用来做比较的,比较两个对象是否相同。
面试题:”==” 与 equals方法的区别?
“==
”常用来比较基本数据类型,8种基本数据类型有byte、short、long、double、char、int、float、boolean,因为变量直接存储的就是他们的值,所以用"=="去比较,比较的就是他们的值。但是复合数据类型用“==
”比较的是他的堆内存地址【引用地址】。
“equals”对于复合数据类型比较的也是它的堆内存地址(不能作用于基本数据类型的变量)。
由于String类重写了equals方法所以String类“equals”比较的是存储对象的内容是否相等
package com.dd.test;
public class TestMain {
public static void main(String[] args) {
int a =111;
int b =111;
if(a==b) {
System.out.println("相等");
}else {
System.out.println("不相等");
}
System.out.println("--------------");
Person per1 = new Person();
Person per2 = new Person();
//per1=per2;
if(per1==per2) {
System.out.println("相等");
}else {
System.out.println("不相等");
}
System.out.println("--------------");
if (per1.equals(per2)) {
System.out.println("相等");
}else {
System.out.println("不相等");
}
System.out.println("--------------");
String str1 = new String("hello");
String str2 = new String("hello");
if(str1==str2) {
System.out.println("相等");
}else {
System.out.println("不相等");
}
System.out.println("--------------");
if(str1.equals(str2)) {
System.out.println("相等");
}else {
System.out.println("不相等");
}
}
}
7.6.StringBuilder类如何创建对象,有哪些常用方法?
StringBuilder定义:
public final class StringBuilder 一个可变的字符序列
此类提供与StringBuffer相同的API,但不保证线程安全
构造方法:
StringBuilder() 构造一个初始容量为16个字符的空StringBuilder对象。
StringBuilder(CharSequence seq) 通过其他的StringBuilder对象创建一个新的StringBuilder对象
StringBuilder(int capacity) 构造一个由 capacity参数指定的初始容量得空StringBuilder对象。
StringBuilder(String str) 构造一个初始化为指定字符串内容的StringBuilder对象。
package com.StringBuilde;
public class Test1 {
public static void main(String[] args) {
//StringBuilder() 构造一个初始容量为16个字符的空StringBuilder对象。
StringBuilder stringBuilder1=new StringBuilder();
//StringBuilder(CharSequence seq) 通过其他的StringBuilder对象创建一个新的StringBuilder对象
StringBuilder stringBuilder2=new StringBuilder(stringBuilder1);
//StringBuilder(int capacity) 构造一个由 capacity参数指定的初始容量得空StringBuilder对象。
StringBuilder stringBuilder3=new StringBuilder(30);
//StringBuilder(String str) 构造一个初始化为指定字符串内容的StringBuilder对象。
StringBuilder stringBuilder4=new StringBuilder("hello");
}
}
package com.StringBuilde;
public class Test2 {
public static void main(String[] args) {
StringBuilder str1=new StringBuilder();
System.out.println("没有append之前的初始容量=="+str1.capacity());
str1.append("skr");
str1.append("111");
str1.append("true");
str1.append("12.5");
str1.append("果果");
str1.append("skr");
str1.append("111");
str1.append("true");
str1.append("12.5");
str1.append("果果");
//System.out.println("str1=="+str1);
System.out.println("append之后的容量=="+str1.capacity());
//StringBuilder容量扩展规则==当前容量*2+2
System.out.println("charAt(3)=="+str1.charAt(3)); //charAt(3)==1
System.out.println("-------------");
System.out.println("delete(10,14)=="+str1.delete(10,14)); //delete(10,14)==skr111true果果skr111true12.5果果
System.out.println("-------------");
System.out.println("deleteCharAt(3)=="+str1.deleteCharAt(3)); //删除第n个位置的 deleteCharAt(3)==skr11true果果skr111true12.5果果
System.out.println("-------------");
System.out.println("indexOf('r')=="+str1.indexOf("r")); //第一个r出现的位置 indexOf('r')==2
System.out.println("-------------");
System.out.println("lastIndexOf('r')=="+str1.lastIndexOf("r")); //最后一个r出现的位置 lastIndexOf('r')==18
System.out.println("-------------");
System.out.println("insert(11,30)=="+str1.insert(11,30)); // 添加insert(11,30)==skr11true果果30skr111true12.5果果
System.out.println("-------------");
System.out.println("length=="+str1.length()); //长度 length==29
System.out.println("-------------");
System.out.println("replace(8,12,'false')=="+str1.replace(8,12,"false"));
//System.out.println("reverse()=="+str1.reverse()); //倒置
System.out.println("-------------");
System.out.println("substring(5, 9) =="+str1.substring(5, 8));
}
}
7.7.String类与StringBuilder类之间的相互转换
String转换成StringBuilder—》StringBuilder(String str)
StringBuilder转换成String–》StringBuilder的toString()
String的构造方法String(StringBuilder builder)
7.8.StringBuffer类如何创建对象,有哪些常用方法?
StringBuffer定义:
public final class StringBuffer一个可变的字符序列[线程安全]
构造方法
7.9.String类与StringBuffer类之间的相互转换
String转换成StringBuffer—》StringBuffer(String str)
StringBuffer转换成String–》StringBuffer的toString()
String的构造方法String(StringBuffer buffer)
面试题:String、StringBuilder、StringBuffer的区别?