在java中正确声明浮动和长类型?

时间:2014-06-29 20:42:38

标签: java floating-point double

所以我理解,如果我声明一个长变量,我需要在数字末尾添加一个L。

long x = 123L;

与float类型相同,我需要在变量的末尾添加一个F.

float x = 1.1F;

但我想知道为什么它在这两种情况下做得与众不同? 我的意思是如果我声明一个int或任何其他数据类型,只需

int x = 1;

为什么声明这两种数据类型是在某种情况下完成的(对于long和float类型)。我知道它是这样完成的,我只是想了解为什么这样做是这样的?

6 个答案:

答案 0 :(得分:4)

区别在于文字值。根据{{​​3}},字面数值属于intdouble类型。

来自Primitive values

  

如果整数文字的后缀为ASCII字母longL(ell),则其类型为l;否则它是intJava Language Specification. Chapter 3. Lexical Structure. 3.10 Literals

类型      

(...)

     

浮点文字的类型为float,如果后缀为ASCII字母Ff;否则其类型为double,并且可以选择以ASCII字母Dd§4.2.1)为后缀。

答案 1 :(得分:0)

在示例中,您提到后缀似乎是多余的,但还有其他情况,例如使用两个重载方法test(long x)test(int x)。文字参数是否使用后缀L将决定调用哪一个,例如test(123L)将调用第一个,而test(123)将调用第二个。而且你不希望杂乱的代码带有不必要的后缀,因此没有后缀I(也不是D),而123对于{{1}类型的文字也可以。 }。

答案 2 :(得分:0)

所有关于类型安全的方式,通过这种方式你可以控制常量。因为int可以包含的信息少于长时间,所以写这样的东西是不合适的:

int variable = 1000000000000;

在C / C ++语言中允许使用它,但无论如何该值都会被闪烁。由于Java关心所有错误,您需要在数字常量的末尾指定L,这样就会出现类型不匹配错误,您需要更正值或变量类型。

答案 3 :(得分:0)

对于整数文字(int,long),默认值为int。

但是,对于浮点文字(float,double),默认值为double。这是因为使用double可能会对存储的值进行更安全的算术运算。

这就是为什么在声明浮点数或长整数时,您需要在声明时使用LF专门指定它们。

答案 4 :(得分:0)

简单明了

这样想,在我已声明 int a = 10; 的应用程序中,但将来,我的应用程序需要存储类似 a = 987,654,321,321,321 的值,然后这个不可能。编译器将抛出错误消息

示例

public class Z {
  public static void main(String[] args){
     int a=10;
     a=987654321321321;
     System.out.println(a);

  }
}

汇编

    G:\Java>javac Z.java
          Z.java:4: error: integer number too large: 987654321321321
           a=987654321321321;
           ^
          1 error

为了解决上述问题,我们在声明变量时,清楚地告诉编译器我们要存储的值是long类型而不是int(因此,编译器在解决问题时不会有任何混淆)

      public class Z {
         public static void main(String[] args){
            long a=10L;
            a=987654321321321L;
            System.out.println(a);

          }
        }

编译并执行上述代码

   G:\Java>javac Z.java

   G:\Java>java Z
      987654321321321

<强> INT:

Int数据类型是32位带符号的二进制补码整数。

最小值为 - 2,147,483,648。( - 2 ^ 31)

最大值为2,147,483,647(含)。(2 ^ 31 -1)

Int通常用作整数值的默认数据类型,除非存在对内存的担忧。

默认值为0.

示例:int a = 100000,int b = -200000

<强>长:

长数据类型是64位带符号的二进制补码整数。

最低值为-9,223,372,036,854,775,808。( - 2 ^ 63)

最大值为9,223,372,036,854,775,807(含)。 (2 ^ 63 -1)

当需要比int更宽的范围时使用此类型。

默认值为0L。

示例:long a = 100000L,int b = -200000L

答案 5 :(得分:0)

根本不是宣言。我没有进入冗长的答案。只需先试试这个

System.out.println(123L);

然后

System.out.println(123F);

那应该为你清楚:)