运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
1 int a = 1; 2 3 int b = 2; 4 5 int c = a + b;
+:是运算符,并且是算术运算符。 a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。
符号 | 作用 | 说明 |
+ | 加 | 略 |
- | 减 | 略 |
* | 乘 | 略 |
/ | 除 | 略 |
% | 取余 | 获取两数做除法后的余数 |
注意: /和%的区别:两个数据做除法,/取结果的商,%取结果的余数。 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
1 int a = 10; 2 3 int b = 3; 4 5 System.out.println(a / b); // 输出结果3 6 7 System.out.println(a % b); // 输出结果1
char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:
‘a‘ -- 97 a-z是连续的,所以‘b‘对应的数值是98,‘c‘是99,依次递加
‘A‘ -- 65 A-Z是连续的,所以‘B‘对应的数值是66,‘C‘是67,依次递加
‘0‘ -- 48 0-9是连续的,所以‘1‘对应的数值是49,‘2‘是50,依次递加
或者也可以只记住两个值,大写A+32就是小写a
算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则: byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。
整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型
等级顺序:byte,short,char --> int --> long --> float --> double
tips:
1、正是由于上述原因,所以在程序开发中我们很少使用byte或者short类型定义整数。也很少会使用char类型定 义字符,而使用字符串类型,更不会使用char类型做算术运算。
2、当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。
3、对于大量字符串连接,会产生严重的性能问题,为了解决这一问题,可以在有大量字符串连接的代码中使用StringBuffer或者StringBuilder。
符号 | 作用 | 说明 |
= | 赋值 | a=1,将1赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a,等同于a=a+b |
-= | 减后赋值 | a-=b,将a-b的值给a,等同于a=a-b |
*= | 乘后赋值 | a*=b,将a*b的值给a,等同于a=a*b |
/= | 除后赋值 | a/=b,将a/b的值给a,等同于a=a/b |
%= | 取余后赋值 | a%=b,将a%b的值给a,等同于a=a%b |
符号 | 作用 | 说明 |
++ | 自增 | a++,即a=a+1 |
-- | 自减 | a--,即a=a-1 |
注意事项:
++和-- 既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作;如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。
符号 | 作用 | 说明 |
== | 判断是否相等 | 成立返回true,不成立返回false |
> | 判断a是否大于b | 同上 |
>= | 判断a是否大于等于b | 同上 |
< | 判断a是否小于b | 同上 |
<= | 判断a是否小于等于b | 同上 |
!= | 判断是否不相等 | 同上 |
注意事项:
1、关系运算符的结果都是boolean类型,要么是true,要么是false。
2、不要混淆“==”与“=”,一个是判断,一个是赋值。
符号 | 作用 | 说明 |
& | 与 | a & b,a与b是否都是true,成立返回true,不成立返回false |
| | 或 | a | b,a与b是否有一个是true,成立返回true,不成立返回false |
^ | 异或 | a ^ b,a与b是否结果不同,成立返回true,不成立返回false |
! | 非 | !a ,结果与a是否完全相反,成立返回true,不成立返回false |
短路逻辑运算符
符号 | 作用 | 说明 |
&& | 短路与 | a && b,a与b是否都是true,成立返回true,不成立返回false,具有短路效果 |
|| | 短路或 | a || b,a与b是否有一个是true,成立返回true,不成立返回false,具有短路效果 |
短路效果:在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都 计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式 将不再参与运算。
关系表达式 ? 表达式1 : 表达式2;
解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其 逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
举例:判断pwd和passwd是否相等,相等返回true,不相等返回false。
1 public class Demo { 2 public static void main(String[] args) { 3 //1:定义两个变量,此处仅作展示,请不要使用弱口令密码。 4 int pwd = 123456; 5 int passwd = 123123; 6 //2:用三元运算符实现数值的判断,相同,返回true,否则,返回false。 7 boolean b = pwd == passwd ? true : false; 8 //3:输出结果 9 System.out.println("b:" + b); 10 } 11 }
我们可以通过 Scanner 类来获取用户的输入。
使用步骤如下:
1、导包。Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。
1 import java.util.Scanner
2、创建Scanner对象。
1 Scanner sc = new Scanner(System.in);
3、接收数据
1 String str = sc.nextLine();
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执 行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。
顺序结构、分支结构(if, switch)、循环结构(for, while, do…while)
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多 数的代码都是这样执行的。
1.if语句
1 if(a == b){ 2 return "ok"; 3 }
判断a与b是否相等,相等执行花括号内语句,不相等什么都不做。
2.if……else
1 if(a == b){ 2 return "ok"; 3 }else{ 4 return "no!God!no!" 5 }
判断a与b是否相等,相等执行if下花括号内语句,不相等执行else下花括号内语句。
3.if……else if……else
1 if(a == b){ 2 return "ok"; 3 }else if(a < b){ 4 return "no bad" 5 }else{ 6 return "no!God!no!" 7 }
判断a与b是否相等,相等执行if下花括号内语句,不相等则判断else if中的判断,如果为true执行else if下花括号的语句。注意,else if语句可以有多个,如果都无法通过判断,则执行else下花括号内语句。
原文:https://www.cnblogs.com/zhiyDev/p/14061474.html