toString方法用于表示对象值的字符串.
绝大多数的toString方法遵循这样的格式:类的名字,随后是一对方括号括起来的域值.下面是Employee类中的toString方法的实现(后面附上完整程序):
public String toString()
{
return"Employee[name"+name+",salary="+salary+",hireDay="+hireDay+"]";
}
实际上,还可以设计的更好一些,最好通过调用getClass().getName()得到类名得字符串,而不要将类名硬加到toString方法中.
public String toString()
{
return getClass().getName()+"[name+"+name+",salary="+salary+
",hireDay="+hireDay+"]";
}
toString方法也可以供子类调用.当然在设计子类时也应该定义自己得toString方法,并将子类得描述添加进去.如果超类使用了getClass().getName(),那么子类仅调用super.toString()就可以了,例如,下面是Manager类中的toString方法:
Class Manager extends Employee
{
.......
public String toString()
{
return super.toString()
+"[bonus="+bonus+"]";
}
}
调用toString:只要对象与一个字符串通过操作符"+"连接起来,java编译就会自动地调用toString方法,以便获得这个对象字符串描述.例如:
Point p=new Point(10,20);
String message="The current position is"+p;
//automatically invokes p.toString()
强烈建议为自己编写的每一个类增加toString方法.这样不仅自己受益,而且所有使用这个类的程序员也都会受益菲浅.
下面这个程序实现了Employee和Manager类的toString,equals和hashCode方法.
import java.util.*;
public class EqualsTest { public static void main(String[] args) { Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15); Employee alice2 = alice1; Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15); Employee bob = new Employee("Bob Brandson", 50000, 1989, 10, 1);
System.out.println("alice1 == alice2: " + (alice1 == alice2));
System.out.println("alice1 == alice3: " + (alice1 == alice3));
System.out.println("alice1.equals(alice3): " + alice1.equals(alice3));
System.out.println("alice1.equals(bob): " + alice1.equals(bob));
System.out.println("bob.toString(): " + bob);
Manager carl = new Manager("Carl Cracker", 80000, 1987, 12, 15); Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setBonus(5000); System.out.println("boss.toString(): " + boss); System.out.println("carl.equals(boss): " + carl.equals(boss)); System.out.println("alice1.hashCode(): " + alice1.hashCode()); System.out.println("alice3.hashCode(): " + alice3.hashCode()); System.out.println("bob.hashCode(): " + bob.hashCode()); System.out.println("carl.hashCode(): " + carl.hashCode()); } }
class Employee { public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireDay = calendar.getTime(); }
public String getName() { return name; }
public double getSalary() { return salary; }
public Date getHireDay() { return hireDay; }
public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; }
public boolean equals(Object otherObject) { // a quick test to see if the objects are identical
if (this == otherObject) return true;
// must return false if the explicit parameter is null
if (otherObject == null) return false;
// if the classes don't match, they can't be equal
if (getClass() != otherObject.getClass()) return false;
// now we know otherObject is a non-null Employee
Employee other = (Employee) otherObject;
// test whether the fields have identical values
return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay); }
public int hashCode() { return 7 * name.hashCode() + 11 * new Double(salary).hashCode() + 13 * hireDay.hashCode(); }
public String toString() { return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay + "]"; }
private String name; private double salary; private Date hireDay; }
class Manager extends Employee { public Manager(String n, double s, int year, int month, int day) { super(n, s, year, month, day); bonus = 0; }
public double getSalary() { double baseSalary = super.getSalary(); return baseSalary + bonus; }
public void setBonus(double b) { bonus = b; }
public boolean equals(Object otherObject) { if (!super.equals(otherObject)) return false; Manager other = (Manager) otherObject; // super.equals checked that this and other belong to the same class
return bonus == other.bonus; }
public int hashCode() { return super.hashCode() + 17 * new Double(bonus).hashCode(); }
public String toString() { return super.toString() + "[bonus=" + bonus + "]"; }
private double bonus; }
|
分享到:
相关推荐
js 中 toString 方法的 3 个作用 js 中的 toString 方法是 Object.prototype 上的一个方法,每个对象都可以调用该方法。该方法的主要作用是将对象转换为字符串形式,以便于对象的表示和处理。在 js 中,toString ...
Java 对象的toString和equals方法重写 在 Java 中,每个对象都继承自 Object 类,而 Object 类中定义了两个重要的方法:toString() 和 equals()。这两个方法都是非常重要的,它们分别用于对象的字符串表示和对象...
在C#编程中,装箱、拆箱、自定义数据类型转换、ToString方法重载以及类方法扩展是几个核心概念,对于理解和优化程序性能至关重要。本文将深入探讨这些主题,并通过具体的实例来阐述它们的应用。 1. 装箱与拆箱 装箱...
在一般情况下,ToString()和Convert.ToString()方法都可以通用,但是在处理可能为null的对象时,Convert.ToString()方法更为安全。因为ToString()方法在对象为null时将抛出异常,而Convert.ToString()方法则返回一个...
java内常用包,date类,toString的使用方法
`ToString`方法是Java中一个常用的功能,用于将对象的属性以字符串的形式展示出来,这对于调试和日志记录非常有用。在给定的`标题`中提到的"最好的java对象ToString处理方案,ToString基类"指的是一个优化的`...
在 Java 中,toString() 方法是一个非常重要的方法,它是 Object 类中的一个方法,所有继承自 Object 的类都会继承这个方法。toString() 方法的主要作用是将对象转换为字符串形式,以便于输出或显示。 toString() ...
1.自动为指定包下面的所有JAVA 文件书写toString方法代码。 2.自动为指定Class模板类书写toString方法代码。 3.使用该类前最好做备份,编码格式一定要提前设置。
通过阅读《https://will-2011.iteye.com/blog/1006184》这篇博客,你可以获取更多关于`toString`方法的详细信息,包括它在不同上下文下的行为、可能遇到的问题,以及如何有效利用`toString`进行调试。同时,`Object_...
C#ToString()方法一些特殊用法
在Java编程语言中,`toString()`方法是一个非常重要的功能,尤其对于对象的表示和输出。该方法源自`Object`类,由于所有的Java类都隐式或显式地继承自`Object`,因此所有类的对象都可以调用`toString()`方法。这个...
在Java编程语言中,`toString()`方法扮演着重要的角色,它是`Object`类的一个实例方法。由于Java中所有的类都隐式地继承自`Object`类,所以每个类的实例都可以调用`toString()`方法。默认情况下,`Object`类的`...
C# 中的 ToString 函数是一种常用的格式化字符串方法,它可以将各种类型的数据转换为字符串。ToString 函数可以接受一个可选的格式化代码字符串作为参数,该参数可以控制输出字符串的格式。 数值格式化: * C:...
Java Object toString方法原理解析 Java Object 的 toString 方法是每个 Java 开发者都应该了解的基础知识。本文将通过示例代码详细介绍 Java Object toString 方法的原理解析,帮助开发者更好地理解和应用此方法。...
Java 中的 toString 方法的具体用法 Java 中的 toString 方法是一种非常重要的方法,用于将对象转换为字符串形式,以便于打印或显示对象的信息。在 Java 中,每个对象都有一个 toString 方法,该方法返回对象的字符...
结合提供的文件名`Object_toString_toString(radix).html`,我们可以推测文章可能包括一个关于使用`toString`方法特别是其`radix`参数的实例分析。这可能是一个详细的代码示例,解释如何使用`radix`来格式化数字字符...
在VB.NET中,`ToString()`方法是一个非常重要的成员,它被广泛用于各种数据类型的对象,以便将它们转换为字符串形式。这个方法具有高度的灵活性,可以根据传入的参数和格式化代码来定制输出的字符串样式。以下是一些...
下面将详细介绍每种格式的使用方法和示例。 一、货币格式(C 或 c) 货币格式使用大写或小写的 C 来表示,例如:`Console.Write("{0:C}", 2.5);` 输出结果为:$2.50。货币格式通常用于表示货币价值,例如人民币、...
因此,C# 中的每个对象都会获得 ToString 方法,此方法返回该对象的字符串表示形式。例如,所有 int 类型的变量都有一个 ToString 方法,此方法可让这些变量将其内容作为字符串返回: int x = 42; string strx = x....
在编程中,ToString()方法是用于将对象转换为字符串的通用方法。在本篇文章中,我们将详细介绍ToString()方法的格式设置大全,包括数字、日期时间、货币等多种格式的设置。 数字格式设置 在ToString()方法中,可以...