企业网站的建设电话咨询,个人做网站的时代已经过去,wordpress无限加载插件,免费做网站手机软件Object 是 Java 类库中的一个特殊类#xff0c;也是所有类的父类。也就是说#xff0c;Java 允许把任何类型的对象赋给 Object 类型的变量。当一个类被定义后#xff0c;如果没有指定继承的父类#xff0c;那么默认父类就是 Object 类。因此#xff0c;以下两个类表示的含…Object 是 Java 类库中的一个特殊类也是所有类的父类。也就是说Java 允许把任何类型的对象赋给 Object 类型的变量。当一个类被定义后如果没有指定继承的父类那么默认父类就是 Object 类。因此以下两个类表示的含义是一样的。
public class MyClass{…}等价于
public class MyClass extends Object {…}Java 所有的类都是 Object 类的子类任何 Java 对象都可以调用 Object 类的方法。
Object 类的常用方法
toString() 方法
toString() 方法返回该对象的字符串当程序输出一个对象或者把某个对象和字符串进行连接运算时系统会自动调用该对象的 toString() 方法返回该对象的字符串表示。
Object 类的 toString() 方法返回“运行时类名十六进制哈希码”格式的字符串但很多类都重写了 Object 类的 toString() 方法用于返回可以表述该对象信息的字符串。
哈希码hashCode每个 Java 对象都有哈希码属性哈希码可以用来标识对象提高对象在集合操作中的执行效率。
代码示例
// 定义Demo类实际上继承Object类
class Demo {}public class ObjectDemo {public static void main(String[] args) {Demo d new Demo(); // 实例化Demo对象System.out.println(不加toString()输出 d);System.out.println(加上toString()输出 d.toString());}
}输出结果为
不加toString()输出Demo15db9742
加上toString()输出Demo15db9742随机输出了一些地址信息加和不加 toString() 的最终输出结果是一样的也就是说对象输出时一定会调用 Object 类中的 toString() 方法打印内容。所以利用此特性就可以通过 toString() 取得一些对象的信息如下面代码。
public class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}public String toString() {return 姓名 this.name 年龄 this.age;}public static void main(String[] args) {Person per new Person(百度, 30);// 实例化Person对象System.out.println(对象信息 per);// 打印对象调用toString()方法}
}输出结果为
对象信息姓名百度年龄30Person 类中重写了 Object 类中的 toString() 方法这样直接输出对象时调用的是被子类重写过的 toString() 方法。
equals() 方法
在字符串比较时介绍过两种比较方法分别是运算符和 equals() 方法运算符是比较两个引用变量是否指向同一个实例equals() 方法是比较两个对象的内容是否相等通常字符串的比较只是关心内容是否相等。
其使用格式如下
boolean result obj.equals(Object o);其中obj 表示要进行比较的一个对象o 表示另一个对象。
要求用户从键盘输入登录用户名和密码当用户输入的用户名等于 admin 并且密码也等于 admin 时则表示该用户为合法用户提示登录成功否则提示用户名或者密码错误信息。
在这里使用 equals() 方法将用户输入的字符串与保存 admin 的字符串对象进行比较具体的代码如下
import java.util.Scanner;public class Test {// 验证用户名和密码public static boolean validateLogin(String uname, String upwd) {boolean con false;if (uname.equals(admin) upwd.equals(admin)) { // 比较两个 String 对象con true;} else {con false;}return con;}public static void main(String[] args) {Scanner input new Scanner(System.in);System.out.println(------欢迎使用大数据管理平台------);System.out.println(用户名);String username input.next(); // 获取用户输入的用户名System.out.println(密码);String pwd input.next(); // 获取用户输入的密码boolean con validateLogin(username, pwd);if (con) {System.out.println(登录成功);} else {System.out.println(用户名或密码有误);}}
}上述代码在 validateLogin() 方法中又使用 equals() 方法将两个 String 类型的对象进行了比较当 uname 对象与保存 admin 的 String 对象相同时uname.equals(“admin”) 为 true与此相同当 upwd 对象与保存 admin 的 String 对象相同时upwd.equals(“admin”) 为 true。当用户输入的用户名和密码都为 admin 时表示该用户为合法用户提示登录成功信息否则提示用户名或密码有误的错误信息。
getClass() 方法
getClass() 方法返回对象所属的类是一个 Class 对象。通过 Class 对象可以获取该类的各种信息包括类名、父类以及它所实现接口的名字等。
对 String 类型调用 getClass() 方法然后输出其父类及实现的接口信息。代码如下
public class Test {public static void printClassInfo(Object obj) {// 获取类名System.out.println(类名 obj.getClass().getName());// 获取父类名System.out.println(父类 obj.getClass().getSuperclass().getName());System.out.println(实现的接口有);// 获取实现的接口并输出for (int i 0; i obj.getClass().getInterfaces().length; i) {System.out.println(obj.getClass().getInterfaces()[i]);}}public static void main(String[] args) {String strObj new String();printClassInfo(strObj);}
}该程序的运行结果如下
类名java.lang.String
父类java.lang.Object实现的接口有
interface java.io.Serializable
interface java.lang.Comparable
interface java.lang.CharSequence接收任意引用类型的对象
既然 Object 类是所有对象的父类则所有的对象都可以向 Object 进行转换在这其中也包含了数组和接口类型即一切的引用数据类型都可以使用 Object 进行接收。
interface A {public String getInfo();
}class B implements A {public String getInfo() {return Hello World!!!;}
}public class ObjectDemo04 {public static void main(String[] args) {// 为接口实例化A a new B();// 对象向上转型Object obj a;// 对象向下转型A x (A) obj;System.out.println(x.getInfo());}
}输出结果为
Hello World!!!我们可以发现虽然接口不能继承一个类但是依然是 Object 类的子类因为接口本身是引用数据类型所以可以进行向上转型操作。
同理也可以使用 Object 接收一个数组因为数组本身也是引用数据类型。
public class ObjectDemo {public static void main(String[] args) {int temp[] { 1, 3, 5, 7, 9 };// 使用object接收数组Object obj temp;// 传递数组引用print(obj);}public static void print(Object o) {// 判断对象的类型if (o instanceof int[]) {// 向下转型int x[] (int[]) o;// 循环输出for (int i 0; i x.length; i) {System.out.print(x[i] \t);}}}
}输出结果为
1 3 5 7 9使用 Object 接收一个整型数组因为数组本身属于引用数据类型所以可以使用 Object 接收数组内容在输出时通过 instanceof 判断类型是否是一个整型数组。