<> Object类中toString()的实现方式:
[mw_shl_code=java,true]public class Object {
public String toString() {
return getClass().getName() + "@" +Integer.toHexString(hashCode());
}}
[mw_shl_code=applescript,true]<> Object类中toString()的实现方式:
[mw_shl_code=java,true]public class Object {
代码解释:
getClass().getName():
getClass(): Object类的方法, 获取当前对象的类的字节码对象
getClass().getName(): 通过字节码对象获取该类的全名
Integer.toHexString(hashCode())
hashCode(): Object类的方法, 获取当前对象地址值的哈希值
Integer.toHexString(int n): 将参数转换为十六进制数字的字符串
最终:
itheima01Object.Person@75412c2f
1.2 Object类之equals方法
重写equals()的作用:
不重写时, 自定义对象默认继承Object类的equals()方法, 通过 == 比较地址值
但开发时, 一般要重写equals()方法, 让对象根据属性值来判断是否相等
IDEA快捷键: Alt+Insert, 选 equals() and hashCode()
@Override
public boolean equals(Object o) {
// 如果对象地址值相同, 则是同一个对象, 那么属性值肯定相同,认为相等
if (this == o) return true;
// 如果被比较对象为null, 或者不是同一个类型, 则认为不相等
if (o == null || getClass() != o.getClass()) returnfalse;
// 如果不是同一个对象, 且不为null, 且是一个类型, 则向下转型比较子类特有属性
Person person = (Person) o;
// 基本类型属性值用==比较, 引用类型属性值用Objects工具类的equals()比较
[mw_shl_code=java,true]return age == person.age &&
Objects.equals(name, person.name);
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
String s = sdf.format(date);
System.out.println(s);
String s = sdf.format(date);
System.out.println(s);
public interfaceGenericInterface<I> {
public abstract void method(I i);
}
public class GenericInterfaceImpl1implements GenericInterface<String>{
@Override
public void method(String s) {
System.out.println(s);}}
public class GenericInterfaceImpl2<I>implements GenericInterface<I> {
@Override
public void method(I i) {
System.out.println(i);}}
/*
public class Demo04GenericInterface {
public static void main(String[] args) {
GenericInterfaceImpl1 gi1 = new GenericInterfaceImpl1();
GenericInterfaceImpl2<Integer> gi2= new GenericInterfaceImpl2<>();
gi2.method(10);
GenericInterfaceImpl2<Double> gi3= new GenericInterfaceImpl2<>();
gi3.method(8.8);}}
static int i = 1;
public static void main(String args[]){
System.out.println("love " + new ToStringTest());//love java
ToStringTest a = new ToStringTest();
a.i++;
System.out.println("me " + a.i);//me 2 }
public String toString(){
System.out.print("I ");//I return "java ";
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |