java类型转换

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:53:30
public class test{
public static void main(String[] args) {
int a=266;
byte b;
b=(byte)a;
System.out.println(b);
}
}
//个人认为应该是127,为什么是10

这和byte和int的范围有关
int 范围是四个字节(32位)(一个字长) -231~231-1
byte范围是个字节(8位) -128~127
而266转换为二进制是:100001010
当转换为byte就是00001010
就是1010就是十进制的10

x-=32; // 包含了一个隐藏的转型!

x=x-32;却没有隐藏的转型,需要自己强制转换,整数默认是int型的

这个问题在《java解惑》一书的谜题9中有详细解

package com.test;
public class Test{
public static void main(String[] args) {
int a=266;
byte b;
b=(byte)a;
System.out.println(b);
getTwoNumber(a);
}
public static void getTwoNumber(int c){
if(c>=1){
getTwoNumber(c/2);
System.out.print(c%2);
}else{
System.out.println();
}
}
}
//很简单一个例子,转成byte是把第一位上的数给丢了