toString 방법 정보
29977 단어 toString
절대 다수의 toString 방법은 이런 형식을 따른다. 클래스의 이름은 그 다음에 상대방의 괄호로 묶인 필드 값이다.다음은 Employee 클래스의 toString 메서드 구현(뒤에 전체 프로그램 첨부)입니다.
4
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 (), 하위 클래스는 슈퍼만 호출합니다.toString()만 있으면 됩니다. 예를 들어, Manager 클래스의 toString 방법은 다음과 같습니다.
Class Manager extends Employee
{
.......
public String toString()
{
return super.toString()
+"[bonus="+bonus+"]";
}
}
tostring 호출: 대상과 문자열이 조작부호 '+' 를 통해 연결되면 자바 컴파일러는 자동으로 tostring 방법을 호출하여 대상 문자열 설명을 얻을 수 있습니다.예를 들면 다음과 같습니다.
Point p=new Point(10,20);
String message="The current position is"+p;
//automatically invokes p.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;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java oop 22 Object 클래스Object 클래스 - 모든 클래스의 최고 조상 - 부모가 없는 클래스는 자동적으로 Object 클래스를 상속받게 된다. - 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다 toString(),...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.