这个静态方法如何调用实例值是错误的?

时间:2017-05-07 17:33:39

标签: java

  

这是怎么合法的

System.out.println("".valueOf(1121997));
  

这是非法

System.out.println(1.valueOf("1121997"));

3 个答案:

答案 0 :(得分:5)

""是一个字符串文字,java编译器确保为您在程序中使用的每个字符串文字自动创建一个String对象。因此,由于""是一个对象,因此它具有valueOf()等方法。

另一方面,1是一个int字面值,因此没有为它创建对象;它只是一个原语。基元在java中没有方法。

答案 1 :(得分:2)

因为“”是一个字符串。 String Class有一个valueOf方法,所以你可以调用它。

对于你的旧问题,

System.out.println( 1.valueOf("1121997"));

这里1是原始整数值而不是Integer Wrapper类。您不能在原始数据类型上调用方法。

对于您更新的问题,

System.out.println((Integer) 1.valueOf("1121997"));

在这里,您需要将(整数)1 与其他()。

包装在一起
System.out.println(((Integer) 1).valueOf("1121997"));

valueOf()也是一种静态方法。用实例调用它不是一个好习惯。您应该直接使用类名称

来调用它
Integer.valueOf("1121997");

答案 2 :(得分:1)

""对字符串对象的引用,因此包含lengthvalueOf等方法。

1integer 字面。它是原始数据类型,因此您无法在其上调用方法。