Java 基础
7.Java 运算符
7.1算术运算符
加减乘除与 Python 中一致,分别为 +-*/
。取余为 %
。不同的有以下两种,分别为自增和自减。
自增为 ++
,自减为 --
。即一个数字加1或者减1。
public class HelloDemo { public static void main(String[] args) { // 运算符 int i1 = 10; int i2 = 22; int i3 = 25; int i4 = 66; System.out.println("i1 + i2 = " + (i1 + i2)); System.out.println("i3 - i2 = " + (i3 - i2)); System.out.println("i4 * i1 = " + (i4 - i1)); System.out.println("i2 / i1 = " + (i2 / i1)); // 自增自减 ++i1; System.out.println(i1); --i1; System.out.println(i1); } }
详解自增/自减:
int b =++a;
上述过程其实为两步,第一步为加 1 后重新赋值,第二步为将新值 a 赋值给 b。
int b = a++
此过程与之前不同,它是先将 a 赋值给 b,然后 a 自增操作。
自减同理
7.2 关系运算符
关系运算符即比较两个数值之间的关系,如大小等。与 Python 中相同的为 ==
表示相等; !=
表示不相等; >
表示大于; <
表示小于; >=
表示大于等于; <=
表示小于等于。
public class HelloDemo { public static void main(String[] args) { int s = 10; int n = 20; System.out.println("s == n = " + (s == n) ); System.out.println("s != n = " + (s != n) ); System.out.println("s > n = " + (s > n) ); System.out.println("s < n = " + (s < n) ); System.out.println("n >= s = " + (n >= s) ); System.out.println("n <= s = " + (n <= s) ); } }
7.3 位运算符
位运算符即将十进制等数字转换为二进制数字后,对每一个位置上字符进行操作。如下示例,大家可以理解一下:
A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
操作符 | 描述 |
& | 如果相对应位都是1,则结果为1,否则为0 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 |
^ | 如果相对应位值相同,则结果为0,否则为1 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
7.4 逻辑运算符
逻辑运算符即与或非关系。与 Python 不同, &&
表示与关系; ||
表示或关系; !
表示非关系。
7.5 赋值运算符
下面列出 Java 中的赋值运算符:
操作符 | 描述 |
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
<< = | 左移位赋值运算符 |
>> = | 右移位赋值运算符 |
&= | 按位与赋值运算符 |
^ = | 按位异或赋值操作符 |
| = | 按位或赋值操作符 |
7.6 三元运算符
Java 中三元运算符与 Python 中大不一样,其表示为:
类型变量=表达式?如果条件为真时的操作:条件为假时的操作
关键在于符号 ?:
7.7 instanceof 运算符
它是用来判断某个变量是否为某类型或者某个对象是否为某类或者接口的一个对象。如果是为真。例如:
String name = "Ethan"; boolean result = name instanceof String; class Vehicle {} public class Car extends Vehicle { public static void main(String[] args){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result); } }
7.8 运算符优先级
运算符优先级是如果代码中包含多种运算符,那么优先执行谁的问题。其如数学,有括号先括号(小括号优先于中括号),乘除优先于加减等等。
下面附网上一个表格,具有最高优先级的运算符在表的最上面,最低优先级的在表的底部,以供大家忘记时进行查看:
类别 | 操作符 | 关联性 |
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !〜 | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
8.循环
循环即将相同的逻辑多次执行。与 Python 相同,它也有 while 循环和 for 循环,但是其比 Python 多了一种 do...while
循环。下面即详细看看。
8.1 while 循环
先来看其基本语法,即布尔表达式为 True 时循环一直执行。
while( 布尔表达式 ) { // 循环执行逻辑 }
示例如下:
public class Test { public static void main(String args[]) { // while 循环 int int1 = 10; while (int1 > 0) { System.out.println(int1); int1--; } } }
8.2 for 循环
for 循环如同 Python 中的 for 循环一样,生来就是简化代码操作的。
for(初始化; 布尔表达式; 更新) { // 代码语句 }
大家看到上述语法也许有些懵逼,我们类比 Python 中的 for 循环进行解读。Python 中:
for i in range(3): print(i)
要想达到同样的效果,Java 中代码如下:
public class Test{ public static void main(String args[]) { // for 循环 for (int x = 0; x < 3; x = x + 1){ System.out.println(x); } } }
即在 for 后的括号中,先填写一个控制循环的变量,再填写一个判断条件,最后更新变量值已达到控制循环的目的。
从上述代码可以看出 Java 确实代码量比 Python 多一点。
增强 for 循环:
大家想起 Python 中有如下操作:
namelist = ['Ethan', 'yan', 'liang'] for name in list: print(name, end=",")
可以循环遍历姓名列表并且打印输出,那么 Java 中呢?Java 从 Java5 的时候引入了一种方式,称为增强操作,写为如下:
public class Test { public static void main(String args[]){ // 增强for循环 String [] namelist = {"Ethan", "yan", "liang"}; for (String name: namelist) { System.out.print(name); System.out.print(","); } } }
注意:其中列表并不是中括号,而是大括号。 print()
函数打印输出后不会执行换行操作。
8.3 do... while 循环
此循环与 while 循环类似,不同点在于 do...while
循环至少执行一次。(如判断条件不满足,while 循环不会执行,但是 do...while 循环会执行一次)先来看起语法:
do { // 代码语句 }while( 布尔表达式 )
其实从代码中即可分析出原因,因为代码块先执行,条件表达式后执行。
public class Test { public static void main(String args[]) { int a = 10; do { System.out.println(a); a--; }while (a<0); } }
上例中 while 的判断条件不满足,如果是 while 循环的话则不会执行;而上述例子大家可以进行验证,会返回 10。
8.4 终止循环
与 Python 中相同,Java 中也有两个关键字用来终止循环,一个为 break,一个为 continue。
break:终止当前循环。
continue:终止本次循环。(比如循环输出1到10,在7的时候遇到了语句 continue,那么7不会输出,而8、9等正常输出)
9.条件语句
9.1 if
我们来看一下最简单的 if 语句如何书写:
if( 布尔表达式 ) { // 布尔表达式为true时执行的语句 }
示例如下:
public class Test{ public static void main(String args[]){ // if int i = 1; if(i==1){ System.out.println("值为1"); } } }
Java 中字符串用双引号包裹。
9.2 if...else
语法为:
if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
过于简单,不再示例。
9.3 if...else if...else
此为多条件判断情况,语法如下:
if(布尔表达式 1){ //如果布尔表达式 1的值为true执行代码 }else if(布尔表达式 2){ //如果布尔表达式 2的值为true执行代码 }else if(布尔表达式 3){ //如果布尔表达式 3的值为true执行代码 }else { //如果以上布尔表达式都不为true执行代码 }
类比于 Python 中的语法:
if 条件1: 条件为真时执行 elif 条件2: 条件为真时执行 else: 条件都不满足时执行
其实 elif
就是 elseif
的缩写。
当然,Java 中的条件语句也支持嵌套操作。