+的作用:
- 表示正数(省略不写)
- 表示相加操作
- 进行字符串的拼接:+号左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串
【2】代码练习:
public class TestOpe{
public static void main(String[] args){
//表示正数:
System.out.println(+5);//5
//相加操作:
System.out.println(5+6);//11
System.out.println(5+'6');//59
//字符串的拼接:
//规则:+左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串
int num = 56;
System.out.println("num="+num);//"num=56" ---> num=56
System.out.println(5+6+"7");//11+"7"--->"117" --->117
System.out.println(5+'6'+"7");//59 +"7"--->"597" --->597
System.out.println("5"+6+"7");//"56"+"7" --->"567"--->567
System.out.println("5"+'6'+"7");//"56"+"7"--->"567"--->567
System.out.println("5"+'6'+'7');//"56"+'7'--->"567"---567
}
}
++的用法: (--同理)
++单独用时:++单独使用的时候,无论放在前面还是后面,都是加1操作
int a = 5;
a++;//理解为:相当于 a=a+1 操作
System.out.println(a);//6
-----------------------------
a = 5;
++a;//理解为:相当于 a=a+1 操作
System.out.println(a); //6
将++参与到运算中:看++在前还是在后,如果++在后:先进行运算,然后再对++操作的变量加1;如果++在前,先加1,然后再运算
int a = 5;
int m = a++ + 7;//先运算--->m=a+7 再加1--->a = a+1
System.out.println(m);//12
System.out.println(a);//6
---------------------------------------------------
a = 5;
int n = ++a + 7;//先加1--->a=a+1 再运算:--->n = a+7
System.out.println(n);//13
System.out.println(a);//6
赋值运算符(=)
x = x + 4 等价于 x += 4;
二者区别:
(1)x += 4; 可读性稍差 编译效率高 底层自动进行类型转换
(2)x = x + 4 可读性好 编译效率低 手动进行类型转换
//给出三个数,求和:
//1.给出三个数:
int num1 = 10;
int num2 = 20;
int num3 = 30;
//2.求和
//int sum = num1+num2+num3;
//定义一个变量,用来接收和:
int sum = 0;
sum = sum + num1;//等效: sum += num1;
sum = sum + num2;// sum += num2;
sum = sum + num3;//sum += num3;
//3.将和输出:
System.out.println("和:"+sum);
ps:请问a+=b 相当于 a=a+b,那么也相当于 a=b+a吗?
在基本数据类型中,可以这样理解,但对String类型就不成立了
譬如:
String a = "hello";
String b = "world";
a = a + b;//"helloworld"
a = b + a;//"worldhello"
关系运算符(boolean)
Java包含丰富的关系运算符。
检验相等性,可以使用两个等号 ==。
3 == 7;//flase
检验不等性,可以使用 !=
3 != 7;//true
同意也有<(小于)、>(大于)、<=(小于等于)、>=(大于等于)
逻辑运算符逻辑运算符:进行逻辑运算的,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:要么是true,要么false
逻辑与(&)规律:只要有一个操作数是false,那么结果一定是false
1 > 2 & 1<4;//flase
1 < 4 & 1 > 5;//flase
1 < 2 & 1 < 5;//flase
短路与(&&):效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算了,结果一定是false,相当于短路了一样
int a = 3;
int b = 4;
a++ > 3 && ++b > 4;//flase
System.out.println(a)//4
System.out.Println(b)//4
ps:执行a++过程中,先运算再赋值,所以 a++ > 3(3 > 3)为flase,后面的语句不计算(b=4),不会执行++操作,最后再把(3+1的值赋给a)
逻辑或(|):只要有一个操作数是true,那么结果一定是true
短路逻辑或(||):只要第一个表达式是true,那么第二个表达式就不用计算了,结果一定是true
int a = 3;
int b = 4;
++a > 3 || ++b > 4;//true
System.out.println(a)//4
System.out.Println(b)//4
逻辑非(!):取相反结果
!(1 < 3);//flase
!(1 > 2);//true
逻辑异或(^):两个操作数结果相同,结果为false,不相同,结果为true
(1 < 3) ^ (1 < 2)//flase
三目运算符:condition ? expression1 : expression2
a ? b : c
其中a是一个布尔类型的表达式,返回结果要么是true要么false,通过a的结果决定最终表达式的结果:
如果a的结果是true,那么表达式最终结果为b
如果a的结果是false,那么表达式最终结果为c
int num = (5 > 7) ? 6 : 9;//num = 9
x < y ? x : y;//返回x和y中较小的那个数
运算符优先级
不需要去刻意的记优先级关系,同级别的运算符按照从左往右依次计算
赋值<三目<逻辑<关系<算术<单目,同一级别
PS:实际开发中我们不会写特别复杂的表达式,你要想先算谁就用()括起来
写在最后作为Java初学者,发博客的主要目的是为记录自己的学习过程,帮助自己更好的巩固基础,也希望这些小的知识点可以为小伙伴们带来一点帮助,如果有说的不对的地方,欢迎大家在评论区指出。