文章目录
前言
Java入门自己记录学习,每天都要加油。
今天学习Java基本运算符和控制语句。
一、运算符和表达式
程序的基本功能是处理数据,任何编程语言都有自己的运算符,根据不同的要求,设置了不同的运算符。
下面按优先顺序列出了各种运算符:
优先级 | 运算符 |
---|---|
一元运算符 | ++ – |
算术运算符 | * / % + - () |
关系运算符 | < > <= >= == != |
逻辑运算符 | 与、或、非 |
三目运算符 | 布尔表达式?表达式1:表达式2 |
赋值运算符 | = *= /= %= += -= |
1.一元运算符
利用一个操作数进行运算,所以是一元的运算符。
运算符 | 含义 |
---|---|
++ | 自身加一 |
– | 自身减一 |
两种用法:
++x:++在前,所以先加后用。
x++:++在后,所以先用后加。
减法用法相同。
int a = 10;
int b = 10;
int sum1 = a + ++b;
System.out.println(b);
int sum2 = a + b++;
System.out.println(b);
System.out.println(sum1);
System.out.println(sum2);
输出结果为:
11
12
21
21
sum1 = a + ++b;
相当于b = b + 1;sum1 = a + b;
此时b = 11,sum1 = 10 + 11;
sum2 = a + b++;
相当于sum2 = a + b; b = b + 1;
此时 sum2 = 10 + 11;b = 12;
2.算术运算
算术运算符:+、-、*、/等基本运算
运算符 | 含义 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
int a = 10;
int b = 4;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
输出结果:
14
6
40
2
2
3.关系运算符
运算符 | 含义 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
== | 等于 |
!= | 不等于 |
这些运算符的规则和数学上的规则是一样的。
关系运算符用于比较两个数据之间的大小关系,返回类型为boolean型。
例如:
int num1 = 3;
int num2 = 4;
int num3 = 5;
boolean result1 = num1 > num2;
boolean result2 = num1 == num3;
boolean result3 = num1 <= num2;
System.out.println("num1 > num2 = " + result1);
System.out.println("num1 == num3 = "+ result2);
System.out.println("num1 <= num2 = " + result3);
输出为:
num1 > num2 = false
num1 == num3 = false
num1 <= num2 = true
需要注意的是:关系运算符中的
==
和!=
既可以操作基本数据类型,也可以操作引用数据类型。
操作引用数据类型时,比较的是引用的内存地址。所以在比较非基本数据类型时,应该使用equals方法。
4.逻辑运算
运算符!
(定义为“非”)、&&
(定义为“与”)、||
(定义为“或”)执行布尔逻辑表达。
逻辑非关系表值表
A | B |
---|---|
true | false |
false | true |
boolean b1 = true;
boolean b2 = false;
System.out.println(!b1);
System.out.println(!b2);
输出结果:
false
true
逻辑与关系值表
A | B | A&&B |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
boolean b1 = true;
boolean b2 = 1 < 3;
boolean b3 = 1 > 3;
boolean b4 = false;
System.out.println(b1 && b2);
System.out.println(b1 && b3);
System.out.println(b3 && b4);
输出结果:
true
false
false
逻辑或关系值表
A | B | A||B |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
boolean b1 = true;
boolean b2 = 1 < 3;
boolean b3 = 1 > 3;
boolean b4 = false;
System.out.println(b1 || b2);
System.out.println(b1 || b3);
System.out.println(b3 || b4);
输出结果:
true
true
false
在运用逻辑循环的时候要注意“短路现象”。
看下面这个例子:
int a = 1;
boolean b1 = true || a++ < 10;
boolean b2 = false && a++ < 10;
System.out.println(b1);
System.out.println(a);
System.out.println(b2);
System.out.println(a);
输出结果为:
true
1
false
1
这是因为||
只要第一个判断条件是true,那么就直接可以得到这个式子是成立的,故而不会执行第二个条件了。
&&
同理,只要第一个是false,那么这个条件就一定不会成立,所以直接输出。
5.三目运算
目运算符(?:)相当于条件判断,表达式x?y:z用于判断表达式x是否为真,如果为真,表达式的值为y;否则表达式的值为z。
int i = (5 > 3) ? 6 : 7;
System.out.println("i = " + i);
输出结果为:
i = 6
而上面的式子等同于:
int i = 0;
if (5 > 3) {
i = 6;
} else {
i = 7;
}
System.out.println("i = " + i);
6.赋值运算符
基本的赋值运算符是“=”,就是将数值赋给变量。
int a = 1;
a = 2;
System.out.println(a);
输出结果是:
2
二、位运算符(了解)
1.位运算符
运算符分类 | 运算符 |
---|---|
一元运算符 | ~ |
移位运算符 | << >> >>> |
位运算 | ~ & | ^ |
赋值运算符 | <<= >>= >>>= &= |= ^= |
非位关系值表
A | ~A |
1 | 0 |
0 | 1 |
与位关系值表
A | B | A&B |
---|---|---|
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
0 | 0 | 0 |
或位关系值表
A | B | A|B |
---|---|---|
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
0 | 0 | 0 |
异或位关系值表
A | B | A^B |
---|---|---|
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
0 | 0 | 0 |
int a = 15;
int b = 2;
System.out.println(a + "&" + b + "=" + (a & b));
System.out.println(a + "|" + b + "=" + (a | b));
System.out.println(a + "^" + b + "=" + (a ^ b));
System.out.println("~" + b + "=" + (~b));
运算结果:
15&2=2
15|2=15
15^2=13
~2=-3
2.移位运算符
运算符 | 含义 |
---|---|
<< | 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) |
>> | "有符号"右移运算符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. |
>>> | "无符号"右移运算符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. |
三、控制语句
1.分支控制语句
if语句
三种基本格式:
if(布尔表达式){
语法块;
}
if(布尔表达式){
符合条件执行语法块;
}else{
否则执行语句块;
}
if(布尔表达式){
符合条件执行语法块;
}else if(){
符合条件执行语法块;
}else if(){
符合条件执行语法块;
}else if(){
符合条件执行语法块;
}else{
都不符合执行语法块;
}
例子1:
int a = 5;
if(a > 0){
System.out.println("a是正数");
}
输出结果:
a是正数
那么如果a不是整数,则不会有输出。
int a = 5;
if(a > 0){
System.out.println("a是正数");
}else {
System.out.println("a是负数");
}
输出结果:
a是正数
假设a是0呢,我们应该项下边这样写:
int a = 0;
if(a > 0){
System.out.println("a是正数");
}else if(a < 0){
System.out.println("a是负数");
}else{
System.out.printfln("a既不是正数也不是负数");
}
输出结果:
a是正数
switch语句
switch ( 表达式 ){
case 常量1:
语句;
break;
case 常量2:
语句;
break;
default:
语句;
break;
}
例子:
int dayOfWeek = 3; // 假设今天是星期三
switch (dayOfWeek) {
case 1:
System.out.println("今天是星期一");
break;
case 2:
System.out.println("今天是星期二");
break;
case 3:
System.out.println("今天是星期三");
break;
case 4:
System.out.println("今天是星期四");
break;
case 5:
System.out.println("今天是星期五");
输出:
今天是星期三
switch语句中表达式的形式可以是byte、short、int、char、字符串。
case分支是要执行的语句。
2.循环控制语句
for 循环
for循环的句法是:
for(循环变量初始化;循环条件;循环变量){
循环操作语句;
}
示例:
for (int i = 0; i < 10; i++) {
System.out.println("这是第" + i + "次循环。");
}
一共会循环十次,从0~9:
这是第0次循环。
这是第1次循环。
这是第2次循环。
这是第3次循环。
这是第4次循环。
这是第5次循环。
这是第6次循环。
这是第7次循环。
这是第8次循环。
这是第9次循环。
它的执行顺序是:
初始化int i = 0;
i < 10;
然后进入循环执行输出语句
然后i++;
循环往复……
……
直到i = 10;不符合循环条件,不会再进行循环。
执行完毕。
while 循环
while循环的句法:
while(布尔表达式){
语句块;
}
案例:
int i = 0;
while (i < 10) {
System.out.println("这是第" + i + "次循环。");
i++;
}
结果:
这是第0次循环。
这是第1次循环。
这是第2次循环。
这是第3次循环。
这是第4次循环。
这是第5次循环。
这是第6次循环。
这是第7次循环。
这是第8次循环。
这是第9次循环。
循环结果和for循环的结果是一样的。只不过方式不同。
while循环,通过用布尔表达式判断条件,通过的话则执行循环体,不通过则结束循环。
do-while 循环
do-while循环句法:
do {
语句块;
}while(布尔表达式);
示例:
int i = 0;
do {
System.out.println("这是第" + i + "次循环。");
i++;
} while (i < 10);
这是第0次循环。
这是第1次循环。
这是第2次循环。
这是第3次循环。
这是第4次循环。
这是第5次循环。
这是第6次循环。
这是第7次循环。
这是第8次循环。
这是第9次循环。
do-while循环和while循环类似。
特殊循环流程控制
break;
continue;
使用案例:
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println("i = " + i);
}
输出结果:
i = 0
i = 1
i = 2
i = 3
i = 4
break跳出循环,不在往后继续循环了。
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue;
}
System.out.println("i = " + i);
}
输出结果:
i = 0
i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9
continue表达的意思也是跳出循环,只不过是终止本次循环,继续进行下次循环,所以在输出结果中跳过了i = 5的输出,但不影响继续循环。
总结
知识点 | 描述 |
---|---|
运算符 | 一元运算符:++ – 算术运算符:+ - * / % 比较运算符:> < >= <= == != 逻辑运算符:&& || ! 三元运算符: ?: 赋值运算符:= += -= *= /= %= |
结构语句 | 分支:if switch 循环:for while do-while (break/continue) |
基本运算符的使用和控制语句等的使用。
加油😀