方法1、toString( )
属于超级父类Object ,调用或者不调用都会默认调用toString(),具体返回值会根据重写的内容,返回不同的内容;
public class Java14{
private String name;
private int age;
public Java14(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){
return this.name+","+this.age;
}
public static void main(String [] args){
Object md=new Java14("张三",30);
System.out.println(md);
}
}
public class Java13{
public String toString(){
return "你好";
}
public static void main (String [] args){
Object md=new Java13();
System.out.println(md );
}
}
方法2、equals()
==比较的时基本数据类型 , equals比较的是引用数据类型;
== 比较的是【栈】中的地址,用来比较两个对象的【地址】是否相同;
equals 比较的是两个对象的【地址值】是否相同
String中的equals和Object中的equals方法不同, String中的比较的不仅是对象的地址,还会比较内存中的内容,只要满足其中一个条件就行
而Object中的equals方法,对比的是对象的地址,一但地址不同,就会返回false。功能和==相同,所以有时需要重写Object中的equals方法
public class Java18{
String name;
int age;
public Java18(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){return this.name;}
public int getAge(){return this.age;}
public boolean equals(Java18 another){
//如果你自己的对象和传入的对象地址一致 返回true
if(this == another){
return true;
}
//如果地址不一样 我们就比较name和age是否一样 返回true
if(this.name.equals(another.getName())&&this.age == another.getAge()){
return true;
}
return false;
}
public String toString(){
return this.name+","+this.age;
}
public static void main(String [] args){
Java18 md=new Java18("张三",30);
Java18 md1=new Java18("张三",30);
System.out.println(md.equals(md1));
//String s1=new String("123");
//String s2=new String("123");
//System.out.println(s1.equals(s2));
}
}
方法3、hashCode()
生成对象的唯一标识
public class Java19{
private String name;
private int age;
public Java19(String name,int age){
this.name=name;
this.age=age;
}
public static void main(String [] args){
Java19 md=new Java19("张三",20);
Java19 md1=new Java19("张三",20);
//hashCode() 对象md,md1的身份证
System.out.println(md.hashCode());
System.out.println(md1.hashCode());
}
}
方法4、getClass()
获取该对象的所属类
public class Java20{
private String name;
private int age;
public Java20(String name,int age){
this.name=name;
this.age=age;
}
public static void main(String [] args){
Java20 md=new Java20("张三",20);
Java20 md1=new Java20("张三",20);
//getClass 就是看md,md1属于哪个类
System.out.println(md.getClass());
System.out.println(md1.getClass());
}
}
final
1、用在变量
变量名称大写;
不能在修改变量值;
2、用在方法
不允许子类重写
3、用在类
结扎 无法被继承
public class Java21{
//变量名NAME大写 NAME就是常量
public final String NAME="张三";
public static void main (String [] args){
Java21 md = new Java21();
System.out.println(md.NAME);
}
}
public class Java21{
//变量名NAME大写
public final String NAME;
public Java21(String name){
this.NAME=name;
}
public static void main (String [] args){
Java21 md = new Java21("王五");
System.out.println(md.NAME);
}
}
父类
public class Java21{
//变量名NAME大写
public final String NAME="张三";
//加final 表示此方法为最终方法 不允许子类重写
public final void eee(){
System.out.println("040");
}
}
子类继承父类
public class Java22 extends Java21{
public static void main(String [] args){
Java22 md=new Java22();
md.eee();
}
}