文章为个人学习记录,仅供参考,如有错误请指出。
上期说到IDEA的安装,具体的使用方法就不记录了。这篇主要记录一些基础语法。
类型转换-自动类型转换
类型范围小的变量,可以直接赋值给类型范围大的变量。
在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。
由小到大:byte–>short / char–>int–>long–>float–>double
注意!表达式的最终结果类型由表达式中的最高类型决定;在表达式中,byte、short、char是直接转换成int类型参与运算的。
类型转换-强制类型转换
类型范围大的变量,不可以直接赋值给类型范围小的变量,会报错,需要强制类型转换。
格式:数据类型 变量2 = (数据类型)变量1、数据
注意!强制类型转换可能会造成数据(丢失)溢出,浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。
基本的算术运算符
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 相加 |
- | 减 | 相减 |
* | 乘 | 与“×”相同,相乘 |
/ | 除 | 与“÷”相同,相除,注意!在Java中两个整数相除结果还是整数 |
% | 取余 | 获取两个数据做除法之后的余数 |
“+”符号在Java中的特殊用途:
“+”符号在有些情况下可以做连接符。
“+”符号与字符串运算时是用作连接符的,其结果依然是一个字符串。
注意!如何识别“+”符号是做运算,还是做连接:能算则算,不能算就连接在一起。
如,“abc” + 5 --> “abc5”;5 + 5 --> “10”。
自增自减运算符
符号 | 作用 |
---|---|
自增++ | 放在某个变量前面或者后面,对变量自身的值加1 |
自减– | 放在某个变量前面或者后面,对变量自身的值减1 |
注意!++、–只能操作变量,不能操作字面量,如a++(✓),2++(×)。
赋值运算符
基本赋值运算符
就是“=”,从右边往左看。
扩展赋值运算符
符号 | 用法 | 作用 | 底层代码形式 |
---|---|---|---|
+= | a+=b | 加后赋值 | a=(a的类型)(a+b) |
-= | a-=b | 减后赋值 | a=(a的类型)(a-b) |
*= | a*=b | 乘后赋值 | a=(a的类型)(a*b) |
/= | a/=b | 除后赋值 | a=(a的类型)(a/b) |
%= | a%=b | 取余后赋值 | a=(a的类型)(a%b) |
注意!扩展的赋值运算符隐含了强制类型转换。
关系运算符、三元运算符
符号 | 例子 | 作用 | 结果 |
---|---|---|---|
> | a>b | 判断a是否大于b | 成立返回true,不成立返回false |
>= | a>=b | 判断a是否大于或者等于b | 成立返回true,不成立返回false |
< | a<b | 判断a是否小于b | 成立返回true,不成立返回false |
<= | a<=b | 判断a是否小雨或者等于b | 成立返回true,不成立返回false |
== | a==b | 判断a是否等于b | 成立返回true,不成立返回false |
!= | a!=b | 判断a是否不等于b | 成立返回true,不成立返回false |
逻辑运算符
把多个条件放在一起运算,最终返回布尔类型的值:true、false。
符号 | 名称 | 例子 | 运算逻辑 |
---|---|---|---|
& | 逻辑与 | 2>1&3>2 | 多个条件必须都是true,结果才是true;有一个是false结果就是false |
逻辑或 | 2>1|3<5 | ||
! | 逻辑非 | !(2>1) | 取反,!truefalse、!falsetrue |
^ | 逻辑亦或 | 2>1^3>1 | 前后条件的结果相同,就直接返回false;前后条件的结果不同,才返回true |
符号 | 名称 | 例子 | 运算逻辑 |
---|---|---|---|
&& | 短路与 | 2>10&&3>2 | 判断结果与“&”一样,过程不同:左边为false,右边则不执行 |
| | 短路或 | 2>1| |
注意!在Java中,“&”、“|”:无论左边是false还是true,右边都要执行。由于“&&、||”运算效率更高,在开发中用的更多。
switch分支结构
通过比较值是否相等,来决定执行哪条分支。
switch分支的执行流程:
-
先执行表达式的值,再拿这个值去与case后的值进行匹配。
-
在哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。
-
如果全部case后的值与之匹配都是false,则执行default块的代码。
if、switch的比较:各自适合什么业务场景?
-
if在功能上远远强大于switch。
-
当前条件是区间的时候,建议使用if分支结构来实现。
-
当条件是与一个一个的值比较的时候,建议用switch更合适(格式良好,性能较好,代码优雅)。
注意!
-
表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
-
case给出的值不允许重复,且只能是字面量,不能是变量。如case 1(✓),case a(×)。
-
正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
break,continue
break:跳出并结束当前所在循环的执行。
continue:用于跳出当前循环的当次执行,直接进入循环的下一次执行。
注意!
break:只能用于结束所在循环或者结束所在switch分支的执行。
continue:只能在循环中进行使用。
死循环
可以一直执行下去的一种循环,如果没有干预不会停下来。通常用在服务器程序中。
写法:
for(;;){
System.out.println("Hello World1");
}
while(true){
System.out.println("Hello World2");
}//经典写法
do{
System.out.println("Hello World3");
}while(true);