目录
Java中有八种基本类型,都是Java语言预先定义好的,并且是关键字。
这八种基本类型分别是:
整型 (4种)
字符型 (1种)
浮点型 (2种)
布尔型(1种)
1.整型
整型变量用于存放整数
byte
short
int
long
区别在于不同类型的整型,最大值,最小值不一样。如果试图给byte类型的变量赋予超出其范围的值,就会产生编译错误,这个时候就需要进行类型转换。
2.字符型
char类型用于存放一个字符,值用单引号'表示 (双引号表示字符串)。其长度和short一样,也是16位的。只能存放一个字符,超过一个字符就会产生编译错误
3.浮点型
浮点数类型有两种
float 长度为32位
double 长度为64位 注意: 默认的小数值是double类型的
所以 float f = 54.321会出现编译错误,因为54.321的默认类型是 double,其类型 长度为64,超过了float的长度32
在数字后面加一个字母f,直接把该数字声明成float类型,float f2 = 54.321f,这样就不会出错了
如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转
例如:float a=1.3; 会编译报错,正确的写法 float a = (float)1.3;或者float a = 1.3f;(f或F都可以不区分大小写)
在java中运行一下代码
System.out.println(2.00-1.10);
输出的结果是:0.8999999999999999
很奇怪,并不是我们想要的值0.9
再运行如下代码:
System.out.println(2.00f-1.10f);
输出结果:0.9
又正确了,为什么会导致这种问题?程序中为什么要尽量避免浮点数比较?在java中浮点型默认是double的,及2.00和1.10都要在计算机里转换进行二进制存储,这就涉及到数据精度,出现这个现象的原因正是浮点型数据的精度问题。
。。。。
注意:
- 程序中应尽量避免浮点数的比较
- float、double类型的运算往往都不准确
解决方法:
使用BigDecimal提供的方法进行比较或运算
4.布尔型
布尔型用于表示真假
其长度为1
boolean b1 = true; boolean b2 = false;
分别代表真假,虽然布尔型真正存放的数据是0(false) 1(true),但是,不能直接使用0 1 进行赋值
5.(不是基本类型)String类型
String类型其实并不是基本类型,但是它是如此广泛的被使用,常常被误以为是一种基本类型。String类型是Immutable的,一旦创建就不能够被改变。