Java的运算符和选择语句

1269-郑同学

发表文章数:16

首页 » Java » 正文

运算符

  • 运算符
    对常量和变量进行操作的符号
  • 表达式
    用运算符把常量或者变量连接起来符合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;
执行流程:

  1. 计算关系表达式的值,看结果是true还是false
  2. 如果是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使用步骤:

  1. 导包
    import java.util.Scanner;
    注意:在一个类中,有这样的顺序关系:package>import>class
  2. 创建键盘录入对象
    Scanner sc = new Scanner(System.in);
  3. 获取数据
    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

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录