Java强制类型转换

/*java中的八中基本数据类型
整数:
byte、short、int、long
小数:
float、double
字符
char
布尔
boolean
字符串的类型:string(引用数据类型)不属于八中基本数据类型
    ""记住,双引号引起的都是字符串
变量声明的方式:
方式1;数据类型 变量名=数据
方式2:数据类型 变量名1,变量名2......*/
/*
数据类型转换
小数据类型----->大数据类型 自动类型转换
大数据类型----->小数据类型 强制类型转换
有可能会溢出(大杯子往小杯子倒水一定会溢出吗)
强制类型转换的格式:
小数据类型 变量名=(小数据类型)大数据类型
计算机原理所规定好的:(负数在计算机中的地位)
在计算机中如果一个二进制数据的最高位是1,那么该数肯定是一个负数。
正数的二进制最高位是0。
负数的存储过程:
-7-------->11111001
1、先取负数绝对值,求出该绝对值的二进制形式(原码);
2、原码取反得到反码;
3、反码加一得到了补码。计算机中存的就是补码
数据类型转换要注意的细节
1、凡是byte、short、char数据类型的数据在运算的时候都会自动转换成int类型
来运算
2、两个不同数据类型数据在运算的时候,结果取决于大的数据类型
示例代码
byte b1=1;
byte b2=2;
byte b3=(byte)(b1+b2); 需要强制类型转换
示例代码
int 1=10;
long l=20;
i=(int)(i+1);不同数据类型转换必须加括号,不然会他妈报错。
代码示例
byte b=10;//一个整数在没有加上任何标识符的时候默认是int类型
 为啥不会报错,10是一个常量,编译器在编译的时候就能够确认常量的值了,java编译器就会检查到10并没有超过byte的表示范围,所以允许赋值
 像下面这种情况就不行(因为是变量)
 int i=10;
 byte b=i;
 java编译器在编译的时候并不能确认变量所存储的值,变量所存储的值是在运行时才分配内存的空间的(这句话要记住)


*/
class dome1
{
public static void main(String[] args) {
byte b=11;
short s=b;
int i=s;
long l=i;
system.out.println(l);


}
}

你可能感兴趣的:(java)