老黑讲Java之8种基本类型double、char、boolean
1、使用double进行浮点数的运算
1、double和float类型表达浮点数(小数);
2、double类型的精度值是float类型的两倍,这正是双精度的来由;
3、大多数使用double表达浮点数,例如:
double pi = 3.1415926;
double r = 4;
double s = pi * r * r;
System.out.println(s);

2、浮点数直接量是double类型
1、浮点数的直接量有两种写法:
1)、通常写法,如:0.1、10、.5;
2)、科学计数法,如:1.23E2、1.23e2、1.23E-2,表达1.23E2表示1.23乘以10的2次方。
2、整型直接量为int型,浮点直接量为double类型,需要用float类型表达直接量,直接量后需要加“f”或“F”后缀,
如:float f = 0.1 //编译错误,应改为0.1F
3、double运算会出现舍入误差
1、2进制系统无法精确表示1/10,就像十进制系统无法表达1/3。
2、2进制表示10进制数会有舍入误差,在要求精确运算的业务会导致错误。
public static void main(String[] args) {
double a = 1.0;
double b = 0.9;
System.out.println(a-b);
//结果为0.09999999999999998
}
注意:结果让人惊讶吧,往往程序运行的结果不能以人的主观判断,需要了解程序本身的运行机制,才能理解程序的运行结果。

4、char类型
1、char类型是一个16位无符号整数,这个整数对应字符编码;
2、Java字符类型采用Unicode字符集编码,Unicode是世界通用的定长字符集,所有字符都是16位。
3、字符直接量采用字符的形式,如:'A',采用16进制的表示形式,如:‘\u4e2d’;
5、char型变量赋值
对char型变量赋值时,采用以下三种方式:
1)、字符直接量,如:‘A’,实际上变量存储是该字符的Unicode编码(无符号整数值),一个char型变量只能存储一个字符。
2)、整型直接量:范围在0~65535之间的整数,变量中存储整数值对应的Unicode字符。如:
char c1 = 66;
char c2 = 'A';
char c3 = '\u0041';
6、boolean变量进行关系运算
1、boolean适合逻辑运算,表示某个条件是否成立;
2、boolean存储true或false,true表示条件成立而false表示条件不成立;
3、boolean用来存储关系运算的结果。
public static void main(String[] args) {
int a = 10;
boolean result = a >11;
System.out.println(result);//false
if(result){
System.out.println("比11大");
}else{
System.out.println("比11小");//比11小
}
}

7、基本类型间的转换
不同的基本类型直接可以相互转换:
1、自动类型转换:从小类型到大类型可以自动转换;
2、强制类型转换:从大类型到小类型需要强制转换。如:
大类型 变量名 = (大类型)小类型。
注意:强制类型转换,可能造成精度损失或溢出。
8、强制类型转换精度丧失和溢出
强制类型转换精度有可能丧失和溢出。
请看如下代码,理解精度丧失和溢出的概念
public static void main(String[] args) {
double pi = 3.1415926535897932384;
float f = (float)pi;
System.out.println(f);
}

9、总结
国人的意识中,过完正月十五新年才真正开始,在此老黑先祝各位喜欢Java的朋友们学习更进一步,再祝各位朋友新年心想事成,万事如意!!
