我无法在Java程序中传递长时间的运行时参数
我无法在Java程序中将我无法在Java程序中传递长时间的运行时参数,java,arguments,long-integer,Java,Arguments,Long Integer,我无法在Java程序中将Long作为运行时参数传递,我尝试了1L,1L,1.0L,1.0L,但给出了数字格式异常。虽然它在1中工作正常,但是根据Java prog语言long应该用后缀L标记。如果我对float运行这个程序,并通过1F它工作正常 public class Apple { public static void main(String[] args) { System.out.println(Long.parseLong(args[0]));
Long
作为运行时参数传递,我尝试了1L
,1L
,1.0L
,1.0L
,但给出了数字格式异常。虽然它在1
中工作正常,但是根据Java prog语言long
应该用后缀L
标记。如果我对float
运行这个程序,并通过1F
它工作正常
public class Apple {
public static void main(String[] args) {
System.out.println(Long.parseLong(args[0]));
/*System.out.println(Float.parseFloat(args[0]));
}
}
表达式
Long.parseLong(s)
在其字符串参数s
上调用方法parseLong
。此字符串最好看起来像“1”
或“123”
,并且在末尾不要有L
在Java源代码中,长文本被标记为L
,这一事实让您感到困惑。在Java代码中,我们可以编写:
Long x = 1L;
因为
1L
是Java源代码的一部分;它是一个长整数。然而,仅仅因为允许我们编写1L
来表示Java源代码中的一个数字,并不意味着Long.parseLong
将理解字符串“1L”
。我明白你为什么会这么想,但这不是Long.parseLong
的工作方式。它需要一个普通的旧数字序列,noL
。这就是它的方式。在javadoc中声明:
将字符串参数解析为带符号的十进制long
。人物
字符串中的所有字符都必须是十进制数字,但第一个字符除外
字符可以是ASCII减号“-”(\u002D'),表示
负值或ASCII加号“+”(“\u002B”)表示
正值。返回得到的long
值,与
参数和基数10
作为
parseLong(java.lang.String,int)
method
请注意,字符L
('\u004C')和L
('\u006C')均不可用
允许作为类型指示符出现在字符串末尾,如下所示
将被允许在Java编程语言的源代码
这与Float
相反,后者在javadoc中指出允许使用后缀:
返回一个新的浮点值
初始化为
指定的String
,由类的valueOf
方法执行
Float
(节选):
。。。其中,符号、浮点文字、十六进制数字、十六进制数字、,
SignedInteger和FloatTypeSuffix在Java的词汇结构部分中定义™ 语言规范,除了
数字之间不接受下划线
那么,当我通过1F时,为什么它对float有效呢?原因在于Dragan的答案,它比我的答案更完整,因为它引用了来源,应该被接受。