Java运算符总结
一、运算符
运算符:对字面量或者变量进行操作的符号。
表达式:用运算符把字面量或者变量连接起来,符合Java语法句子的式子就能称为表达式。(例:a+b)
1.算术运算符
- 在代码中,如果有小数参与计算,结果有可能不精确;
- +(加),-(减),*(乘),/(除),%(取余)。
数值拆分:
个位:数值 % 10
十位:数值 / 10 % 10
百位:数值 / 100 %10
千位:数值 /1000 % 10
字符串的“+”操作
1.当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算数运算符。它会将前后的数据进行拼接,并产生一个新的字符串。(例:“123”+123;输出 “123123”)
2.连续进行“+”操作时,从左到右逐个执行
(例: 1+99+''嘿嘿" ; 输出"100嘿嘿")
类型转换的分类
数字进行运算时,数据类型不一样不能运算,需要转成一样的才能运算。
1.隐式转换(自动类型提升)
规则:①把一个取值范围小的数值转成取值范围大的数值。
②byte,short,char 三种类型的数据在运算的时候,都会直接先提升为int,再进行计算。
(byte < short < int < long < float < double)
2.强制转换
规则:①取值范围大的数值赋值给取值范围小的变量
②目标数据类型 变量名=(目标数据类型)被强制转换的数值。(例:int a=20;byte b=(byte)a;)
2.自增自减运算符
| 符号 | 作用 |
|---|---|
| ++ | 加(变量的值加 1) |
| – – | 减(变量的值减 1) |
两种用法:
①单独使用:++和–无论是 放在变量的前边还是后边,单独写一行结果是一样的。
②参与计算:
a++(先用后加)
++a(先加后用)
3.赋值运算符

4.关系运算符

5.逻辑运算符

短路逻辑运算符

6.三元运算符
需求:定义一个变量记录两个整数的较大值
格式:变量类型 变量=关系表达式 ?表达式 1:表达式 2;(例:int max=number 1 > number 2 ?number 1 :number 2;结果输出最大值)。
计算规则:
- 首先计算关系表达式的值
- 如果值为true,表达式1的值就是运算结果
- 如果值为false,表达式2的值就是运算结果
运算符优先级

二、流程控制语句
1.顺序结构
顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。
if语句
第一种格式:(单条件判断)
if(关系表达式){
语句体;
}

第二种格式:(双条件判断)
if(关系表达式){
语句体1;
} else{
语句体2;
}
第三种格式:(多条件判断)
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
…
else{
语句体 n+1;
}
switch语句
格式:switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体 n+1;
break;
}


1.default的位置和省略
位置:default不一定是写在最下面,我们可以写在任意位置;只是习惯写在最下面。
省略:default可以省略,语法不会有问题,但是不建议省略。
2.case穿透
语句体中没有写break导致的。
执行流程:
首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配。 如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。 如果没有发现break,那么程序会继续执行下一个case的语句体,一直遇到break或者右大括号为止。
使用场景:
如果多个case的语句体重复了,那么我们考虑利用case穿透去简化代码。|
public class demo2 {
public static void main(String[] args) {
int number = 1;
switch (number){
//jdk12以后的版本特性
//语句体只有一句可以省略大括号
case 1 -> System.out.println("一");
case 2 -> System.out.println("二");
case 3 -> System.out.println("三");
}
}
}

Switch 和 if 第三种格式各自的使用场景
if的第三种格式:一般用于对范围的判断
Switch:把有限个数据一一列举出来,让我们任选其一
for循环
格式:
for(int i =1;i <=10 ;i++){
System.out.println(“HelloWorld”);
}
- 初始化语句只执行一次
- 判断语句为true,循环继续
- 判断语句为false,循环结束

扩展小点:
1.求和的变量不能定义在循环的里面,因为变量只在所属的大括号中有效
2.如果我们把变量定义在循环的里面,那么当前变量只能在本次循环中有效。 当本次循环结束之后,变量就会从内存中消失。
3.第二次循环开始的时候,又会重新定义一个新的变量。
4.结论:如果以后我们要写累加求和的变量。可以把变量定义在循环的外面。
while循环
格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
循环下面其他语句
- 初始化语句只执行一次
- 判断语句为true,循环继续
- 判断语句为false,循环结束
do while循环
格式:
初始化语句;
do {
循环体语句;
条件控制语句;
} while (条件判断语句);
- 先执行后判断
无限循环和跳转控制语句
1.无限循环:
- for ( ; ;){
System.out.println(“学习”);
} - while(true){
System.out.println(“学习”);
} - do{
System.out.printin(“学习”);
}while(true);
2.跳转控制语句:
在循环过程中,跳到其他语句上执行。
①continue:跳过本次循环,继续执行下次循环
②break:结束整个循环
2.获取随机数
获取随机数:Java帮我们写好一个类叫Random,这个类就可以生成一个随机数。
使用步骤:
1.导包- Random这个类在哪
import java.util.Random;
导包的动作必须出现在类定义的上边。
2.创建对像一表示我要开始用Random这个类了
Random r = new Random ();
上面这个格式里面,只有是变 r 量名,可以变,其他的都不允许变。
3.生成随机数-真正开始干活了
int namber = r . nextInt(随机数的范围);
上面这个格式里面,只有number是变量名,可以变,其他的都不允许变。
秘诀:
//导包
import java.util.Random;
public class demo4 {
public static void main(String[] args) {
//创建对象
Random rand = new Random();
//生成随机数
//口诀:包头不包尾,包左不包右
//范围:0~99
int x = rand.nextInt(100);
System.out.println(x);
}
}

用来生成任意数到任意数之间的随机数 (例:7-15)
1.让这个范围头尾都减去一个值,让这个范围从 0 开始 (例:-7 变成 0~8 )
2.尾巴+1 (例:8+1=9)
3.最终的结果,再加上第一步减去的值。
1267

被折叠的 条评论
为什么被折叠?



