Rol*_*all 3 java int long-integer
我有一个关于在java中从int转换为long的问题.为什么浮标没有问题:
float f = (float)45.45;//compiles no issue.
float f = 45.45f; //compiles no issue.
Run Code Online (Sandbox Code Playgroud)
但是对于长型,它似乎是一个问题:
long l = (long)12213213213;
//with L or l at the end it will work though.
long l = (long)12213213213L;
Run Code Online (Sandbox Code Playgroud)
似乎一旦编译器因超出范围的问题而通知错误,它就会在那里阻塞而不检查程序员可能已经计划的任何可能的转换.
你对它有什么看法?为什么有任何特殊原因?
提前致谢.
但是对于长型,它似乎是一个问题:
那是因为12213213213没有L是int,而不是long.由于该值超出了该范围int,因此您会收到错误.
尝试类似的东西: -
System.out.println(Integer.MAX_VALUE);
System.out.println(12213213213L);
Run Code Online (Sandbox Code Playgroud)
你会明白的.
就案件float而言: -
float f = (float)45.45;
Run Code Online (Sandbox Code Playgroud)
值45.45是一个double值,适合的大小double.因此,编译器将没有问题,然后它将执行一个castto float.
似乎一旦编译器因超出范围的问题而通知错误,它就会在那里阻塞而不检查程序员可能已经计划的任何可能的转换.
究竟.编译器首先检查有效值,这里int,只有它可以进一步使用强制转换操作.
所以,基本上是在long和int: -
long l = (long)12213213213;
Run Code Online (Sandbox Code Playgroud)
你没有因为cast操作而得到错误,而是因为你numeric literal不能代表int.因此,编译器没有获得有效值,以执行强制转换操作.
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |