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

news2025/1/19 17:15:25

之前一直认为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’
在这里插入图片描述
“, age=” + age : age是int类型,int类型是Java中的基本数据类型之一,直接将age变量以字符串的格式拼接在”, age="后面,age因为没有赋值,采用默认值0,故最终输出age=0
“, scoreList=” + scoreList :scoreList是Integer类型的ArrayList列表,拼接调用了ArrayList类型的toString,查看ArrayList中的toString方法如何定义,ArrayList中没有定义toString方法,继续往上找,查看AbstractList中如何定义
在这里插入图片描述

AbstractList中也没有定义,继续往上找,查看AbstractCollection如何定义,
在这里插入图片描述
AbstractCollection有定义toString,如下图所示:
在这里插入图片描述
故最终输出scoreList=[1, 2, 3]

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

在这里插入图片描述
toString方法返回的字符串表示该对象的类型和哈希码 ,如何希望返回实际的值或者其他自定义的值,可以重写toString方法
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1458195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全工程师必知的WEB知识

作为一名网络安全工程师&#xff0c;尤其是WEB渗透测试工程师&#xff0c;必须掌握一些WEB相关的基础知识&#xff0c;下面重点从WEB服务架构、浏览器请求过程、服务器操作系统、WEB应用服务器、数据库系统、动态网站脚本语言、WEB前端框架等。 1. Web服务架构 Web服务主要分…

sensitive-word v0.13 特性版本发布 支持英文单词全词匹配

拓展阅读 sensitive-word-admin v1.3.0 发布 如何支持分布式部署&#xff1f; sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word 基于 DFA 算法实现的高性能敏感词工具介绍 更多技术交流 业务背景 对于英文单词 Disburse 之类的&#xff0c;其中的 sb 字母会被…

【Qt学习】QWidget的windowOpacity属性介绍与实例使用(双重检查的引入)

文章目录 1. windowOpacity 介绍2. 使用实例3. 题外话 - 双重检查&#xff08;doubleCheck&#xff09;代码资源 1. windowOpacity 介绍 我们可以查阅qt的官方文档&#xff0c;进行总结&#xff1a; windowOpacity() 表示窗口的不透明度级别。有效的范围是从1.0&#xff08;完…

学习总结19

# 奶牛的耳语 ## 题目描述 在你的养牛场&#xff0c;所有的奶牛都养在一排呈直线的牛栏中。一共有 n 头奶牛&#xff0c;其中第 i 头牛在直线上所处的位置可以用一个整数坐标 pi(0< pi < 10^8) 来表示。在无聊的日子里&#xff0c;奶牛们常常在自己的牛栏里与其它奶牛交…

【天衍系列 05】Flink集成KafkaSink组件:实现流式数据的可靠传输 高效协同

文章目录 01 KafkaSink 版本&导言02 KafkaSink 基本概念03 KafkaSink 工作原理1.初始化连接2.定义序列化模式3.创建KafkaSink算子4.创建数据源5.将数据流添加到KafkaSink6.内部工作机制 04 KafkaSink参数配置05 KafkaSink 应用依赖06 KafkaSink 快速入门6.1 包结构6.2 项目…

《Solidity 简易速速上手小册》第5章:智能合约的安全性(2024 最新版)

文章目录 5.1 安全性的重要性5.1.1 基础知识解析深入理解安全性的多维度影响智能合约安全的关键要素 5.1.2 重点案例&#xff1a;防止重入攻击案例 Demo&#xff1a;构建一个防重入的提款合约案例代码WithdrawContract.sol 测试和验证拓展功能 5.1.3 拓展案例 1&#xff1a;预防…

设计模式二:代理模式

1、什么是动态代理 可能很多小伙伴首次接触动态代理这个名词的时候&#xff0c;或者是在面试过程中被问到动态代理的时候&#xff0c;不能很好的描述出来&#xff0c;动态代理到底是个什么高大上的技术。不方&#xff0c;其实动态代理的使用非常广泛&#xff0c;例如我们平常使…

【网站项目】059课程答疑系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

网络原理 - HTTP/HTTPS(3)

