Object类
java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。 在对象实例化的时候,最终找的父类就是Object。 如果一个类没有特别指定父类, 那么默认则继承自Object类。例如: 根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。今天我们主要学习其中的2 个:
public String toString() :返回该对象的字符串表示。 public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。
首先附上源码:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
即返回值是:包名.类名@地址
我们自己定义一个类,通常会重写toString,打印出对象的信息
【1】undefined和null没有toString()方法
undefined.toString();//错误 null.toString();//错误
【2】布尔型数据true和false返回对应的'true'和'false'
true.toString();//'true' false.toString();//'false' Boolean.toString();//"function Boolean() { [native code] }"
【3】字符串类型原值返回
'1'.toString();//'1' ''.toString();//'' 'abc'.toString();//'abc' String.toString();//"function String() { [native code] }"
【4】数值类型的情况较复杂
Number.toString();//"function Number() { [native code] }"
1、正浮点数及NaN、Infinity加引号返回
1.23.toString();//'1.23' NaN.toString();//'NaN' Infinity.toString();//'Infinity'
2、负浮点数或加'+'号的正浮点数直接跟上.toString(),相当于先运行toString()方法,再添加正负号,转换为数字
+1.23.toString();//1.23 typeof +1.23.toString();//'number' -1.23.toString();//-1.23 typeof -1.23.toString();//'number'
3、整数直接跟上.toString()形式,会报错,提示无效标记,因为整数后的点会被识别为小数点
0.toString();//Uncaught SyntaxError: Invalid or unexpected token
因此,为了避免以上无效及报错的情况,数字在使用toString()方法时,加括号可解决
(0).toString();//'0' (-0).toString();//'0' (+1.2).toString();//'1.2' (-1.2).toString();//'-1.2' (NaN).toString();//'NaN'
此外,数字类型的toString()方法可以接收表示转换基数(radix)的可选参数,如果不指定此参数,转换规则将是基于十进制。同样,也可以将数字转换为其他进制数(范围在2-36)
var n = 17; n.toString();//'17' n.toString(2);//'10001' n.toString(8);//'21' n.toString(10);//'17' n.toString(12);//'15' n.toString(16);//'11'
【5】对象Object类型及自定义对象类型加括号返回[object Object]
{}.toString();//报错,Unexpected token . ({}).toString();//[object Object] ({a:123}).toString();//[object Object] Object.toString();//"function Object() { [native code] }"
function Person(){ this.name = 'test'; } var person1 = new Person(); person1.toString();//"[object Object]"
equals方法是java.lang.Object类的方法
Object的equals比较的是地址,重写后比较属性值