JavaSE-变量与运算符
一、上午回顾
- JDK安装
- 安装(JDK、JRE的安装目录要分离,路径中不能有中文或者空格)
- 环境变量配置(JAVA_HOME、Path、CLASSPATH)
- 验证命令(保证版本一致)
二、本章目标
- 掌握运算符
- 掌握表达式
- 掌握流程控制结构
- 顺序结构
- 分支结构
- 循环结构
三、知识点
1.运算符
释义
用于表示数据的运算、赋值和比较的一系列符号我们称之为运算符。
分类
运算符按功能划分如下:
运算符类型 | 运算符 |
算术运算符 | +,-,*,/,++,–,% |
关系运算符 | <,<=,>,>=,==,!= |
布尔运算符 | &&, ||,&,|,!,^ |
位运算符 | &,|, ~,^,>>,>>>,<< |
赋值类运算符 | =, +=, -=, *=, /=, %= |
字符串连接运算符 | + |
条件运算符(三目运算符) | ? : |
其他运算符 | instanceof,new |
1.1算术运算符
类型 | 描述 | 示例 |
++(自加运算符) | ++在变量前面时,先做运算后赋值 | i = 1, j; j = ++i; 则j=2; |
--(自减运算符) | 同上 | i = 1, j; j = - -i; 则 j = 0; |
1.2关系运算符
注意 ‘==’关系运算,其意义为全等,基本数据类型比较值,引用数据类型比较地址
1.3逻辑运算符
与 &:两个操作数相与,如果都为true,则为true
或 |:两个操作数相或,有一个为true,则为true
异或 ^:相异为true,两个操作数不一样就为true,相同为false
短路&& 和 逻辑& 区别?
1.短路与,从第一个操作数推断结果,只要有一个为fase,不再计算第二个操作数
2.逻辑与,两个操作数都计算
短路|| 和 逻辑| 区别?
1.短路或,从第一个操作数推断结果,只要有一个为true,不再计算第二个操作数
2.逻辑或,两个操作数都计算
1.4赋值运算符
注意
1)当 "=" 两侧数据类型不一致时,适用默认转换或强制转换处理,如long num=20;int i=(int)num;
2)特殊情况为:当byte,char,short被整赋值时,不需要进行强制类型转换,不超过取值范围即可。即一个自动装载的过程。
char c=100;byte b=20; //正确
char c2=-99999;byte b2=128; //类型越界错误
运算符 | 用法 | c |
+= | a+=b | a=a+b |
-= | a-=b | a=a-b |
*= | a*=b | a=a*b |
/= | a/=b | a=a/b |
%= | a%=b | a=a%b |
1.5字符串连接运算符
-
- "+" 可用于数值计算,当有一方是字符时,则为将左右两个数据转化成字符串连在一起。如int i=10+20;String j="10"+"20"。
- 当" +" 任意一侧为字符串时,系统将自动将两侧转化成字符串,做字符串链接操作。
- 当进行System.out.println(var)打印操作的时候,均自动转化为字符串进行输出。
1.6运算优先级
优先级 | 运算符分类 | 结合顺序 | 运算符 |
由高到低 | 分隔符 | 左结合 | . [] ( ) ; , |
一元运算符 | 右结合 | ! ++ – - ~ | |
算术运算符 | 左结合 | * / % + - << >> >>> | |
关系运算符 | 左结合 | < > <= >= instanceof == != | |
逻辑运算符 | 左结合 | ! && || ~ & | ^ | |
三目运算符 | 右结合 | 布尔表达式?表达式1:表达式2 | |
赋值运算符 | 右结合 | = *= /= %= += -= <<= >>= >>>= &= *= |= |
【问】:做一道综合性强点的练习题,感受感受运算符优先级怎么样?
int a = 5;
int b = 4;
int c = a++ - --b * ++a / b-- >> 2 % a--;
c的值是多少?
2.表达式
表达式是指由(常量、变量、操作数)与运算符所组合而成的语句。
- 符合语法规则的运算符+操作数,即为表达式,如:5+3,2.0+3.0,a+b,3%2
- 表达式最终运行结果即为表达式的值,值的类型就是表达式的类型
- 运算符优先级,决定表达式的运算顺序
- 三目运算符:
形如:x?y:z
释义:计算x的值,若为true,则表达式的值为y;若为false,则表达式的值为z
示例:
int score=70;
String result=score<60 ? "不及格" : "及格";
System.out.println(result); //输出结果为及格
3.流程控制结构
- 程序控制结构是指以某种顺序执行的一系列动作,用于解决某个问题。程序可以通过控制语句来对程序实现选择、循环、转向和返回等流程控制。
- 程序控制结构包括:顺序结构、分支结构、循环结构。
- 下面我们先来看看顺序结构和分支结构
1. 顺序结构
顺序结构程序就是按语句出现的先后顺序执行的程序结构。计算机按顺序逐条执行语句,当一条语句执行完毕,自动转到下一条语句。
如图:
示例:
int a = 11; //第一步
int b = 2; //第二步
int c = a+b; //第三步
System.out.println(“a+b的结果为:”+c); //第四步
2. 分支结构
1)分支结构又称为选择结构。当程序执行到控制分支语句时,首先判断条件,根据条件表达式的值选择相应的语句执行(放弃另一部分语句的执行)。
2)分支结构包括单分支、双分支和多分支三种形式。
如图:
2.1单分支
【语法格式】
if(布尔表达式){语句块;}
说明:当语句块为一条语句时,大括号可以省略。只有布尔表达式为true时,才进入if语句中。
【示例】
int age = 20;
if(age >= 18){
System.out.println("成年人");
}
2.2双分支
【语法格式】
if(布尔表达式){
语句块;//if分支
}else{
语句块;//else分支
}
【示例】
int age = 20;
if(age >= 18){
System.out.println("成年人");
}else{
System.out.println("未成年人");
}
2.3多分支-1
【语法格式】
if(布尔表达式){
语句块;
}else if(布尔表达式){
语句块;
}else{
语句块;
}
【示例】
int age = 20;
if(age >0 && age <=18){
System.out.println("未成年");
}else if(age > 18 && age <=40) {
System.out.println("青年");
}else if(age > 40&& age<=50) {
System.out.println("中年");
}else if(age > 50) {
System.out.println("老年");
}else{
System.out.println("见鬼了");
}
2.4多分支-2
【语法格式】
switch (表达式) {
case 值1:
语句;
break;
case 值2:
语句;
break;
default:
语句;
break;
}
说明:
- 表达式的值只能为:char、byte、short、int类型、String、enum类型,其它类型均非法
- break语句可以省略,但会出现switch穿透
- default语句也可以省略,一般不建议省略,并且放置在最后
【示例】
public static void main(String[] args) {
String type = "dog";
switch(type) {
case "cat":
System.out.println("喵");
break;//注意break
case "dog":
System.out.println("旺");
break;
case "sheep":
System.out.println("咩");
break;
default:
System.out.println("哇!");
}
System.out.println("switch执行结束!");
}
四、总结
见 JavaSE-运算符流程控制总结.xmind
五、作业
1、完成数据类型转换案例
2、计算简易控制台计算器