ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[toc] ## 基本变量类型 数据类型如下图所示 ![](https://img.kancloud.cn/3e/44/3e440e3a78ad052a6057d5dd6d530c52_589x269.png) java有八种基本类型,都是java语言预定好的,并且都是关键字。 这8中基本类型分别是: 整型(4种):byte(8位)、short(16位)、int(32位)、long(64位) 字符型(1种):char(16位) 浮点型(2种):float(32位)、double(64位) 布尔型(1种):boolean <br> ### 字符型 char类型用于存放一个字符,值用单引号'表示 (双引号表示字符串) 其长度和short一样,也是16位的 只能存放一个字符,超过一个字符就会产生编译错误 ~~~ public class HelloWorld{ public static void main(String[] args){ char c = '中'; //char 只能存放一个字符,超过一个字符就会产生编译错误 char c2 = '中国'; //报错 char c3 = 'ab'; //报错 } } ~~~ ### 浮点型 浮点数类型有两种 float 长度为32位 double 长度为64位 注意: 默认的小数值是double类型的 ~~~ public class HelloWorld{ public static void main(String[] args){ double d = 123.45; float f = 54.321; //该行会出现编译错误,因为54.321是double型的 float f2 = 54.321f; //该行正确 } } ~~~ ### 布尔型 布尔型用于表示真假 虽然布尔型真正存放的数据是0(false) 1(true) 但是,不能直接使用0 1 进行赋值 ~~~ public class HelloWorld { public static void main(String[] args) { boolean b1 = true; boolean b2 = false; // 虽然布尔型真正存放的数据是0(false) 1(true) // 但是,不能直接使用0 1 进行赋值 boolean b3 = 1; //错误! } } ~~~ ## 转换规则 精度高的数据类型就像容量大的杯子,可以放更大的数据 精度低的数据类型就像容量小的杯子,只能放更小的数据 小杯子往大杯子里倒东西,大杯子怎么都放得下 大杯子往小杯子里倒东西,有的时候放的下,有的时候就会有溢出 <br> ### 低精度向高精度转换 ~~~ public class HelloWorld { public static void main(String[] args) { long l = 50; int i = 50; //int比较小,要放进比较大的long,随便怎么样,都放的进去 l = i; } } ~~~ ![](https://box.kancloud.cn/cb5434c9e84412586077b2689e105539_661x220.png) <br> ### 高精度向低精度转换 ~~~ public class HelloWorld { public static void main(String[] args) { byte b = 5; int i1 = 10; int i2 = 300; b = (byte) i1; //因为i1的值是在byte范围之内,所以即便进行强制转换 //最后得到的值,也是10 System.out.println(b); //因为i2的值是在byte范围之外,所以就会按照byte的长度进行截取 //i2的值是300,其对应的二进制数是 100101100 //按照byte的长度8位进行截取后,其值为 00101100 即44 b =(byte) i2; System.out.println(b); //查看一个整数对应的二进制的方法: System.out.println(Integer.toBinaryString(i2)); } } ~~~ ![](https://box.kancloud.cn/45e01bf5c0f382a83ecc09dc9d0665af_635x339.png) <br> 总结下来就是:低精度向高精度转换随便转都没事;高精度转换低精度有时候可以转有时候不能转,但使用强制类型转换就可以转但是不能保证转换后结果的正确性,如果有溢出,溢出的部分都会丢失。