企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
>[success] # 数字类型 1. 其中byte类型在内存空间中占1个字节,表示范围是:\-2^7 ~ 2^7-1. `-128 ~ 127` 2. 其中short类型在内存空间中占2个字节,表示范围是:\-2^15 ~ 2^15-1. `-32768 ~ 32767` 3. 其中int类型在内存空间中占4个字节,表示范围是:\-2^31 ~ 2^31-1. ` -2147483648 ~ 2147483647` 4. 其中long类型在内存空间中占8个字节,表示范围是:\-2^63 ~ 2^63-1. `-9223372036854775808 ~ 9223372036854775807` 5. float类型在内存空间占4个字节,叫做单精度浮点数,可以表示7位有效数字,范围 `-3.403E38~3.403E38` 6. double类型在内存空间占8个字节,叫做双精度浮点数,可以表示15位有效数字,范围`-1.798E308~1.798E308` 5. 若描述比long类型还大的数据则使用`java.math.BigInteger`类型 ***** * 整数类型和小数类型的取值范围大小关系​ `double > float > long > int > short > byte` * 在java中**整数**默认是`int`类型,**浮点数**默认是`double`类型 >[danger] ##### 符号对类型含义 `0x`:表示十六进制 `0b`:表示二进制 `L或者l`: 表示`long` 类型,推荐L `F或者f`: 表示`float` 类型 >[info] ## 整数类型 -- `byte,short,int,long` 选用 * 如果要定义 一个整数类型的变量,不知道选择哪种数据类型了,默认使用int。 * 如果要定义 一个小数类型的变量,不知道选择哪种数据类型了,默认使用double。 * 如果要定义一个long类型的变量,那么在数据值的后面需要加上L后缀。(大小写都可以,建议大写。) * 如果要定义一个float类型的变量,那么在数据值的后面需要加上F后缀。(大小写都可以) >[danger] ##### 案例 ~~~java /* 数字类型 */ public class VarTest{ public static void main(String[] args){ byte b1 = 25; // 声明一个byte类型 // byte b2 = 250; // 报错因为byte 一个字节范围在-128 ~ 127 short s1 = 250; // 声明一个short 类型 // short s2 = 250250; // 报错因为short 两个字节范围在-32768 ~ 32767 int i1 = 250250; // 声明一个int 类型 // int i2 = 2502505006; // 报错因为int 四个字节范围在-2147483648 ~ 2147483647 // int i3 = 2502505006L; // 报错不能将long 类型赋值给int 类型 long g1 = 2502505006L; // 声明一个long 类型 int i4 = 0xff0000; // 十六进制表示的16711680 int i5 = 0b1000000000; // 二进制表示的512 System.out.println("b1:"+b1+","+"s1:"+s1+","+"i1:"+i1+","+"g1:"+g1); } } ~~~ >[danger] ##### 类型不同不能赋值 ~~~java /* 数字类型 */ public class VarTest{ public static void main(String[] args){ // 请问下面的代码是否有错误?若有请指出并说明原因 //int i2 = 25; //byte b2 = i2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失,此时i2如果是动态赋值并不一定会兼容byte 范围 //System.out.println("b2 = " + b2); } } ~~~ >[info] ## 浮点数类型 --`float,double` * Java语言中用于描述小数数据的类型:`float` 和 `double`,推荐`double`类型 >[danger] ##### 案例 * Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望表达float类型的直接量,则需要在直接量的后面加上f或者F ~~~ java public class VarTest{ public static void main(String[] args){ float f1 = 0.3333f; double d1 = 0.3333; } } ~~~ >[danger] ##### 不要用小数去加减 `System.out.println(0.1 + 0.2); // 0.30000000000000004` 运算时可能会有误差,若希望实现精确运算则借助`java.math.BigDecimal`类型