数据类型
1、浮点型
float 单精度【4个字节】
double 双精度【8个字节,精度较高】
在Java语言当中,所有的浮点字面值【3.0】,默认被当做double类型来处理。
要想该字面值当做float类型来处理,需要在字面值后面添加F/f
注意:
double和float在计算机内部二进制存储的时候存储的都是近似值。
在现实世界当中有一些数字是无限循环的,列如:3.3333333…
计算机资源是有限的,用有限的资源存储无限的数据只能存储近似值。
2、布尔型
关于布尔型数据类型:boolean
在Java语言当中boolean类型只有两个值:true、false,没有其他值。
不像C语言当中,0和1可以表示假和真。在底层存储的时候boolean类型占用1个字节,因为实际存储的时候false底层是0,true底层是1.
布尔类型在实际开发当中非常需要,经常使用逻辑运算和条件控制语句当中。
3、类型转换
关于基本数据类型之间的互相转换:
转换规则:
1 八种基本数据类型当中除布尔类型之外剩下的7种类型之间都可以互相转换。
2 小容量向大容量转换,称为自动类型转换,容量从小到大排序:
byte < short ,char < int < long < float < double
注: 任何浮点类型不管占用多少个字节,都比整数型容量大。
char 和 short可表示的种类数量相同,但是char可以取更大的正整数 。3 大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
4 当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量。
5 byte,short,char混合运算的时候,各自先转换成int类型再做运算。
6 多种数据类型混合运算,先转换成容量最大的那种类型再做运算。
运算符
4、算数运算符
关于Java编程中的运算符之:算数运算符
+ | 求和 |
- | 相减 |
* | 乘积 |
/ | 商 |
% | 取余数【取模】 |
++ | 自加1 |
- - | 自减1 |
小结:++运算符可以出现在变量前,也可以出现在变量后,,无论是变量前还是变量后只要++运算结束,该变量中的值一定会自加1
++a:先自增1,在进行运算。
a++:先运算,再自增1。
5、关系运算符
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
= 是赋值运算符;
== 是关系运算符;
关系运算符的结果一定是布尔类型。
public class OperatorTest
{
public static void main(String[] args){
int a=10;
int b=10;
System.out.println(a>b); //false
System.out.println(a>=b); //ture
System.out.println(a<b); //false
System.out.println(a<=b); //true
System.out.println(a==b); //true
System.out.println(a!=b); //false
}
}
6、逻辑运算符
逻辑运算符 | 解释 |
& | 逻辑与 (两边的算子都是true,结果才是true) |
! | 逻辑非(取反,!false就是true,!true就是假,这是一个单目运算符) |
^ | 逻辑异或(两边的算子只要不一样,结果就是true) |
&& | 短路与(第一个表达式执行结果是false,会发生短路与) |
| 逻辑或(两边的算子只要有一个是true,结果就是true)
|| 短路或(第一个表达式执行结果是true,会发生短路或)
1 逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型。
2 短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象。
3 短路或和逻辑或最终的运算结果是相同的,只不过短路或存在短路现象。
** 逻辑与和短路与的区别**
public class Test01
{
public static void main(String[] args){
int x=10;
int y=8;
System.out.println(x < y& ++x < y); //进行了++x的操作
System.out.println(x); //x=11
}
}
public class Test02
{
public static void main(String[] args){
int x=10;
int y=8
System.out.println(x < y& ++x < y); //因为x<y是false,直接短路,后面的操作就不在执行
System.out.println(x); //x=10
}
}
从某个角度来看,短路与更智能。由于后面的表达式可能不执行,所以执行效率较高。这种方式在实际开发中使用较多。短路与比逻辑与使用的多。短路与更常用。
但是,在某些特殊的逻辑业务中,要求运算符两边的算子必须全部执行,此时必须使用逻辑与,不能使用短路与,使用短路与可能导致右边的表达式不执行。