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

Java 这个静态方法在实例值上的调用是如何错误的?,java,Java,这怎么合法 这是非法的 ”是一个字符串文本,java编译器会确保为程序中使用的每个字符串文本自动创建一个字符串对象。因此,由于“是一个对象,因此它具有类似valueOf()的方法 另一方面,1是int文本,因此没有为其创建对象;它只是一个原始的。原语在java中没有方法。“是对字符串对象的引用,因此有长度,值等方法 1是一个整数文本。它是一种基本数据类型,因此不能对其调用方法。因为“”是一个字符串。String类有一个valueOf方法,所以您可以调用它 对于你的老问题 System.out.p

这怎么合法

这是非法的

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

另一方面,
1
int
文本,因此没有为其创建对象;它只是一个原始的。原语在java中没有方法。

是对字符串对象的引用,因此有
长度
值等方法

1
是一个
整数
文本。它是一种基本数据类型,因此不能对其调用方法。

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

对于你的老问题

System.out.println( 1.valueOf("1121997"));
这里1是原始整数值,而不是整数包装类。不能对基元数据类型调用方法

对于您的最新问题

System.out.println((Integer) 1.valueOf("1121997"));
在这里,您需要将(整数)1包装为附加()

valueOf()也是一个静态方法。用实例来称呼它不是一个好的做法。您应该直接用类名调用它,如

Integer.valueOf("1121997");

字符串是object,1是int,这是基本类型。它可以与另一对括号一起使用。当编辑使现有答案无效时,不要更改问题。回滚编辑使答案无效。顺便说一句,在现实生活中,您永远不应该这样做,对实例(尤其是不相关的实例)调用静态方法这是个很坏的主意™.<代码>(整数)1
是有效的强制转换。您能告诉我为什么附加()是有效的吗required@SanjayIdpuganti在最简单的形式中,它自动装箱
1
,这是一个primitive@SanjayIdpuganti:若不添加包装器(),编译器将在对原语文本调用该方法时理解它。添加wrapper()后,编译器将把原语int转换为整数包装类,然后调用其Integer.valueOf()方法。希望我澄清你的疑问。快乐学习:)@SanjayIdpuganti,学习Java中的操作顺序和优先级,看看为什么需要括号,以及在哪里需要括号。“
1
是一个
Integer
literal”不,它是一个
int
literal。没有
Integer
literals.@T.J.Crowder有趣的是,即使是官方教程也使用术语
Integer literals
他们可能会说“Integer literal”(这是常见的做法),但我认为你找不到任何能说明你最初拥有的内容的内容,“
Integer
literal”--代码格式很有意义。:-)没有整数文字,但有整数文字。@GhostCat实际上,官方教程使用术语
整数文字
@Shashwat nice find!C-:=但这只是因为“整型文字”是一个标题。在句子的下面,他们说“整型文字”,“整型”或“整型”?请记住:教程就是教程。当我们开始玩“官方文件说”的游戏时;唯一可行的资源是联合联络小组;我现在懒得去查。
System.out.println((Integer) 1.valueOf("1121997"));
System.out.println(((Integer) 1).valueOf("1121997"));
Integer.valueOf("1121997");