Java 如何在这里使用这个关键字来调用toString()方法而不使用。操作人员

Java 如何在这里使用这个关键字来调用toString()方法而不使用。操作人员,java,Java,神奇之处在于+操作符中的字符串。当您使用+向对象添加字符串时,JVM调用对象上的toString方法,以确定要连接的字符串 另外,this表示当前方法正在其上运行的实例,因此通过使用+操作符将this添加到字符串,可以对当前实例调用toString 从 15.18.1。字符串连接运算符+ 如果只有一个操作数表达式为String类型,则在运行时对另一个操作数执行字符串转换(§5.1.11),以生成字符串 5.1.11。字符串转换 任何类型都可以通过字符串转换转换为字符串类型 原语类型T的值x首先

神奇之处在于
+
操作符中的
字符串。当您使用
+
对象添加
字符串
时,JVM调用
对象
上的
toString
方法,以确定要连接的
字符串

另外,
this
表示当前方法正在其上运行的实例,因此通过使用
+
操作符将
this
添加到
字符串
,可以对当前实例调用
toString

15.18.1。字符串连接运算符+

如果只有一个操作数表达式为String类型,则在运行时对另一个操作数执行字符串转换(§5.1.11),以生成字符串

5.1.11。字符串转换

任何类型都可以通过字符串转换转换为字符串类型

原语类型T的值x首先转换为参考值,就像通过将其作为适当的类实例创建表达式的参数(§15.9):

  • 如果T是布尔值,则使用新的布尔值(x)

  • 如果T是char,则使用新字符(x)

  • 如果T是byte、short或int,则使用新的整数(x)

  • 如果T长,则使用新的长(x)

  • 如果T为浮动,则使用新的浮动(x)

  • 如果T是双精度的,则使用新的双精度(x)

然后将该引用值逐字符串转换为类型字符串

现在只需考虑参考值:

  • 如果引用为null,则将其转换为字符串“null”(四个ASCII字符n、u、l、l)

  • 否则,转换就好像是通过调用引用对象的toString方法(不带参数)来执行的;但是如果调用toString方法的结果为null,则使用字符串“null”


在您的情况下,第5.1.11节中的最后一点才适用。

这与
这件事没有任何关系。更多内容是关于
+
如何处理字符串

+
运算符,当一个操作数是字符串而另一个不是字符串时,它将尝试将另一个操作数转换为字符串。例如:

public class potpie {

    private int month;

    private int day ;

    private int year;

    public potpie(int m,int d,int y) {

        month=m;

        day=d;

        year=y;

        System.out.printf("The constructor for this is"+this);

    }
    public String toString() {

        return String.format("%d/ %d/ %d/", month,year,day);

    }

}

class apples {

    public static void main(String args[])

    {

    potpie x= new potpie(4,5,6);

    }

}
它将尝试将30转换为字符串。这可以通过以下方式完成:

"My age is: " + 30
你的情况完全一样。你的表情:

"My age is: " + (new Integer(30)).toString()
+
的第二个操作数不是字符串,因此编译器尝试将该
转换为字符串。因此,调用
toString

 "The constructor for this is"+this

toString
通常是将任何引用类型转换为字符串的方式。

如果要将任何对象表示为字符串,toString()方法就存在了

方法返回对象的字符串表示形式


如果打印任何对象,java编译器会在内部调用该对象上的toString()方法。因此,重写toString()方法,返回所需的输出,它可以是对象的状态等。这取决于您的实现。

这表示当前实例。@Meepo这不是打印:这是+为什么有这么多否决票?这实际上是一个相当合理的问题。@MauricePerry你是对的,我只是概括一下,但我错了。连接说,嘿,所有这些都应该是一个字符串,让我把它变成一个字符串。很抱歉。
"The constructor for this is"+this.toString()