繁体   English   中英

我无法在Java程序中将Long作为运行时参数传递

[英]I am not able to pass Long as run time argument in Java program

我无法在Java程序中将Long作为运行时参数传递给我,我尝试了1L1l1.0L1.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工作方式。 它需要一个普通的旧数字序列,没有L 就是那样子。

在javadoc中针对Long.parseLong进行了Long.parseLong

将字符串参数解析为带符号的十进制long 字符串中的字符必须全部为十进制数字,但第一个字符可以是ASCII减号'-'(\\ u002D')表示负值,也可以是ASCII加号'+'('\\ u002B')来表示。表示正值。 返回最终的long值,就像参数和基数10作为parseLong(java.lang.String, int)方法的参数一样。

请注意,字符L ('\\ u004C')和l ('\\ u006C')都不允许出现在字符串的末尾作为类型指示符,这在Java编程语言源代码中是允许的。

这与Float相反,在Javadoc中, Float指示允许使用后缀。 Float.parseFloat

返回一个新的float初始化为指定的String表示的值,由Float类的valueOf方法执行。

Float.valueOf (节选):

...其中SignFloatingPointLiteralHexNumeralHexDigitsSignedIntegerFloatTypeSuffixJava™语言规范的词法结构部分中定义,但数字之间不能使用下划线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM