java中容易被忽视的toString()方法

这篇具有很好参考价值的文章主要介绍了java中容易被忽视的toString()方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前一直认为toString就是将数据转换成字符类型,直到最近写出了一个bug才对toString有了新的认识

不同数据类型,toString() 有不同的操作

  • 定义一个student类,包含姓名 String类型、性别 String类型、年龄 int 类型、分数列表 String类型的list类型
public class Student {
    String name;
    String sex;

    int age;

    List<Integer> scoreList;

    public List<Integer> getScoreList() {
        return scoreList;
    }

    public void setScoreList(List<Integer> scoreList) {
        this.scoreList = scoreList;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", scoreList=" + scoreList +
                '}';
    }
}
  • 测试toString方法
    public static void main(String[] args) {
        List<Integer> scoreList = new ArrayList<>();
        scoreList.add(1);
        scoreList.add(2);
        scoreList.add(3);
        Student student = new Student();
        student.setName("ziyuan");
        student.setSex("F");
        student.setScoreList(scoreList);
        System.out.println("student:" + student);

    }
  • 运行结果,toString()方法的解析
toString调用
student:Student{name='ziyuan', sex='F', age=0, scoreList=[1, 2, 3]}

System.out.println输出字符串,通过+实现student对象和"student:“字符串的拼接,其实是调用了student对象的toString()方法。
在toString方法中,“name='” + name : 也是调用了String类型的name变量的toString(),查看源代码得知String的toString方法就是返回本身,所以name.toString() 返回本身name,所以输出name=‘ziyuan’,同理得出sex=‘F’
java中容易被忽视的toString()方法,java,toString
“, age=” + age : age是int类型,int类型是Java中的基本数据类型之一,直接将age变量以字符串的格式拼接在”, age="后面,age因为没有赋值,采用默认值0,故最终输出age=0
“, scoreList=” + scoreList :scoreList是Integer类型的ArrayList列表,拼接调用了ArrayList类型的toString,查看ArrayList中的toString方法如何定义,ArrayList中没有定义toString方法,继续往上找,查看AbstractList中如何定义
java中容易被忽视的toString()方法,java,toString

AbstractList中也没有定义,继续往上找,查看AbstractCollection如何定义,
java中容易被忽视的toString()方法,java,toString
AbstractCollection有定义toString,如下图所示:
java中容易被忽视的toString()方法,java,toString
故最终输出scoreList=[1, 2, 3]

  • ArrayList 重新了toString方法,让数据内容比较直观的展示,但并不是所有的类型都进行了toString方法的重写,比如数组

java中容易被忽视的toString()方法,java,toString
toString方法返回的字符串表示该对象的类型和哈希码 ,如何希望返回实际的值或者其他自定义的值,可以重写toString方法
java中容易被忽视的toString()方法,java,toString文章来源地址https://www.toymoban.com/news/detail-832096.html

到了这里,关于java中容易被忽视的toString()方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 容易忽视的细节:Log4j 配置导致的零点接口严重超时

    作者:vivo 互联网服务器团队- Jiang Ye 本文详细的记录了一次0点接口严重超时的问题排查经历。本文以作者自身视角极具代入感的描绘了从问题定位到具体的问题排查过程,并通过根因分析并最终解决问题。整个过程需要清晰的问题排查思路和丰富的问题处理经验,也离不开

    2023年04月23日
    浏览(43)
  • java中的tostring方法

    1.作用:在Java中,toString() 方法是 Object 类中定义的一个方法。toString() 方法的作用是返回对象的字符串表示。在没有重写 toString() 方法时,默认情况下返回的字符串表示为“类名@哈希码” (包名+类名@对象的16进制内存地址)的形式。 重写 toString() 方法可以自定义返回的字符串

    2024年02月16日
    浏览(38)
  • Java中的equals方法详解,Java中的toString方法

    先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。 ①== 是Java中的比较运算符 ②比较基本类型时,比较的是双方的值 ③比较引用类型时,比较的是双方的地址值 比较结果如下:可以看到==比较的是引用类型数据的地址,想不比较地址就需要用

    2024年02月06日
    浏览(43)
  • Java面试题: == 和 equals() 区别,toString方法

    == :运算符 可以使用在基本数据类型变量和引用数据类型变量中 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同) 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体 补充: == 符

    2024年02月08日
    浏览(47)
  • 7-1 jmu-Java-03面向对象基础-01-构造方法与toString

    String name、int age、boolean gender、int id 所有的变量必须为私有(private)。 注意:属性顺序请严格按照上述顺序依次出现。 分析: 定义一个Person的类,并在类中包含 String name 、 int age 、 boolean gender 、 int id ,并且定义为私有属性( private ) 1.编写无参构造函数:   打印\\\"This i

    2024年02月06日
    浏览(33)
  • Java杂记————object.getClass()和object.class以及Java中的toString()方法的的区别

    (这里补充一下:Class类,它就是一个类,它将普通的类作为它的对象: 每个普通类都只有一个Class对象 普通类的Class对象用getClass()方法或者class来获取     比如    同时我们还可以延伸Field属性类,Constructor构造器类) 需要注意的是: 直接用print之类的函数输出一个对象会

    2024年02月11日
    浏览(44)
  • Java进阶(7)——手动实现LinkedList & 内部node类的实现 & 增删改查的实现 & toString方法 & 源码的初步理解

    1.linkedList的节点,当前,上一个,下一个的思想; 2.根据index找node的方法,根据index确定从头部还是尾部; 3.linkedlist的增删改查的实现,本质是改变节点的信息; 4.递归方法实现自定义链表的toString方法; Java进阶(3)——手动实现ArrayList 源码的初步理解分析 数组插入数据和

    2024年02月11日
    浏览(50)
  • 无线网络容易掉线的原因和解决方法

    我习惯在自己的房间里用笔记本上网,而我的无线路由是放在客厅的,每次上网的时候信号虽然没有满格,但速度还是可以的,完全不影响使用。但是笔记本偶尔还是会发生无线网络掉线的情况,是隔的太远信号不好还是什么原因呢? 无线网络容易掉线的原因 1、如果无线路

    2024年02月07日
    浏览(32)
  • 服务器使用中容易遇见的问题和处理方法

          服务器支撑着整个企业的信息数据,对公司的信息储存、业务开展、正常运作等等环节都具有着至关重要的意义。然而,服务器在日常运行过程中,由于其复杂的硬件结构、繁琐的运行原理,经常会出现一些大大小小的问题困扰着各位。下面精心整理一些服务器的常见

    2024年01月17日
    浏览(45)
  • java根据身份证号计算持有者年龄--超容易

    主要思路很简单: 1.通过当前年份和用户出生年份相减计算出age :用户当年还没过生的话,age要减一。 2.在身份证截取根据“ 月日 ”拼接成开头可以为0的 四位数int值 。根据 当前月日 值和用户 出生月日 对比大小,一步判断age是否要减一。避免了月份判断月份相同等和日期

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包