小编max*_*335的帖子

隐式类型转换不适用于方法参数?

请考虑以下代码段:

class TypeCast{
  public static void main(String[] args){
    byte by = 4;     //compiler casts int literal to byte

    doCasting(4);    //Compilation Error: external type casting is required. WHY ?

  }

  public static void doCasting(byte by){

  }

}
Run Code Online (Sandbox Code Playgroud)

我认为上面的代码片段是不言自明的.在对int字体进行文字赋值时byte,编译器会自动执行所需的强制转换.当我们调用byte带有int literal参数的方法时,同样的事情不会发生.为什么?

java casting

15
推荐指数
1
解决办法
1013
查看次数

Thread.currentThread()如何工作?

Thread.currentThread()是一个静态方法,它提供对当前正在执行的Thread的引用(基本上是对'this'线程的引用).

this在Java中无法访问静态方法中的非静态成员(特别是),因此currentThread()是本机方法.

currentThread()方法如何在幕后工作?

java multithreading

13
推荐指数
1
解决办法
7900
查看次数

输入强制转换与文字分配

考虑以下:

class TypeCast {
    public static void main(String[] args) {
        byte by = 4;   // Compiler casts int literal to byte
        int in = 4;
        byte byt = in; // Compilation Error: compiler can not cast automatically. WHY?
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道编译器可以在文字赋值的情况下缩小范围.但是当赋值涉及变量而不是文字时,它不能做同样的事情.为什么?

编辑:我想大多数人都无法理解我想要问的问题.它不是要分配'超出范围'的值,而是分配'范围内'值byte并让编译器处理缩小范围.很明显,'byte'将无法处理超出范围的值,并且显式转换将需要(并且我不想知道).

给定值落在byte范围内,int文字赋值byteint类型变量赋值之间的区别是什么byte

java casting

12
推荐指数
2
解决办法
1815
查看次数

为什么显式类型转换需要从double到float而不是从int到byte?

请考虑以下声明:

byte by = 5; //works fine

文字'5'的类型为int,小到足以适合byte类型的变量.编译器在这里执行隐式类型转换(从int到byte).

现在考虑以下场景:

float fl = 5.5;    //compilation error
Run Code Online (Sandbox Code Playgroud)

文字'5.5'是double类型,也足够小以适应float类型的变量.为什么我们需要像这样显式地输入:

float fl = (float) 5.5;   //works fine
Run Code Online (Sandbox Code Playgroud)

为什么编译器在浮点数的情况下不为我们进行转换?

java casting

6
推荐指数
1
解决办法
2534
查看次数

标签 统计

java ×4

casting ×3

multithreading ×1