数据类型之间的转化问题
int a = 1; 在栈内存中开辟了一块内存空间 叫做a 存储int类型 存储一个整数1
int b = a;
==================================================================
变量空间类型不同
整型 byte short int long
浮点型 float double
字符型 char
布尔型 boolean
byte a = 1;//8bit -128~127
int b= a;//32bit
食堂吃饭
一碗米饭 2两的碗 1两米饭 /1两空气
4两的碗 1两米饭
int a = 1000;//编译---运行
byte b =(byte)a;???//127 强制类型转换
a-->4两碗 3两米饭/1两空气 //将空气强制砍掉一部分
b-->2两碗 1两米饭/1两空气
00000000 00000000 00000000 00000001 强制删除24个bit位 只保留最后的8个bit位
00000000 00000000 00000011 11101000 ---十进制--->二进制 除以2取余数 余数倒叙排列
11101000 -24 正数--->负数--->取反加一
int a = 1;32bit
float b = a;//????可以 b == 1.0 32bit 精确程度
转化规则
long a = 1; //32bit
float b = a; //64bit
char---字符---'a'---0001010101---97---int
char x = 'a';
int y = x;//??? y-->97
类型之间的转换问题
1.同种类型之间是可以直接进行赋值操作
int a = 1; int b = a;|| float x = 3.4; float y = x;
2.数据类型不同的空间 之间的赋值----->转换问题
同种大数据类型之间才能转换
基本类型-----基本类型之间 可以直接自动转换(自动 强制)
引用类型------引用数据类型之间 可以直接自动转换 (自动 强制---上转型 下转型)
基本类型------引用数据类型 不可以直接转换 (间接---包装类/封装类)
3.在保证大数据类型一致的前提下
基本类型-----基本类型
小数据类型相同
都是整型 都是浮点
大空间变量可以直接存储小空间的数据
小空间变量不可以直接存储大空间的数据(需要强制类型转化)
转换过程写法都好用 如果转换过程中数值范围超过边界 可能会有损失
byte a =1 ;int b = a;//自动直接转换就可以
int a = 1;byte b =(byte)a;//需要强制类型转换
float x = 3.4F;double y = x; //自动直接转化
double x = 3.4; float y = (float)x;//强制转化
如果发现强制转化之前的数值比较大
int a = 1000; byte b = a;//编译好用 执行后 b存放的值一定放生变化
小数据类型不同
整型---浮点型
比较精确程度 浮点型精确程度更高 直接存储整数 反之需要强制转化
任何一个浮点型都可以直接存放一个整型
int a = 1; float b = a;//直接类型转化
float a = 1.0F;int b = (int)a;//强制类型转化
整型---字符型 每一个字符都对应一个Unicode码 a---97
char x = 'a'; int y = x;//直接转化 y---97
int x = 97;char y = (char)x;//强制转化 y---a byte x = 97;//转化 值计算
字符型---整型 暗号
布尔类型很特殊
不能与其他基本类型之间发生转化
引用类型之间后续...