App*_*sei 0 java object 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
房间等级
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
+ "]";
}
Run Code Online (Sandbox Code Playgroud)
}
酒店主要
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();
}
Run Code Online (Sandbox Code Playgroud)
}
安慰

Room tempRoom = rooms[i];
if (tempRoom != null) {
System.out.println(tempRoom);
}
Run Code Online (Sandbox Code Playgroud)
您的方法中包含上述代码displayRooms().它打印tempRoom,这是一个参考Room,因此它调用toString()在Room类中重写的方法.
你打电话的时候
System.out.println(tempRoom);
Run Code Online (Sandbox Code Playgroud)
toString()Room 的方法被自动调用tempRoom.
在这一行
System.out.println(tempRoom);
Run Code Online (Sandbox Code Playgroud)
这是一样的
System.out.println(tempRoom.toString());
Run Code Online (Sandbox Code Playgroud)