关于 toString java 的问题
Questions about toString java
我想弄清楚 toString
方法的作用。我在 youtube 上看了很多,也用 google 搜索了很多。但这是我错过的东西。请注意,我总共完成了 java 大约 80 个小时。
我知道 toString
是具有内置函数的方法 (?) 的名称。我应该什么时候使用它?当我混淆字符串和 int/doubles?
第二个问题可以用第一个问题来回答。当我使用这个 toString
时它是如何工作的?和平时一样吗?没有变化?
toString
是对象 class 中的一个方法,它是所有 class 对象的父对象。当您定义自己的自定义 class 时,如果您想以一种易于阅读的方式记录它,以便您了解自定义对象的状态,那么您可以通过重写 Object [=20= 中存在的方法来定义 toString 方法].考虑关注员工 class,例如:
public class Employee {
private int id;
private String name;
..
@Override
public String toString() {
return "id: " + id +" name: " + name;
}
}
现在,当您尝试写入标准输出员工对象时,您将看到:
Employee employee = ...
...
System.out.println(employee);
Output:
id: .. name: ...
如果你不覆盖它,那么 Object 的 toString 将被调用,并且它将以不可读的形式出现,如:
Employee@abbcc..
toString()
returns 调用它的对象的字符串表示形式。
当您在一个对象上调用 toString()
时,它可能会给您一个没有多大意义的字符串。当您将对象传递给 System.out.println()
时,此函数会调用对象的 toString()
方法。
您调用覆盖 class 的 toString()
,因此当对 class 的对象调用 toString()
时,将提供人类可读的字符串。
toString()
对于日志记录、调试或任何时候你想 render/display 一个对象作为字符串非常有用。
tosTring 是一种将 class 转换为字符串的方法。例如:
public class Person
{
private String name;
private String age;
private String address;
@Override
public String toString()
{
return String.format("%10s %2d %20s",name,age,address);
}
}
toString
是每个 Object
上的一种方法,它将内存中的逻辑二进制表示形式转换为人类可读形式的字符串 (String
)。
在 Object.java
中看到的 toString
的默认行为是 return:
class name + @ + memory address in hexadecimal
当您创建自己的 类 时,值得 @Override
这种方法可以在以后轻松找到错误。请参阅 SMA 关于如何执行此操作的回答。大多数框架的 类 已经有这个方法,例如 ArrayList
打印:[object 0's toString(), object 1's toString(), object 2's toString()].
当你向一个字符串对象添加一个任意对象时,比如"hello " + empoyee
,toString
在后台被调用所以它大致变成"hello " + employee.toString()
(我说"roughly"因为 StringBuilder
涉及更多魔法,但作为初学者不必担心)。
主要用于调试和记录。在生产代码中实际使用它并依赖业务逻辑中方法的输出被认为是不好的做法 UI.
我想弄清楚 toString
方法的作用。我在 youtube 上看了很多,也用 google 搜索了很多。但这是我错过的东西。请注意,我总共完成了 java 大约 80 个小时。
我知道 toString
是具有内置函数的方法 (?) 的名称。我应该什么时候使用它?当我混淆字符串和 int/doubles?
第二个问题可以用第一个问题来回答。当我使用这个 toString
时它是如何工作的?和平时一样吗?没有变化?
toString
是对象 class 中的一个方法,它是所有 class 对象的父对象。当您定义自己的自定义 class 时,如果您想以一种易于阅读的方式记录它,以便您了解自定义对象的状态,那么您可以通过重写 Object [=20= 中存在的方法来定义 toString 方法].考虑关注员工 class,例如:
public class Employee {
private int id;
private String name;
..
@Override
public String toString() {
return "id: " + id +" name: " + name;
}
}
现在,当您尝试写入标准输出员工对象时,您将看到:
Employee employee = ...
...
System.out.println(employee);
Output:
id: .. name: ...
如果你不覆盖它,那么 Object 的 toString 将被调用,并且它将以不可读的形式出现,如:
Employee@abbcc..
toString()
returns 调用它的对象的字符串表示形式。
当您在一个对象上调用 toString()
时,它可能会给您一个没有多大意义的字符串。当您将对象传递给 System.out.println()
时,此函数会调用对象的 toString()
方法。
您调用覆盖 class 的 toString()
,因此当对 class 的对象调用 toString()
时,将提供人类可读的字符串。
toString()
对于日志记录、调试或任何时候你想 render/display 一个对象作为字符串非常有用。
tosTring 是一种将 class 转换为字符串的方法。例如:
public class Person
{
private String name;
private String age;
private String address;
@Override
public String toString()
{
return String.format("%10s %2d %20s",name,age,address);
}
}
toString
是每个 Object
上的一种方法,它将内存中的逻辑二进制表示形式转换为人类可读形式的字符串 (String
)。
在 Object.java
中看到的 toString
的默认行为是 return:
class name + @ + memory address in hexadecimal
当您创建自己的 类 时,值得 @Override
这种方法可以在以后轻松找到错误。请参阅 SMA 关于如何执行此操作的回答。大多数框架的 类 已经有这个方法,例如 ArrayList
打印:[object 0's toString(), object 1's toString(), object 2's toString()].
当你向一个字符串对象添加一个任意对象时,比如"hello " + empoyee
,toString
在后台被调用所以它大致变成"hello " + employee.toString()
(我说"roughly"因为 StringBuilder
涉及更多魔法,但作为初学者不必担心)。
主要用于调试和记录。在生产代码中实际使用它并依赖业务逻辑中方法的输出被认为是不好的做法 UI.