[英]implicitly call a method
我自己学习Java,我陷入了implicitly call another method
困境,我无法弄清楚在Card Shuffling and Dealing Simulation中how dealCard method call ToString method implicitly
。
public class Card
{
private String face;
private String suit;
public String toString()
{
return face + " of " + suit;
} // end method toString
}
// DeckOfCards类代表一副扑克牌。
import java.util.Random;
public class DeckOfCards
{
public Card dealCard()
{
// determine whether Cards remain to be dealt
if ( currentCard < deck.length )
return deck[ currentCard++ ];
else
return null;
}
}
//执行应用
public class DeckOfCardsTest
{
public static void main( String[] args )
{
DeckOfCards myDeckOfCards = new DeckOfCards();
myDeckOfCards.shuffle(); // place Cards in random order
// print all 52 Cards in the order in which they are dealt
for ( int i = 1; i <= 52; i++ )
{
// dealCard method implicitly call ToString method
System.out.printf( "%-19s", myDeckOfCards.dealCard() );
}
dealCard
方法不会隐式调用toString
。 它只是从您的卡组中返回一张卡。
对toString()
的隐式调用是由您从main
方法调用的printf
方法完成的:
System.out.printf( "%-19s", myDeckOfCards.dealCard() );
每当将类型为Object
某种东西传递给printf方法时,而不是printf
方法不知道的类型(例如,它知道数字),则它使用toString()
方法来获取对象的String表示形式。
System.out.printf(“%-19s”,myDeckOfCards.dealCard());
您正在打印一个字符串(%s),因此Java将查找Card
类的toString()
方法。
toString()
方法将返回表示对象的字符串。 如果不重写此方法(属于Object
类的一部分),您将看到一个奇怪的字符串,它是Java默认情况下在您的对象处给出的表示形式
Println(Object obj)方法尝试将该对象转换为String,如下所示:String s = String.valueOf(x);
String.valueof(object)将检查object是否为null,打印null,否则将调用Object.toString()方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.