【问题标题】:Type of constant expressions in Java [duplicate]Java中的常量表达式类型[重复]
【发布时间】:2023-03-22 03:45:01
【问题描述】:

为什么会调用int i签名栏?

public class Test {
  public static void main(String[] args) {
    bar(5);  // What type of the integer "5"?
  }

  public static void bar(short i) { 
    System.out.println("short");
  }

  public static void bar(int i) { 
    System.out.println("int");    
  }

  public static void bar(long i) { 
    System.out.println("long");
  }
}

我查过Oracle的文档15.12. Method Invocation Expressions15.28. Constant Expressions,但还是不知道。

有人可以解释constants expression 的类型吗?和上面“5”的类型一样吗?

谢谢!

【问题讨论】:

    标签: java


    【解决方案1】:

    在 Java 中,当您编写一个普通的文字整数时,它始终被假定为 int 类型,除非您通过将其强制转换为另一种类型或为 long、@ 添加后缀 l 来指定其他类型。 987654324@ 为float。例如:

    long    →   1234l
    float   →   25f
    short   →   (short)5
    double  →   (double)25
    

    【讨论】:

      【解决方案2】:

      5 是一个整数文字。由于您已经拥有 JLS 的副本,因此这里是相关部分。

      3.10.1 整数文字 - 整数文字可以用十进制(以 10 为底)、十六进制(以 16 为底)、八进制(以 8 为底)或二进制(以 2 为底)表示。

      如果整数文字以 ASCII 字母 L 或 l (ell) 为后缀,则其为 long 类型; 否则它是 int 类型(§4.2.1)。

      【讨论】:

        【解决方案3】:

        你的问题有点不清楚......当你以简单的形式(例如:5、6、105、20)写一个数字时,它会自动成为int。如果您希望它是 shortlong,您必须声明它,如下所示:

        short s = 5
        

        long l = 5
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多