Java Thread.sleep long还是int?

use*_*585 0 java sleep numeric literals

Thread.sleeplong毫秒为参数.但是数字文字被视为整数,除非另外用字母符号表示1000L.那为什么这个有效的代码呢?

Thread.sleep(1000);
Run Code Online (Sandbox Code Playgroud)

Joh*_*136 5

因为int可以提升到long.

long比没有任何数据丢失更大(更多位)int,因此int可以转换为更多(更多位)long.走另一条路可能会有问题,因为数据可能会丢失 - 因此这将是一个错误.