一:运算符和表达式
运算符:对字面量和变量进行操作的符号 eg:+
表达式:用运算符把字面量和变量连接起来的式子 eg:int a = b + c
算数运算符:+ 加 - 减 * 乘 / 除 % 取余
/:整数相除只能得到整数,想要得到小数,需要有小数参与运算(但结果可能不准确)
eg:System.out.println(10/3) -> 3 System.out.println(10.0/3) -> 3.3333....335
二:隐式转换
在Java的计算式中,取值范围小的值默认提升类型为取值范围大的值
byte -> short -> int -> long -> float -> double
eg:byte b = 10; int i = 20; c = i + b ; c是int型
ps:byte,short,char类型的变量在计算时会提升为int型参与计算。
三:强制转换
把一个取值范围大的值赋值给一个取值范围小的值,需要通过强制转换实现
目标数据类型 变量名 = (目标数据类型) 被强制转换的数据
eg:double a = 12.3; int b = (int) a;
ps:强制转换类型有可能导致数据发生错误 -> 数据的精度丢失
四:字符串的+操作
当 ’+‘ 的操作中出现字符串的时候,这里的 '+' 就是字符串的连接符,将前面的数据和后面的数据拼接成新的字符串
eg:“abc” + 1 = “abc1”
五:字符的+操作(ASCII码)
当 “+” 的操作出现了字符的时候,会将字符拿到计算机内置的ASCII码表中去查询对应的数字,再使用ASCII码进行计算
eg:char c = 'a'; int result = c +1; System.out.println(result); //这里输出的是97
a对应的ASCII码是96 96+1=91
AT:这里可以通过强制转换把数字转换成ASCII码,如下
int a = 96; char x = (char)a;
六:自增自减运算符
++:自增运算符,放在变量的前面,我们叫做先++,比如++a,++在前,现加后用
放在变量的后面,我们叫做后++,比如a++,++在后,先用后加
eg:int x = 10; int y = x++; //x = 11 y = 10
--:自减运算符,同上
七:赋值运算符
=:赋值 eg:int a = 10
+=:加后赋值
-=:减后赋值
*=:乘后赋值
/=:除后赋值
%=:取余后赋值
ps:+=,-=,/=,*=,%=底层都隐藏了一个强制的类型转换,会将等号后面的算式强制转换为前面的类型。
八:关系运算符
==:a==b,判断是否相等,成立为Ture,不成立为False
!=:判断是否不相等
>:判断是否大于
>=:
<:
<=:
ps:关系运算符的结果都是boolean类型。
九:逻辑运算符
&:逻辑与,两边都是真,则真
|:逻辑或,两边都为假,则假
^:逻辑异或,两边相同则假,不同则真
!:逻辑非,取反
十:短路逻辑运算符
短路逻辑运算符用来提高程序运行效率 ,如果左边能够确定表达式结果,右边不执行
&&:短路与,效果与&相同,但是先判断左边是否为True,如果不为True,则直接结束
||:短路或,效果与|相同,但是先判断左边是否为True,如果为True,则直接结束
ps:如果有三个逻辑判别式,则可以直接用两个判断符连接
eg:a==6 | b==6 | c==10
十一:三元运算符
格式: 表达式 ?表达式1:表达式2;(表达式为真,则执行表达式1,表达式为假,则执行表达式2) 注意:三元表达式的结果一定要被用,要么被记录,要么被打印。
eg:int max = a>b ? a : b ; (如果a>b,则结果为a...)
十二:基本数据类型的存储
byte:占用1个字节
short:占用2个字节
int:占用4个字节
long:占用8个字节
ps:ctrl + alt + L 自动格式化代码