无需导包直接使用。
在Java中每个类都默认继承Object类,除非声明继承于某个类。 而toString 方法来自于Object 类,作用是: 返回一个字符串,是该Java对象的内存地址经过哈希算法得出的int类型的值在转换成十六进制。。 换句话说,该方法返回一个字符串,它的值大概就是等于: getClass().getName()+’@’+Integer.toHexString(hashCode()) 这是一个内存地址经过哈希算法得出的int类型的值在转换成十六进制的东西。等同的看作Java对象在堆中的内存地址。
如果没有重写tostring 方法?打印对象名是地址。 比如: demoTest_zt.toStringTest@15db9742 很显然这要是在项目开发的时候,不应该是一串看不懂的数字,而应该是符合逻辑的东西; 接下来测试带有tostring方法的时候,Object中的toString方法就要被重写。
所以现在一个最基本的类有什么? 1成员变量 2成员方法 3构造方法 4getset 5tostring
打印这个类的对象名即可。 如果没有,打印出来就是地址值。 如果有,就按照重写的方式打印。
package com.itheima.demo01.Object; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; /* java.lang.Object 类 Object 是类层次结构的根(父)类。 每个类(Person,Student...)都使用 Object 作为超(父)类。 所有对象(包括数组)都实现这个类的方法。 */ public class Demo01ToString{ public static void main(String[] args) { /* Person类默认继承了Object类,所以可以使用Object类中的toString方法 String toString() 返回该对象的字符串表示。 */ Person p = new Person("张三",18); String s = p.toString(); System.out.println(s);包+地址:com.itheima.demo01.Object.Person@75412c2f | abc | Person{name=张三 ,age=18} //直接打印对象的名字,其实就是调用对象的toString p=p.toString(); System.out.println(p);//com.itheima.demo01.Object.Person@5f150435 | abc | Person{name=张三 ,age=18} System.out.println(p.toString());//同上 //看一个类是否重写了toString,直接打印这个类的对象即可,如果没有重写toString方法那么打印的是对象的地址值 Random r = new Random(); System.out.println(r);//java.util.Random@3f3afe78 没有重写toString方法 Scanner sc = new Scanner(System.in); System.out.println(sc);//java.util.Scanner[delimiters=\p{javaWhitespace}+.. 重写toString方法 ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); System.out.println(list);//[1, 2, 3] 重写toString方法 } } package demo01; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }使用反射技术,判断o是否是Person类型 等效于 obj instanceof Person
一般来说选择这个。
上面有代码。