# 类型之间的转换
大数据类型指的是当前的 基本类型 和 引用类型
小数据类型指的是大数据类型下的 每个小分类
参照基本类型:
整型 浮点型 等等.... 这些都是小数据类型
# 同种小分类下的定义空间之间可以直接赋值操作
int a = 1;
int b = a;
~float x = 3.4;
float y = x;
# 大数据类型之间的转换问题
同种大数据类型之间才能发生直接转换
基本类型 ---- 基本类型之间 可以直接转换(自动 强制)
引用类型 ---- 引用类型之间 可以直接转换(自动 强制)
不同大数据类型之间需要间接转换
基本类型 ---- 引用类型之间 不可以直接转换(间接 -- 包装类 / 封装类)
# 保证大数据类型一致的前提下
基本类型 --- 基本类型
小数据类型相同
都是整型 都是浮点型等情况下
byte a = 1;
int b = a;
int c = 12;
long d = (long)c; // 基础类型
Integer c = 12;
long d = c.longValue(); // 包装类型
//-- 从小空间转换到大空间,会直接自动转换,除了 long 很特殊外 。
int a1 = 10;
byte b1 = (byte)a1;
long a2 = 235L;
int b2 = (int)a2;
//-- 从大空间转换到小空间,需要写(...)来告诉计算机需要强制转换的类型。括号里填 需要强制转换的类型。
// 或者 ---------------------
float a_a = 1.9F;
double a_b = a_a;
// 自动转换
double a_c = 26.14;
float a_d = (float)a_c;
// 强制转换
//-- 它两都是精度转换,就是小数位数的区别。
// 需要注意 --------------------
int g = 1000;
byte x = (byte)g;
//-- 如 1000 这个数值超出 byte 所规定范围的数值,所强制换算下来的值可能会有损失,它只保留最后的 8bit 位。其它类似转换也一样,需要注意!
小数据类型不同
从 整型 到 浮点型 等情况下
// 整型 —— 浮点型:两个比较精确程度 浮点型精确程度更高 可以直接存放整数 反之需要强制转换 。
int q = 8;
float z = q; // 直接自动转换
float a = 1.6F;
int b = (int)a;
System.out.println(b);// 需要强制转换
// 最后输出的是 1 ,因为 int 是只存放整数的。
/* 整型 —— 字符型:每一个字符都对应这一个 Unicode
码,例如 'a' ---- 对应的是 97 。
*/
char x = 'a';
int y = x; // 直接自动转换 y = 97
int p = 97;
char k = (char)p; // 需要强制转换 k = 'a'
byte j = 97;
char f = (byte)j; // 注意,byte 转换到 char 也是需要强制的,没有什么数值范围的说法 。
注:C++ 等语言的布尔型虽然有 1 和 0 代表 true 和 false,但在 Java 里 布尔型的 true 和 false 没有对应的代表 1 和 0 的说法,
true 就是 true
,false 就是 false
。引用类型 --- 引用类型
引用类型 后续讲对象时会讲到...