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()); 

toStringObject类的一个特殊方法,这里是它的描述 :

返回对象的字符串表示forms。 通常,toString方法返回一个“文本表示”此对象的字符串。 结果应该是简洁但信息丰富的表示,便于人们阅读。 建议所有子类都覆盖此方法。

当对象应转换为文本表示时,此方法广泛用于那些地方。 当您将对象打印到PrintStream (在本例中为System.out )时,此流调用toString将此对象转换为字符串。