Java小白入门到实战应用教程-运算符
上节回顾
在上节的内容中我们了解了变量和基本数据类型的内容,现在回顾一下上节课的内容。
声明变量的语法为:
数据类型 变量名;
其中在java中一共有8中基本数据类型,分别是:byte,short int long float double char boolean。通过不通的基本数据类型可以声明携带不同值的变量。
说明
在本节内容中我们将了解算术运算符和赋值运算符,通过字面意思大家也能get到这两种语法的作用是什么,顾名思义算术运算符是用来计算数值的。对于赋值运算符我们前面学习变量的时候已经用到了一个赋值运算符“=”。
所以赋值运算符的作用就是给变量进行赋值操作的。
正文
算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下面列出java中所有的算术运算符:
操作符 | 所代表意思 |
---|---|
+ | 加法 - 取两数相加的结果 |
- | 减法 - 取两数相减的结果 |
* | 乘法 - 取两数相乘的结果 |
/ | 除法 - 取两数相除的商值 |
% | 取余 - 取两数相除的余数 |
++ | 自增: 把变量自身值加1,只能用于变量本身 |
– | 自减: 把变量自身值减1,只能用于变量本身 |
//创建一个class类,命名为One//在前面我们提到了,算术运算符的作用是用来计算数值的,在本例子中我们做了两个int型变量相加,因为数值1和2已经赋值给变量a和b了,所有a和b就代表的是数字1,2.所以变量a和b是可以进行计算的。直接进行数字的计算也是可以的。public class One {public static void main(String[] args) {//声明一个int整数的变量a,赋予初始值为1int a = 1;//声明一个int整数的变量b,赋予初始值为1int b = 2;//声明一个int整数的变量c,把a+b的结果赋值给cint c = a + b;//打印一下c的值System.out.println(c);//声明一个int整数的变量d,把2+2的结果赋值给dint d = 2 + 2;//打印一下d的值System.out.println(d);//声明一个int整数的变量e,把b+a的结果赋值给eint e = b - a; //e的结果为1//声明一个int整数的变量f,把b * a的结果赋值给fint f = b * a; //b 乘以 a 即为 2 * 1,所以f的值为2//声明一个int整数的变量g,把b / a的结果赋值给gint g = b / a; //b 除以 a 即为 2 / 1,所以g的值为2//声明一个int整数的变量h,计算3 % 2的值赋给hint h = 3 % 2; //3 除以 2取余数 即为 2 % 1,所以h的值为1System.out.println(h);//做a++操作,++的作用就是将自身进行加1操作a++; //此时a的值就变成了2System.out.println(a);//做b--操作,aa的作用就是将自身进行减1操作b--; //此时b的值就变成了1System.out.println(b);}
}
在上面的代码中,我们进行了算术运算符的应用,其中有两个算术运算符比较有意思,++和–。
这两个符号涉及到先执行和后执行的问题。怎么理解呢,我们直接上例子
public class One {public static void main(String[] args) {int one = 1; //声明一个int型变量one,并赋初始值为1;int two; //声明一个int型变量two//变量one执行++操作;one++; //此时one的值应该变成了2了//变量one再次执行++操作; ++符号可以用在变量名的前面和后面。++one; //此时one的值应该变成了3了System.out.println(one); //打印一下one的值,在控制台应该输出的是3//前面我们看到++可以用在变量前后都可以将本身的值加1,那有什么区别呢?//此时one的值已经为3了。two = one++; //将one++ 赋值给变量two,思考:那么此时变量two的值是多少呢?System.out.println(two); //打印此时two的值,此时two的值应该是3System.out.println(one); //打印此时one的值,此时one的值应该是4//此时one的值已经为4了two = ++one; //将++one 赋值给变量two,思考:那么此时变量two的值是多少呢?System.out.println(two); //打印此时two的值,此时two的值应该是5System.out.println(one); //打印此时one的值,此时one的值应该是5/*通过上面的例子大家也能看出区别了,two = one++; 此时one++的值还是本来的值,然后进行了赋值操作,完了后才做了加1的操作。two = ++one; 此时++one是先做了加1的操作,然后再进行了赋值操作。所以++在变量前面和后面有个区别就是先加 和 后加 的区别。--运算符同样的道理*/}
}
赋值运算符
在java中,所有的赋值运算符整理如下表所示:
操作符号 | 说明 | 解释 |
---|---|---|
= | 赋值运算符,将右侧操作数赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
public class One {public static void main(String[] args) {//=int a = 1; // 将1赋值给声明的int型变量aint b = a;//将变量a 赋值给 声明的int型变量b。int c = b + a;//将变量a和变量b相加的值赋值给 左侧声明的变量c// +=a += 1; //将a 和 1相加,然后赋值给变量a// a+=1 和 a = a+1的意思是一样的。}
}
//位运算符放到后面再说
关系运算符
在Java编程语言中,关系运算符用于比较两个值之间的关系,并返回一个布尔值(true或false)。这些运算符经常用于控制流语句(如if语句)中,它们帮助我们根据条件执行不同的代码块。对于控制语句逻辑,放到下一节再将。
Java支持以下关系运算符:
- 等于 (
==
):检查两个操作数的值是否相等。如果相等,则条件变为真。 - 不等于 (
!=
):检查两个操作数的值是否不相等。如果不相等,则条件变为真。 - 大于 (
>
):检查左操作数是否大于右操作数。如果是,则条件变为真。 - 小于 (
<
):检查左操作数是否小于右操作数。如果是,则条件变为真。 - 大于等于 (
>=
):检查左操作数是否大于或等于右操作数。如果是,则条件变为真。 - 小于等于 (
<=
):检查左操作数是否小于或等于右操作数。如果是,则条件变为真。
注意:通常经过关系运算符得到的结果是布尔值boolean,也就是结果是true或者false。
public class One {public static void main(String[] args) {int a = 10;int b = 20;boolean res = a == b;//将a==b的结果赋值给boolean类型的变量resSystem.out.println(res); // 打印一下结果,变量res的值为 false。//我们在变量那一节学到了boolean的变量的值只能是true和false,代表的是真或者假。//而关系运算符也叫可以理解成比较运算符,比如上面的例子 a==b的意思就是,a和b的值是否相等。//其他的关系运算符同理。}
}
逻辑运算符
在Java编程语言中,逻辑运算符用于关系运算符组合或多个布尔值,常常用在条件语句和循环中,以控制程序的流程。
逻辑运算符可以对多个布尔值进行操作,返回一个布尔值的结果。
Java支持以下逻辑运算符:
- 逻辑与 (
&&
):当且仅当两个操作数都为true时,结果才为true。 - 逻辑或 (
||
):至少有一个操作数为true,那么结果就是true。 - 逻辑非 (
!
):用于反转操作数的逻辑状态。如果条件为true,则逻辑非运算符会使其变为false,反之亦然。
值得注意的是,&&
和||
运算符具有“短路”行为:
- 对于
&&
运算符,如果左侧操作数为false,那么整个表达式就已经确定为false,因此不会再去评估右侧的操作数。 - 对于
||
运算符,如果左侧操作数为true,那么整个表达式就已经确定为true,因此不会再去评估右侧的操作数。
public class One {public static void main(String[] args) {//&&:两个操作数都为true,最终的结果才为true,否则为false。boolean a = true && true;System.out.println(a);boolean b = true && false;System.out.println(b);// ||:至少有一个为true,最终的结果为trueboolean c = true || true;System.out.println(c);boolean d = true || false;System.out.println(d);boolean e = false || false;System.out.println(e);}
}
在上面的例子中,我们直接用boolean类型的值进行的。我们结合前面学到的关系运算符再看一个复杂的例子
public class One {public static void main(String[] args) {//&&:两个操作数都为true,最终的结果才为true,否则为false。boolean a = 1 == 1 && 10 > 5;System.out.println(a);//结果为true//解释:&&两边操作数都为true最后的结果才是true,左边1==1是true,右边10>5是true,所以最终的结果是true,然后赋值给变量a,所以a的值为true。boolean b = 1 == 2 && 10 > 5;System.out.println(b);//结果为false// ||:至少有一个为true,最终的结果为trueboolean c = 1 == 1 || 10 < 5;System.out.println(c);//结果为true//解释:&&两边操作数只要有一个为true最后的结果就是true,左边1==1是true,右边10<5是false,所以最终的结果是true,然后赋值给变量c,所以c的值为true。}
}
三元运算符
也叫条件运算符,也叫三目运算符
语法:
变量类型 变量名 = (表达式判断)? 值1 : 值2;
解释:
就是当表达式判断为true时,将值1赋值给声明的变量,否则将值2赋值给变量。
public class One {public static void main(String[] args) {int a = 1 == 1 ? 2 : 3;System.out.println(a);//此时a的值为2//解释:表达式1==1的结果肯定是true,所以三元运算符的最终结果为2,将2赋值给了变量aint b = 1 == 2 ? 2 : 3;System.out.println(a);//此时a的值为3}
}