java - 如何区分int和long?

标签 java int long-integer

 public class NewMain
 {
     public static void main(String[] args)
     {
         long num = 100;
         System.out.println(xMethod(5,1000000000000L));

     }

     public static int xMethod(int n, long x)
     {
         System.out.println("int, long");
         return n;
     }

     public static long xMethod(long n, long x)
     {
         System.out.println("long, long");
         return n;
     }

 }

对我来说,这看起来很模棱两可。

整数范围内的数字可以是长整数,这在 num 的声明中得到了证明。

而且我很好奇如果我有两个带有两个不同参数的方法会发生什么。

显然,在编写参数时,数字必须在末尾有一个 L 以指示它是一个长整数,而在声明 num 时,这不是必需的。 这是为什么?

我首先想到的是,如果它在 int 的范围内,它会自动将其视为 int,当超出该范围时,它将被用作 long。 但是,对于我的第二个参数,它不会通过,除非我输入 L。它说它不在 int 的范围内。

有人可以对此给出一些明确的规则吗?

最佳答案

没有小数点的数字字面量总是被视为 int 除非它有一个另外指定的后缀(例如 L)。

如果超出了int的范围,这是一个编译错误。

when declaring num, that wasn't necessary

您可以将 int 文字分配给 long 变量,因为不会丢失信息。

关于java - 如何区分int和long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34173562/

相关文章:

java - 通过访问 token 对 REST 服务进行用户授权

ios - 如何将 int 转换为 id?

java - java中如何检查文字是否为long类型?

c - 从c中的long long中将int提取到数组中

java - 无法创建具有特定类的 JAXB 实例

java - 为什么在阻塞调用之前过早设置中断状态会导致无限循环?

c - 如何判断输入的字符是否为数字?

c# - 对于 'char' 变量,“int”从不等于 null

c - 大量输入的“因超时而终止”

Java ByteArray 文件解析