Java中的toString方法调用
可能重复:
为什么在打印对象时调用toString()方法?
我在下面有这段代码。 我使用Room Class中的toString方法了解除输出之外的所有其他内容。 在HotelMain Class中,我刚刚调用了酒店类中的displayRooms方法 。 但是,当我运行程序时,控制台中显示了toString输出。
如果我正确toString()是对象中值的文本表示。 但是,我不确定我在哪里调用toString方法。
有人可以解决我的困境吗? 谢谢。
酒店等级
public class Hotel { private String hotelName; private Room[] rooms; public Hotel(String hotelName, int numberOfRooms) { this.hotelName = hotelName; this.rooms = new Room[numberOfRooms]; } public void addRooms(Room room) { int position = -1; for (int i = 0; i < this.rooms.length; i++) { Room tempRoom = rooms[i]; if (tempRoom == null) { position = i; break; } } if (position != -1) { rooms[position] = room; System.out.println("New room added at postion " + position); } else { System.out.println("Addition of room failed."); } } public void displayRooms() { System.out.println("The Hotel: " + this.hotelName + " has the following rooms."); for (int i = 0; i < this.rooms.length; i++) { Room tempRoom = rooms[i]; if (tempRoom != null) { System.out.println(tempRoom); } } }
房间等级
public class Room { private int roomNumber; private int numberOfBeds; private boolean smokingOrNonSmoking; public Room() { } public Room(int roomNumber, int numberOfBeds, boolean smokingOrNonSmoking) { this.roomNumber = roomNumber; this.numberOfBeds = numberOfBeds; this.smokingOrNonSmoking = smokingOrNonSmoking; } @Override public String toString() { return "Room [roomNumber=" + roomNumber + ", numberOfBeds=" + numberOfBeds + ", smokingOrNonSmoking=" + smokingOrNonSmoking + "]"; }
}
酒店主营
public class HotelMain { public static void main(String[] args) { Hotel hotel = new Hotel("MahaRani Chain of Hotels", 10); Room room1 = new Room(4, 2, true); Room room2 = new Room(2, 1, false); Room room3 = new Room(6, 3, true); Room room4 = new Room(6, 4, false); hotel.addRooms(room1); hotel.addRooms(room3); hotel.addRooms(room4); hotel.addRooms(room2); hotel.displayRooms(); }
}
安慰
Room tempRoom = rooms[i]; if (tempRoom != null) { System.out.println(tempRoom); }
您在displayRooms()
方法中有上述代码。 它打印tempRoom
,它是Room
的引用,因此它调用在Room
类中重写的toString()
方法。
你打电话的时候
System.out.println(tempRoom);
Room的toString()
方法在tempRoom
上自动调用。
在这一行
System.out.println(tempRoom);
这是一样的
System.out.println(tempRoom.toString());
toString
是Object
类的一个特殊方法,这里是它的描述 :
返回对象的字符串表示forms。 通常,toString方法返回一个“文本表示”此对象的字符串。 结果应该是简洁但信息丰富的表示,便于人们阅读。 建议所有子类都覆盖此方法。
当对象应转换为文本表示时,此方法广泛用于那些地方。 当您将对象打印到PrintStream
(在本例中为System.out
)时,此流调用toString
将此对象转换为字符串。