HTTP请求 认识请求"报头" header的整体的格式也是"键值对"的结构. 每个键值对占一行,键和值之间使用分号进行分割. 报头的种类有很多,此处仅介绍几个常见的. Host 表示服务器主机的地址和端口.(Host和URL中的ip地址端口啥的,绝大部分情况下都是一样的,少…

【力扣每日一题】力扣105从前序与中序遍历序列构造二叉树

题目来源 力扣105从前序与中序遍历序列构造二叉树 题目概述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 思路分析 前序遍历的顺序是&#x…

BERT架构简介

一、BERT模型架构 BERT沿用原始Transformer模型中的编码器层&#xff0c;具有编码器的堆叠。但BERT没有使用解码器层&#xff0c;因此没有掩码多头注意力子层。&#xff08;BERT的设计者认为&#xff0c;对序列后续部分进行掩码会阻碍注意力过程&#xff09;。于是&#xff0c;…

Java安全实现微信消息提醒女友喝水(自动化消息定时 + 间隔重复发送)

注意 本文基于Window系统来进行讲解&#xff0c;该程序要求当前PC端微信处于运行状态 前提准备 配置PC端微信的快捷键 保持默认就好&#xff0c;这一步主要是为了避免出现微信快捷键与其他软件冲突时&#xff0c;修改快捷键后要针对性修改代码内容 Robot 类 该功能实现主要利…

极智芯 | 解读NVIDIA RTX5090 又是一波被禁售的节奏

欢迎关注我的公众号「极智视界」,获取我的更多技术分享 大家好,我是极智视界,本文分享一下 解读NVIDIA RTX5090 又是一波被禁售的节奏。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 按 NVIDIA GPU …

分布式锁的应用场景及实现

文章目录 分布式锁的应用场景及实现1. 应用场景2. 分布式锁原理3. 分布式锁的实现3.1 基于数据库 分布式锁的应用场景及实现 1. 应用场景 电商网站在进行秒杀、特价等大促活动时&#xff0c;面临访问量激增和高并发的挑战。由于活动商品通常是有限库存的&#xff0c;为了避免…

MySQL学习记录——십사 使用C访问MySQL

文章目录 1、准备工作2、操作3、select 1、准备工作 root用户的mysql下&#xff0c;创建一个普通用户&#xff0c;创建一个库&#xff0c;通过这个库给普通用户所有权限 create user connectorlocalhost identified by 123456;create database conn;grant all on conn.* to c…

Python中HTTP请求的基本方法:穿越网络的魔法咒语

在网络世界中&#xff0c;HTTP请求就像是对服务器的“魔法咒语”&#xff0c;它能让我们的Python程序与远方的服务器进行沟通&#xff0c;获取或发送数据。今天&#xff0c;我们就来聊聊Python中HTTP请求的基本方法&#xff0c;看看这些“咒语”是如何施展的。 首先&#xff0…

好书推荐丨《细说机器学习:从理论到实践》

文章目录 写在前面机器学习推荐图书内容简介编辑推荐作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本有关机器学习的全新正版书籍&#xff0c;对机器学习、人工智能感兴趣的小伙伴们快来看看吧~ 机器学习 机器学习&#xff08;Machine Learning, ML&…

Go应用性能分析实战

Go很适合用来开发高性能网络应用&#xff0c;但仍然需要借助有效的工具进行性能分析&#xff0c;优化代码逻辑。本文介绍了如何通过go test benchmark和pprof进行性能分析&#xff0c;从而实现最优的代码效能。原文: Profiling Go Applications in the Right Way with Examples…

实现VLAN间通信以太网链路聚合与交换机堆叠、集群华为ICT网络赛道

10.实现VLAN间通信 10.1.使用路由器实现VLAN间通信 使用路由器物理接口 路由器三层接口作为网关&#xff0c;转发本网段前往其它网段的流量。 路由器三层接口无法处理携带VLAN Tag的数据帧&#xff0c;因此交换机上联路由器的接口需配置为Access. 路由器的一个物理接口作为一…

两次网脱+疑难白内障,眼科医生刀尖起舞为他挽回光明!

“不错&#xff0c;挺清楚的”“文件能看清了”“墙上的小字也能看见了”…… “好啦好啦&#xff0c;快别嘚瑟了&#xff01;”妻子在一旁抿嘴笑。 昨天刚做完白内障手术的Y先生&#xff0c;打开纱布后如释重负的心情溢于言表。 同坐在一间复查室里的&#xff0c;还有几位老…