Sea*_*oyd 82
来自Object.toString()文档:
返回对象的字符串表示形式.通常,toString方法返回一个"文本表示"此对象的字符串.结果应该是一个简洁但信息丰富的表示,便于人们阅读.建议所有子类都重写此方法.
类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符"@"和对象的哈希码的无符号十六进制表示组成.换句话说,此方法返回一个等于值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Run Code Online (Sandbox Code Playgroud)
例:
String[] mystr ={"a","b","c"};
System.out.println("mystr.toString: " + mystr.toString());
output:- mystr.toString: [Ljava.lang.String;@13aaa14a
Run Code Online (Sandbox Code Playgroud)
小智 40
使用String toString:每当你需要在String表单中探索名为value的构造函数时,你可以简单地使用String toString ...作为一个例子......
package pack1;
import java.util.*;
class Bank {
String n;
String add;
int an;
int bal;
int dep;
public Bank(String n, String add, int an, int bal) {
this.add = add;
this.bal = bal;
this.an = an;
this.n = n;
}
public String toString() {
return "Name of the customer.:" + this.n + ",, "
+ "Address of the customer.:" + this.add + ",, " + "A/c no..:"
+ this.an + ",, " + "Balance in A/c..:" + this.bal;
}
}
public class Demo2 {
public static void main(String[] args) {
List<Bank> l = new LinkedList<Bank>();
Bank b1 = new Bank("naseem1", "Darbhanga,bihar", 123, 1000);
Bank b2 = new Bank("naseem2", "patna,bihar", 124, 1500);
Bank b3 = new Bank("naseem3", "madhubani,bihar", 125, 1600);
Bank b4 = new Bank("naseem4", "samastipur,bihar", 126, 1700);
Bank b5 = new Bank("naseem5", "muzafferpur,bihar", 127, 1800);
l.add(b1);
l.add(b2);
l.add(b3);
l.add(b4);
l.add(b5);
Iterator<Bank> i = l.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
Run Code Online (Sandbox Code Playgroud)
...将这个程序复制到你的eclipse中,然后运行它......你会得到关于String toString的想法......
And*_*s_D 34
该toString()方法返回对象的文本表示.基本实现已经包含在内,java.lang.Object因为所有从java.lang.Object它继承的对象都保证Java中的每个对象都有这个方法.
覆盖该方法总是一个好主意,特别是在调试方面,因为调试器通常会根据toString()方法的结果显示对象.因此,请使用有意义的实现,但将其用于技术目的.应用程序逻辑应该使用getter:
public class Contact {
private String firstName;
private String lastName;
public Contact (String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {return firstName;}
public String getLastName() {return lastName;}
public String getContact() {
return firstName + " " + lastName;
}
@Override
public String toString() {
return "["+getContact()+"]";
}
}
Run Code Online (Sandbox Code Playgroud)
cle*_*tus 15
它可以选择在应用程序的上下文中使用,但更常用于调试目的.例如,当您在IDE中遇到断点时,读取有意义toString()的对象比检查其成员要容易得多.
对toString()方法应该做什么没有固定的要求.按照惯例,大多数情况下,它会告诉您类的名称和相关数据成员的值.通常,toString()在IDE中自动生成方法.
依赖于toString()方法的特定输出或在程序中解析它是一个坏主意.无论你做什么,都不要走那条路.
小智 12
toString()返回对象的字符串/文本表示.通常用于调试,日志记录等诊断目的,toString()方法用于读取有关对象的有意义的详细信息.
将对象传递给println,print,printf,String.format(),assert或字符串连接运算符时,会自动调用它.
类Object中toString()的默认实现返回一个字符串,该字符串由此对象的类名后跟@符号和此对象的哈希码的无符号十六进制表示形式,使用以下逻辑,
getClass().getName() + "@" + Integer.toHexString(hashCode())
Run Code Online (Sandbox Code Playgroud)
例如,以下内容
public final class Coordinates {
private final double x;
private final double y;
public Coordinates(double x, double y) {
this.x = x;
this.y = y;
}
public static void main(String[] args) {
Coordinates coordinates = new Coordinates(1, 2);
System.out.println("Bourne's current location - " + coordinates);
}
}
Run Code Online (Sandbox Code Playgroud)
版画
Bourne's current location - Coordinates@addbf1 //concise, but not really useful to the reader
Run Code Online (Sandbox Code Playgroud)
现在,覆盖Coordinates类中的toString(),如下所示,
@Override
public String toString() {
return "(" + x + ", " + y + ")";
}
Run Code Online (Sandbox Code Playgroud)
结果是
Bourne's current location - (1.0, 2.0) //concise and informative
Run Code Online (Sandbox Code Playgroud)
在包含对这些对象的引用的集合上调用方法时,重写toString()的用处变得更加有用.例如,以下内容
public static void main(String[] args) {
Coordinates bourneLocation = new Coordinates(90, 0);
Coordinates bondLocation = new Coordinates(45, 90);
Map<String, Coordinates> locations = new HashMap<String, Coordinates>();
locations.put("Jason Bourne", bourneLocation);
locations.put("James Bond", bondLocation);
System.out.println(locations);
}
Run Code Online (Sandbox Code Playgroud)
版画
{James Bond=(45.0, 90.0), Jason Bourne=(90.0, 0.0)}
Run Code Online (Sandbox Code Playgroud)
而不是这个,
{James Bond=Coordinates@addbf1, Jason Bourne=Coordinates@42e816}
Run Code Online (Sandbox Code Playgroud)
很少有实现指针,
为返回的字符串中包含的所有实例字段提供访问器/ getter.例如,在Coordinates类中,
public double getX() {
return x;
}
public double getY() {
return y;
}
Run Code Online (Sandbox Code Playgroud)toString()方法的全面介绍在本书的第10项,Effective Java™,第二版,作者Josh Bloch.
每当您在String上下文中访问Object(不是String)时,编译器都会在封面下调用toString().
这就是为什么
Map map = new HashMap();
System.out.println("map=" + map);
Run Code Online (Sandbox Code Playgroud)
通过在您自己的类中重写Object的标准toString(),您可以使您的对象在String上下文中也很有用.
(并将其视为一个黑盒子!永远不要将内容用于除了呈现给人类之外的任何其他内容)
编码:
public class Test {
public static void main(String args[]) {
ArrayList<Student> a = new ArrayList<Student>();
a.add(new Student("Steve", 12, "Daniel"));
a.add(new Student("Sachin", 10, "Tendulkar"));
System.out.println(a);
display(a);
}
static void display(ArrayList<Student> stu) {
stu.add(new Student("Yuvi", 12, "Bhajji"));
System.out.println(stu);
}
}
Run Code Online (Sandbox Code Playgroud)
Student.java:
public class Student {
public String name;
public int id;
public String email;
Student() {
}
Student(String name, int id, String email) {
this.name = name;
this.id = id;
this.email = email;
}
public String toString(){ //using these toString to avoid the output like this [com.steve.test.Student@6e1408, com.steve.test.Student@e53108]
return name+" "+id+" "+email;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email=email;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
[Steve 12 Daniel,Sachin 10 Tendulkar]
[Steve 12 Daniel,Sachin 10 Tendulkar,Yuvi 12 Bhajji]
如果你没有在Pojo(Student.java)类中使用toString(),你将获得类似的输出[com.steve.test.Student@6e1408, com.steve.test.Student@e53108].为了避免这些问题,我们使用toString()方法.