之前一直认为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]文章来源:https://www.toymoban.com/news/detail-832096.html
- ArrayList 重新了toString方法,让数据内容比较直观的展示,但并不是所有的类型都进行了toString方法的重写,比如数组
toString方法返回的字符串表示该对象的类型和哈希码 ,如何希望返回实际的值或者其他自定义的值,可以重写toString方法
文章来源地址https://www.toymoban.com/news/detail-832096.html
到了这里,关于java中容易被忽视的toString()方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!