Object类的方法-(重点)toString()

方法签名:public String toString()

① 默认情况下,toString()返回的是“对象的运行时类型 @ 对象的hashCode值的十六进制形式"

② 在进行String与其它类型数据的连接操作时,自动调用toString()方法

Date now=new Date();
System.out.println(“now=”+now);  //相当于
System.out.println(“now=”+now.toString()); 

③ 如果我们直接System.out.println(对象),默认会自动调用这个对象的toString()

因为Java的引用数据类型的变量中存储的实际上时对象的内存地址,但是Java对程序员隐藏内存地址信息,所以不能直接将内存地址显示出来,所以当你打印对象时,JVM帮你调用了对象的toString()。

④ 可以根据需要在用户自定义类型中重写toString()方法 如String 类重写了toString()方法,返回字符串的值。

s1="hello";
System.out.println(s1);//相当于System.out.println(s1.toString()); 

例如自定义的Person类:

public class Person {  
    private String name;
    private int age;

    @Override
    public String toString() {
        return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}

 

没有重写前

package chapter07_oop2_teacher.src.com.atguigu07.object.tostring;

import java.io.File;
import java.util.Date;

/**
 * @author 尚硅谷-宋红康
 * @create 1:04
 */
public class ToStringTest {
    public static void main(String[] args) {
        User u1 = new User("Tom",12);
        System.out.println(u1.toString());//com.atguigu07.object.tostring.User@1b6d3586 --> User{ name = Tom, age = 12}
        System.out.println(u1);//com.atguigu07.object.tostring.User@1b6d3586 -> User{ name = Tom, age = 12}

        String s1 = new String("hello");
        System.out.println(s1.toString());

        File file = new File("d:\\abc.txt");
        System.out.println(file);

        Date date = new Date();
        System.out.println(date);
    }
}

class User{

    String name;
    int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //手动实现toString()
//    @Override
//    public String toString() {
//        return "User{ name = " + name + ", age = " + age + "}";
//
//    }


//    @Override
//    public String toString() {
//        return "User{" +
//                "name='" + name + '\'' +
//                ", age=" + age +
//                '}';
//    }
}

 

package chapter07_oop2_teacher.src.com.atguigu07.object.tostring;

import java.io.File;
import java.util.Date;

/**
 * @author 尚硅谷-宋红康
 * @create 1:04
 */
public class ToStringTest {
    public static void main(String[] args) {
        User u1 = new User("Tom",12);
        System.out.println(u1.toString());//com.atguigu07.object.tostring.User@1b6d3586 --> User{ name = Tom, age = 12}
        System.out.println(u1);//com.atguigu07.object.tostring.User@1b6d3586 -> User{ name = Tom, age = 12}

        String s1 = new String("hello");
        System.out.println(s1.toString());

        File file = new File("d:\\abc.txt");
        System.out.println(file);

        Date date = new Date();
        System.out.println(date);
    }
}

class User{

    String name;
    int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //手动实现toString()
//    @Override
//    public String toString() {
//        return "User{ name = " + name + ", age = " + age + "}";
//
//    }


//    @Override
//    public String toString() {
//        return "User{" +
//                "name='" + name + '\'' +
//                ", age=" + age +
//                '}';
//    }
}

 

重写后

package chapter07_oop2_teacher.src.com.atguigu07.object.tostring;

import java.io.File;
import java.util.Date;

/**
 * @author 尚硅谷-宋红康
 * @create 1:04
 */
public class ToStringTest {
    public static void main(String[] args) {
        User u1 = new User("Tom",12);
        System.out.println(u1.toString());//com.atguigu07.object.tostring.User@1b6d3586 --> User{ name = Tom, age = 12}
        System.out.println(u1);//com.atguigu07.object.tostring.User@1b6d3586 -> User{ name = Tom, age = 12}

        String s1 = new String("hello");
        System.out.println(s1.toString());

        File file = new File("d:\\abc.txt");
        System.out.println(file);

        Date date = new Date();
        System.out.println(date);
    }
}

class User{

    String name;
    int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //手动实现toString()
//    @Override
//    public String toString() {
//        return "User{ name = " + name + ", age = " + age + "}";
//
//    }


    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

package chapter07_oop2_teacher.src.com.atguigu07.object.tostring;

import java.io.File;
import java.util.Date;

/**
 * @author 尚硅谷-宋红康
 * @create 1:04
 */
public class ToStringTest {
    public static void main(String[] args) {
        User u1 = new User("Tom",12);
        System.out.println(u1.toString());//com.atguigu07.object.tostring.User@1b6d3586 --> User{ name = Tom, age = 12}
        System.out.println(u1);//com.atguigu07.object.tostring.User@1b6d3586 -> User{ name = Tom, age = 12}

        String s1 = new String("hello");
        System.out.println(s1.toString());

        File file = new File("d:\\abc.txt");
        System.out.println(file);

        Date date = new Date();
        System.out.println(date);
    }
}

class User{

    String name;
    int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //手动实现toString()
//    @Override
//    public String toString() {
//        return "User{ name = " + name + ", age = " + age + "}";
//
//    }


    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

相关推荐

  1. toString方法介绍

    2024-04-03 13:40:02       23 阅读
  2. 常用Object方法

    2024-04-03 13:40:02       24 阅读
  3. Objective-C中“description“方法

    2024-04-03 13:40:02       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 13:40:02       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 13:40:02       107 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 13:40:02       90 阅读
  4. Python语言-面向对象

    2024-04-03 13:40:02       98 阅读

热门阅读

  1. 图像随机采样(MATLAB)

    2024-04-03 13:40:02       42 阅读
  2. MySQL中drop、truncate和delete的区别

    2024-04-03 13:40:02       46 阅读
  3. React 掌握及对比常用的8个Hooks,优化及使用场景

    2024-04-03 13:40:02       35 阅读
  4. SQL server 2008 不支持LAG函数

    2024-04-03 13:40:02       35 阅读
  5. thinkphp漏洞复现

    2024-04-03 13:40:02       34 阅读