这是怎么合法的
System.out.println("".valueOf(1121997));
这是非法
System.out.println(1.valueOf("1121997"));
答案 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)
""
是对字符串对象的引用,因此包含length
,valueOf
等方法。
1
是integer
字面。它是原始数据类型,因此您无法在其上调用方法。