我这里得到的代码很少
int b=3;
b=b >> 1;
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但是当我将变量b更改为byte,short,float,double时它包含错误,但是使用变量int和long它可以完美地工作,为什么它不能与其他变量一起使用?
例如,位移运算符>>与任何整数类型兼容.但是,对于类似byte和的较小类型short,操作会执行扩展转换:结果会提升为类型int,因此无法重新分配回源类型.
因此,以下是不合法的:
byte b = 3;
b = b >> 1;
Run Code Online (Sandbox Code Playgroud)
但这些任务是合法的:
byte b = 3;
b = (byte)(b >> 1)
int c = b >> 1;
Run Code Online (Sandbox Code Playgroud)
至于为什么这些操作员不能使用float或者double,我会留给你探索.提示:考虑内存中这些类型的布局以及对位移操作符的含义.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |