Java中常量表达式的类型

时间:2016-04-25 04:15:53

标签: java

为什么要调用带有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"以上?

谢谢!

3 个答案:

答案 0 :(得分:0)

在Java中,当您编写普通的文字整数时,始终假定它是int类型,除非您通过将其强制转换为其他类型,或者为{添加postfix l来指定。 {1}},long f。例如:

float

答案 1 :(得分:0)

5是Integer Literal。由于您已经拥有JLS的副本,因此这是相关部分。

  

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

     

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

答案 2 :(得分:0)

你的问题有点不清楚...当你用简单的形式写一个数字时(例如:5,6,105,20),它会自动成为422 error "'{"errors":{"base":["No recipients. At least one user should be subscribed for GCM (Android Push) (through SDK or REST API)"]}}'"。如果您希望它为intshort,您必须声明它,如下所示:

long

short s = 5