整型
整数类型:byte、short、int、long
- Java中各整数类型有固定的表数范围和长度,不受具体操作系统影响,以此保证Java程序的可移植性
类型 |
占用存储空间 |
表数范围 |
byte |
1字节=8bit位 |
-128~127 |
short |
2字节 |
-2e15~2e15-1 |
int |
4字节 |
-2e31~2e31-1(约21亿) |
long |
8字节 |
-2e63~2e31-1 |
- 定义long类型的变量,赋值时需要以
l
或L
作为后缀
- Java程序中变量通常声明为int型,除非不足以表示较大的数,才会使用long
- Java的整型
常量默认为int型
知识补充:计算机存储单位
-
字节(byte): 是计算机用于
计算存储容量
的基本
单位,一个字节等于8 bit
-
位(bit): 是数据存储的
最小
单位。二进制数系统中,每一个0或1就是一个位,叫做bit(比特),其中8bit称为一个字节(byte)
-
转换关系:
- 8 bit = 1 byte
- 1024 Byte = 1 KB
- 1024 KB = 1 MB
- 1024 MB = 1 GB
- 1024 GB = 1 TB
浮点型
浮点类型:float、double
- 与整数类型相似,Java浮点类型也有其固定的表数范围和字段长度,不受具体操作系统影响
类型 |
占用存储空间 |
表数范围 |
单精度float |
4字节 |
-3.403E38~3.403E38 |
双精度double |
8字节 |
-1.798E308~1.798E308 |
- 浮点型常量有两种表示形式
- 十进制数形式。如:2.36、3.59(必须有小数点)
- 科学计数法形式。如:2.12E2、5.12e6等
- float:单精度 ,尾数可以精确到7位有效数字,很多情况下,精度很难满足需求
- double:双精度 ,精度是float的两倍,通常采用这种类型
- 定义float类型的变量时,赋值时需要使用
F
或f
作为后缀
- float类型表数范围大于long类型表数范围,但精度不高
- Java的浮点型
常量默认为double型
浮点型的精度说明
- 并不是所有的小数都可以精确的使用二进制浮点数表示。二进制浮点数不能精确表示0.1/0.01/0.001这样的10的负次幂
- 浮点类型float、double的数据不适合在
不容许舍入误差
的金融计算领域。如需精确
的数字计算或保留指定位数的精度,需使用BigDecimal类
- 测试
System.out.println(0.1+0.2);
// 结果:0.30000000000000004
float f1=123123123f;
float f2=f1+1;
System.out.println(f1);
// 结果:1.2312312E8
System.out.println(f2);
// 结果:1.2312312E8
System.out.println(f1==f2);
// 结果:true
案例
案例1:定义圆周率为3.14,分别求半径为1.2、2.5、6的圆的面积
class FloatDoubleTest{
public static void main(String[] args) {
double r1=1.2;
double r2=2.5;
int r3=6;
double PI=3.14;
double s1=PI*r1*r1;
double s2=PI*r2*r2;
double s3=PI*r3*r3;
System.out.println("半径为1.2的圆的面积为:"+s1);
System.out.println("半径为2.5的圆的面积为:"+s2);
System.out.println("半径为6的圆的面积为:"+s3);
}
}
/*结果:
半径为1.2的圆的面积为:4.521599999999999
半径为2.5的圆的面积为:19.625
半径为6的圆的面积为:113.03999999999999 */
案例2:摄氏温度与华氏温度换算,华氏温度为80度
class TemplateTest{
public static void main(String[] args) {
double f=80.0;
double c;
c=(f-32)/1.8;
System.out.println("80华氏度为:"+c+"摄氏度");
}
}
//结果:80华氏度为:26.666666666666664摄氏度