Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “之间的区别是什么?”;(二)&;要字符串'?_Java - Fatal编程技术网

Java “之间的区别是什么?”;(二)&;要字符串'?

Java “之间的区别是什么?”;(二)&;要字符串'?,java,Java,这两者有什么区别 int a=20; System.out.print(a.toString); System.out.print(String.valueOf(a)); 谢谢 两个区别: 您的示例即使将a.ToString更正为a.ToString(),也不会起作用,因为a是int,而不是对象,因此没有方法。您必须编写新整数(a).toString()。而String.valueOf调用将自动装箱,因此它将有一个toString 如果a是一个对象引用,区别在于String。如果a是null(

这两者有什么区别

int a=20;
System.out.print(a.toString);
System.out.print(String.valueOf(a));
谢谢

两个区别:

  • 您的示例即使将
    a.ToString
    更正为
    a.ToString()
    ,也不会起作用,因为
    a
    int
    ,而不是对象,因此没有方法。您必须编写
    新整数(a).toString()
    。而
    String.valueOf
    调用将自动装箱,因此它将有一个
    toString

  • 如果
    a
    是一个对象引用,区别在于
    String。如果
    a
    null
    (这显然不在您的情况下,因为
    a
    是一个
    int
    ,然后自动装箱),那么valueOf(a)
    将为
    “null”
    ,而
    a.toString()
    将抛出一个
    NullPointerException

    我们可以在JDK提供的
    String.valueOf
    的源代码中看到:

    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }
    

  • 因此:使用
    String.valueOf
    ,原语会自动装箱,对象引用会受到
    null
    保护。

    String.valueOf
    可用于转换,其中as
    toString
    是每个对象覆盖或继承
    对象来字符串化自身的标准函数

    第二行不会编译,是吗?有几个原因(1)
    int
    是基元类型,因此它没有方法和字段,(2)即使使用int->
    Integer
    的对象表示,它也没有字段
    toString
    。如果您试图将其作为方法调用,则应添加
    ()
    @Sajjad-HiFriend:3个原因:1
    a
    是一个
    int
    ,并且原语没有方法。2.在刚才编辑之前,您有
    a.ToString
    (大写
    T
    ),而方法名称是
    ToString
    (小写
    T
    )。案例在Java中很重要。3.您将
    toString
    视为一个字段。它不是,它是一个方法,所以你必须在它后面加上
    ()
    来调用它。