运算符
- 运算符
对常量和变量进行操作的符号 - 表达式
用运算符把常量或者变量连接起来符合java语法的式子;
不同类型运算符连接的式子体验的是不同类型的表达式 - 常用运算符:
算术运算符;
自增自减运算符;
赋值运算符;
关系运算符;
逻辑运算符;
三元运算符
算术运算符
算术运算符包括:+, -, *, /, %
/和%的区别:
/:获取两个数据相除的商
%:获取两个数据相除的余数
注意事项:整数相除只能得到整数。要想得到小数,就必须有浮点数参与运算。
int a = 5;
int b = 3;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);
System.out.println(a%b);
System.out.println(5/4);
//输出为1
System.out.println(5.0/4);
//输出为1.25
System.out.println(5/4.0);
//输出为1.25
字符参与加法运算
其实是拿该字符在计算机中存储所表示的数据值来运算的。
常见字符所表示的数据值:
- ‘a’ 97
- ‘A’ 65
- ‘0’ 48
int a = 10;
char ch = 'a';
System.out.println(a + ch);
//输出为107
字符串参与加法运算
是字符串的拼接。
System.out.println("hello" + "world");
//输出为helloworld
System.out.println("hello" + 10);
//输出为hello10
System.out.println("hello" + 10 + 20);
//输出为hello1020
System.out.println(10 + 20 + "hello");
//输出为30hello
//注意运算顺序,从左到右
自增自减运算符
自增自减运算符包括:++,- –
作用:自己+1或者-1
int a = 10;
System.out.println("a:" + a);
//输出为a:10
//a++;
//System.out.println("a:" + a);
//输出为a:11
a--;
System.out.println("a:" + a);
//输出为a:9
++,- -可以放在变量前面,也可以放在变量前面;
单独使用一个变量的时候,放在变量的前面或者后面,效果一样。
//++a;
//System.out.println("a:" + a);
//输出为a:11
--a;
System.out.println("a:" + a);
//输出为a:9
参与其他操作的时候:
- ++在变量的后面,先把变量做操作,然后变量再++
- ++在变量的前面,先变量++,然后再做操作
//int b = a++;
//System.out.println("b:" + b);
//输出为b:10
int c = ++a;
System.out.println("c:" + c);
//输出为c:11
赋值运算符
基本的赋值运算符:=
扩展的赋值运算符:+=,-=,…
扩展的赋值运算符隐含了强制类型转换。
int a = 10; //把10赋值给int类型的变量a
System.out.println("a:" + a);
//输出为a:10
//扩展的赋值运算符:+=
//把运算符左边的数据和右边的数据进行运算,然后把结果赋值给左边
a += 20;
System.out.println("a:" + a);
//输出为a:30
//short s = 1;
//s = s + 1;
//报错,因为s为short类型,s+1为int类型
//扩展的赋值运算符隐含了强制类型转换。
//a += 20
//等价于
//a = (a的数据类型)(a+20)
short s = 1;
s += 1;
System.out.println("s:" + s);
//输出为s:2
关系运算符
关系运算符:==, !=, >, >=, <, <=
关系运算符操作完毕的结果是boolean类型。
int a = 10;
int b = 20;
int c = 10;
//==
System.out.println( a == b);
System.out.println( a == c);
//输出为 false true
//!=
System.out.println( a != b);
System.out.println( a != c);
//输出为 true false
//>
System.out.println( a > b);
System.out.println( a > c);
//输出为 false false
//>=
System.out.println( a >= b);
System.out.println( a >= c);
//输出为 false true
System.out.println( a = b); //把b的值赋值给了a,并把a作为结果输出了
//输出为20
//千万不要把==写成=
逻辑运算符
逻辑运算符用于连接关系表达式。
逻辑运算符:
- 逻辑与&& :有false则false
- 逻辑或|| : 有true则true
- 逻辑非! : true则false,false则true
int a = 3;
int b = 4;
int c = 5;
//逻辑与&&
System.out.println((a>b) && (a>c)); //fales && false
System.out.println((a<b) && (a>c)); //true && false
System.out.println((a>b) && (a<c)); //false && true
System.out.println((a<b) && (a<c)); //true && true
//输出为false false false true
//逻辑或||
System.out.println((a>b) || (a>c)); //fales || false
System.out.println((a<b) || (a>c)); //true || false
System.out.println((a>b) || (a<c)); //false || true
System.out.println((a<b) || (a<c)); //true || true
//输出为false true true true
//!逻辑非
System.out.println((a>b));
System.out.println(!(a>b));
System.out.println(!!(a>b));
//输出为false true false
三元运算符
三元运算符:
(关系表达式)?表达式1:表达式2;
执行流程:
- 计算关系表达式的值,看结果是true还是false
- 如果是true,表达式1就是结果;如果是false,表达式2就是结果
int a = 10;
int b = 20;
int c = (a>b)?a:b;
System.out.println("c:" + c);
//输出为c:20
练习:比较两个整数是否相同
int a = 10;
int b = 20;
boolean flag = (a==b)?true:false;
System.out.println(flag);
//输出为false
键盘录入(Scanner)
为了提高程序的灵活性,我们把数据改进为键盘录入。
实现键盘录入数据:使用JDK提供的类Scanner。
Scanner使用步骤:
- 导包
import java.util.Scanner;
注意:在一个类中,有这样的顺序关系:package>import>class - 创建键盘录入对象
Scanner sc = new Scanner(System.in); - 获取数据
int t = sc.nextInt();
package Day_2;
import java.util.Scanner;
public class t04scanner {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//给出提示
System.out.println("请输入一个整数:");
//获取数据
int i = sc.nextInt();
//把获取的数据输出
System.out.println("i:" + i);
//输出为 请输入一个整数:
//在控制台输入数字10后输出为 i:10
}
}
Scanner练习:键盘录入两个数据,并对这两个数据求和,输出其结果
package Day_2;
import java.util.Scanner;
public class t05scanner {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//给出提示
System.out.println("请输入第一个整数:");
int a = sc.nextInt();
System.out.println("请输入第二个整数:");
int b = sc.nextInt();
//对数据求和
int sum = a + b;
//输出结果
System.out.println("sum:" + sum);
}
}
流程控制语句
流程控制语句分类:
- 顺序结构
- 选择结构
- 循环结构
顺序结构
是程序中最简单基本的流程控制,没有特定的语法结构,是按照代码先后顺序依次执行。
选择结构
if语句
if语句第一种格式
/*
if语句格式1:
if(关系表达式){
语句体;
}
*/
System.out.println("开始");
//定义两个int类型的变量
int a = 10;
int b = 20;
//判断两个变量是否相等
if(a == b) {
System.out.println("a等于b");
}
//定义变量
int c = 10;
if(a == c) {
System.out.println("a等于c");
}
System.out.println("结束");
//输出结构 开始 a等于c 结束
执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体
- 如果是false就不执行语句体
if语句第二种格式
/*
if格式2:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
*/
public static void main(String[] args) {
System.out.println("开始");
//判断一个数据是奇数还是偶数
//思路:如果一个数据对2取余的结果是0,说明该数是偶数
//定义一个变量
int a = 100;
//重新给a赋值
a = 99;
if(a%2 == 0) {
System.out.println("a是偶数");
}else {
System.out.println("a是奇数");
}
System.out.println("结束");
}
执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
if语句第三种格式
/*
格式3:
if(关系表达式1) {
语句体1;
}else if(关系表达式2) {
语句体2;
}
...
else {
语句体n+1;
}
*/
System.out.println("开始");
//假如x和y满足如下的关系:
//x>=3 y=2x+1
//-1<=x<3 y=2x
//x<-1 y=2x-1
//根据给定的x的值,计算出y的值
int x = 5;
int y;
if(x >= 3) {
y = 2*x + 1;
}else if(x >= -1 && x < 3) {
y = 2*x;
}else if(x < -1) {
y = 2*x - 1;
}else {
y = 0; //在这里必须对y进行赋值
System.out.println("不存在这样x的值");
}
System.out.println("y:" + y);
System.out.println("结束");
}
执行流程:
- 首先判断关系表达式1看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就判断关系表达式2看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就判断关系表达式…看其结果是true还是false
- …
- 如果没有任何关系表达式为true,就执行语句体n+1
练习
练习1
需求:键盘录入两个数据,获取这两个数据的较大值
分析
- 看到键盘录入,应该想到键盘录入的三个步骤:导包,创建键盘录入对象,获取数据
- 获取两个数据的较大值,用if语句的格式2就可以实现判断
- 把较大的结果输出就可
package Day_2;
import java.util.Scanner;
public class t10 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数");
int a = sc.nextInt();
System.out.println("请输入第二个整数");
int b = sc.nextInt();
/*
if (a > b){
System.out.println("两个整数的较大值为:" + a);
}else {
System.out.println("两个整数的较大值为:" + b);
}
*/
//我们获取较大的值未必是输出,可能还会进行其他的操作,所以需要改进代码
//定义一个变量用于保存较大的值
int max;
if(a > b) {
max = a;
}else {
max = b;
}
System.out.println("两个整数的较大值为:" + max);
}
}
练习2
需求:键盘录入学生考试成绩,根据成绩判断该学生属于哪个级别(90-100 优秀;80-90 好;70-80 良;60-70 及格;60以下不及格)
分析:
- 看到键盘录入,应该想到键盘录入的三个步骤:导包,创建键盘录入对象,获取数据
- 通过简单的分析,我们知道了该使用if语句的格式3进行判断
- 根据判断直接输出对应的级别
package Day_2;
import java.util.Scanner;
public class t11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生成绩:");
int g = sc.nextInt();
if(g >= 90 && g <= 100) {
System.out.println("该学生级别为优秀");
}else if(g >= 80 && g < 90) {
System.out.println("该学生级别为好");
}else if(g >= 70 && g < 80) {
System.out.println("该学生级别为良");
}else if(g >= 60 && g < 70) {
System.out.println("该学生级别为及格");
}else {
System.out.println("该学生级别为不及格");
}
}
}
写程序的时候,做数据测试,应该测试这样的几种情况:
- 正确数据
- 边界数据
- 错误数据
上述代码在输入错误数据,如101,-123时,输出结果为不及格。通过数据的测试,发现程序不够严谨,未加入非法数据的判断。
package Day_2;
import java.util.Scanner;
public class t11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生成绩:");
int g = sc.nextInt();
if(g >= 100 || g < 0) {
System.out.println("你输入的成绩有误");
}else if(g >= 90 && g <= 100) {
System.out.println("该学生级别为优秀");
}else if(g >= 80 && g < 90) {
System.out.println("该学生级别为好");
}else if(g >= 70 && g < 80) {
System.out.println("该学生级别为良");
}else if(g >= 60 && g < 70) {
System.out.println("该学生级别为及格");
}else {
System.out.println("该学生级别为不及格");
}
}
}
switch语句
switch语句表达式
/*
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
......
default:
语句体n+1;
break;
}
*/
格式解释:
- 表达式包括:byte,short,int,char
JDK5以后可以是枚举,JDK7以后可以是字符串 - case后面的值:是用来和表达式的值进行匹配的
- break:表示中断的意思
- default:所有的值都和表达式不匹配,就执行default对应的内容
执行流程:
- 计算表达式的值
- 拿着这个值依次和case后面的值进行比对,一旦有匹配的,就执行队友的语句,在执行的过程中,遇到break就结束。
- 如果所有的case都不匹配,就执行语句体n+1
案例
根据键盘录入的数据1-7,输出对应的星期一到星期日
import java.util.Scanner;
public class t12switch {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入对应的数字:");
int a = sc.nextInt();
switch(a) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入的数据有误");
break;
}
}
}
拜师教育学员文章:作者:1269-郑同学,
转载或复制请以 超链接形式 并注明出处 拜师资源博客。
原文地址:《Java的运算符和选择语句》 发布于2020-08-30
评论 抢沙发