如何在JAVA中重写toString()方法

Python022

如何在JAVA中重写toString()方法,第1张

string是一个对象,但也可以用基本类型创建的方式来创建,例如:

String s="abababababa"// 基本类型创建的方式

String s= new String("asdsad")//对象

java里,所有的类,不管是java库里面的类,或者是你自己创建的类,全部是从object这个类继承的。object里有一个方法就是toString(),那么其实所有的类创造的时候,都有一个toString的方法。java输出用的函数print()是不接受对象直接输出的,只接受字符串或者数字之类的输出。例如:

class Acccc

{}

Acccc s1 = new Acccc()

System.out.print(s1)

按照print接受的类型来说,s1是不能直接输出的,那么是否代表这个是不能编译运行的呢?当然不是。因为当print检测到输出的是一个对象而不是字符或者数字时,那么它会去调用这个对象类里面的toString 方法。

即使你没有创建,因为是所有的类都是集成object类,所以自然也继承了这个方法。所以默认情况下,你输出一个对象,会调用这个对象继承的toString方法,而object里的这个方法,默认的功能是返回这个对象的名称。

class A

{

String toString()

return “cao”;

}

class B

{

public static void main(String [] args)

{

A x1 = new A()

System.out.println(x1)//输出就是"cao"……

}

}

首先你得贴出你的代码来才知道哪里有问题,我简单理解为将list toString

import com.study.pojo.Student

import java.util.ArrayList

import java.util.List

public class MyTest {

public static void main(String[] args) {

Student student = new Student("xiaoming",13,"male")

Student student2 = new Student("xiaozhu",13,"male")

Student student3 = new Student("xiaohei",13,"woman")

Student student4 = new Student("xiaobai",13,"woman")

List<Student>students = new ArrayList<>()

students.add(student)

students.add(student2)

students.add(student3)

students.add(student4)

System.out.println(toString(students))

}

public static String toString(List<Student>students) {

if (students.size()>0){

StringBuffer sb = new StringBuffer("[")

for (Student stu:students) {

sb.append(stu.getName()+" ").append(stu.getAge()+" ").append(stu.getSex()+" \r\n")

}

sb.append(" ]")

return sb.toString()

}

return ""

}

}