写点什么

Java 运算符、输入、选择流程控制详细讲解

  • 2022 年 4 月 14 日
  • 本文字数:6955 字

    阅读完需:约 23 分钟

第一章 运算符

1.1 算术运算符的概述和用法

  • 运算符

  • 对常量和变量进行操作的符号称为运算符

  • 表达式

  • 用运算符把常量或者变量连接起来符号 java 语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。

  • 定义两个 int 类型的变量 a,b,做加法(a + b)

  • 常用运算符

  • 算术运算符

  • 赋值运算符

  • 关系运算符

  • 逻辑运算符

  • 三元运算符

1.1.1 算数运算符概述

  • 什么是运算符

  • 就是对常量和变量进行操作的符号。

  • 算数运算符有哪些

  • * +,-,*,/,%,++,--

1.1.2 代码实战

public class OperatorDemo {  public static void main(String[] args) {    //定义两个int类型的变量    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("------------");        System.out.println(5/4);    System.out.println(5.0/4);    System.out.println(5/4.0);  }}
复制代码


算数运算符取余和除法的区别:


  • %:取余运算符。得到的是两个相除数据的余数。

  • /:除法运算符。得到是两个相除数据的商。

  • 使用场景: %:判断两个数据是否整除。::::

1.1.3 字符和字符串参与加法运算

  • 字符参与运算其实是拿该字符对应的数值来操作


  ‘a’  97  ‘A’  65  ‘0’  48
复制代码


  • 字符串参与运算这里其实做的不是加法运算,而是<mark>字符串拼接</mark>。

  • 字符串和其他类型的数据做拼接,结果是字符串类型的。

1.1.4 代码实战

public class OperatorDemo2 {  public static void main(String[] args) {    //定义两个变量,一个int类型,一个char类型    int a = 10;    char ch = 'a';    System.out.println(a + ch);    System.out.println("----------------");        //字符串做加法    System.out.println("hello"+"world");    System.out.println("hello"+10);    System.out.println("hello"+10+20);    System.out.println(10+20+"hello");  }}
复制代码

1.1.5 自增自减运算符的概述和用法

++,--运算符:对变量做加 1 或者减 1 的操作。


++或者--既可以放在变量的后面,也可以放在变量的前面。


单独使用的时候,++或者--无论是放在变量的前面还是后面,结果是一样的。


参与操作的时候:


如果++或者--在变量的后面,先拿变量参与操作,后变量++或者--


如果++或者--在变量的前面,先变量做++或者--,后拿变量参与操作

1.1.6 代码实战

public class OperatorDemo {  public static void main(String[] args) {    //定义一个int类型的变量    int a = 10;    System.out.println("a:"+a);        //a++;    //a--;    //++a;    //--a;    //System.out.println("a:"+a);        //int b = a++;    int b = ++a;    System.out.println("a:"+a);    System.out.println("b:"+b);  }}
复制代码

1.2 赋值运算符的概述和用法

1.2.1 赋值运算符分类

  • 基本的赋值运算符:=

  • 扩展的赋值运算符:+=,-=,*=,/=,%=

  • a+=20;相当于a =a + 20;

1.2.2 代码实战

public class OperatorDemo {  public static void main(String[] args) {    //定义变量    int a = 10; //把10赋值给int类型的变量a    System.out.println("a:"+a);        //扩展的赋值运算符:+=    //把运算符左边的数据和右边的数据进行运算,然后把结果赋值给左边    //a = a + 20;    a += 20;    System.out.println("a:"+a);        //short s = 1;    //s = s + 1;        //扩展的赋值运算符隐含了强制类型转换。    //a+=20    //等价于    //a =(a的数据类型)(a+20);    short s = 1;    s += 1;    System.out.println("s:"+s);  }}
复制代码

1.3 关系运算符的概述和使用

1.3.1 基本使用及注意事项

关系运算符包含以下内容:


==,!=,>,>=,<,<=


关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。


注意事项:关系运算符“==”不能误写成“=”。

1.3.2 代码实战

public class OperatorDemo {  public static void main(String[] args) {    //定义三个变量    int a = 10;    int b = 20;    int c = 10;      //==    System.out.println(a == b);    System.out.println(a == c);    System.out.println("------------");        //!=    System.out.println(a != b);    System.out.println(a != c);    System.out.println("------------");        //>    System.out.println(a > b);    System.out.println(a > c);    System.out.println("------------");        //>=    System.out.println(a >= b);    System.out.println(a >= c);    System.out.println("------------");        System.out.println(a == b);    System.out.println(a = b);//20,把b的值赋值给了a,并把a作为结果输出了  }}
复制代码

1.4 逻辑运算符的概述和使用

1.4.1 逻辑运算符概述

逻辑运算符用于连接关系表达式,在 Java 中不可以写成3<x<6,应该写成x>3 && x<6


  • 逻辑运算符有哪些&& || !

  • 结论:

  • &&:有 false 则 false。

  • ||:有 true 则 true。

  • !:非 false 则 true,非 true 则 false。

1.4.2 代码实战

public class OperatorDemo {  public static void main(String[] args) {    //定义变量    int a = 3;    int b = 4;    int c = 5;        //&&逻辑与    System.out.println((a>b) && (a>c)); //false && 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    System.out.println("------------");        //||逻辑或    System.out.println((a>b) || (a>c)); //false || 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    System.out.println("------------");        //!逻辑非    System.out.println((a>b));    System.out.println(!(a>b));    System.out.println(!!(a>b));  }}
复制代码

1.5 三元运算符的概述和使用

1.5.1 三元运算符概述

  • 格式

  • (关系表达式)?表达式1:表达式2;

  • 如果条件为 true,运算后的结果是表达式 1;如果条件为 false,运算后的结果是表达式 2;

1.5.2 代码实战

public class OperatorDemo {  public static void main(String[] args) {    //定义两个变量    int a = 10;    int b = 20;        int c = (a>b)?a:b;    System.out.println("c:"+c);  }}
复制代码

1.5.3 三元运算符练习之比较两个整数是否相同

public class OperatorTest {  public static void main(String[] args) {    //定义两个int类型的变量    int a = 10;    //int b = 20;    int b = 10;        boolean flag = (a==b)?true:false;    System.out.println(flag);  }}
复制代码

第 2 章 键盘输入

2.1 键盘输入的基本步骤

2.1.1 键盘输入 数据概述

我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,把数据改进为键盘录入,提高程序的灵活性。


键盘录入数据的步骤:


  1. 导包(位置放到 class 定义的上面)import java.util.Scanner;

  2. 创建对象Scanner sc = new Scanner(System.in);

  3. 接收数据int x = sc.nextInt();

2.1.2 代码实战

import java.util.Scanner;/* * 为了提高程序的灵活性,我们把数据改进为键盘录入。 * 如何实现键盘录入数据呢?目前使用JDK提供的类Scanner。 * 如何使用Scanner来获取数据呢?目前大家记住使用步骤即可。 *  * 使用步骤: *     A:导包 *       import java.util.Scanner; *       注意:在一个类中,有这样的顺序关系 *         package > import > class *     B:创建键盘录入对象 *       Scanner sc = new Scanner(System.in); *     C:获取数据 *       int i = sc.nextInt(); */public class ScannerDemo {  public static void main(String[] args) {    //创建键盘录入对象    Scanner sc = new Scanner(System.in);        //给出提示    System.out.println("请输入一个整数:");    //获取数据    int i = sc.nextInt();        //把获取的数据输出    System.out.println("i:"+i);  }}
复制代码

2.2 Scanner 录入数据练习之求两个整数的和

键盘录入两个数据,并对这两个数据求和,输出其结果:


import java.util.Scanner;/* * 需求:键盘录入两个数据,并对这两个数据求和,输出其结果 */public class ScannerTest {  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);  }}
复制代码

第 3 章 选择流程控制语句

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。


  • 流程控制语句分类

  • 顺序结构

  • 选择结构

  • 循环结构

3.1 流程控制语句之顺序结构概述和使用

3.1.1 顺序结构概述

是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

3.1.2 顺序流程流程图

3.1.3 代码实战

public class OrderDemo {  public static void main(String[] args) {    System.out.println("开始");    System.out.println("语句A");    System.out.println("语句B");    System.out.println("语句C");    System.out.println("结束");  }}
复制代码

3.2 if 语句的格式

3.2.1 if 语句格式 1 的概述和使用

if 语句第一种格式:


if(关系表达式) {  语句体}
复制代码


执行流程:


首先判断关系表达式看其结果是 true 还是 false


如果是 true 就执行语句体


如果是 false 就不执行语句体


代码实战


public class IfDemo {  public static void main(String[] args) {    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("结束");  }}
复制代码

3.2.2 if 语句格式 2 的概述和使用

if 语句第二种格式:


if(关系表达式) {  语句体1;  }else {  语句体2;}
复制代码


执行流程:


首先判断关系表达式看其结果是 true 还是 false


如果是 true 就执行语句体 1


如果是 false 就执行语句体 2


代码实战


public class IfDemo2 {  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("结束");  }}
复制代码

3.2.3 if 语句格式 3 的概述和使用

if 语句第三种格式:


if(关系表达式1) {  语句体1;  }else  if (关系表达式2) {  语句体2;  }  else {  语句体n+1;  }
复制代码


执行流程:


首先判断关系表达式 1 看其结果是 true 还是 false


如果是 true 就执行语句体 1


如果是 false 就继续判断关系表达式 2 看其结果是 true 还是 false


如果是 true 就执行语句体 2


如果是 false 就继续判断关系表达式…看其结果是 true 还是 false



如果没有任何关系表达式为 true,就执行语句体 n+1


代码实战


public class IfDemo3 {  public static void main(String[] args) {    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;    x = 0;    x = -5;        //定义变量y    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;      System.out.println("不存在这样的x的值");    }        System.out.println("y:"+y);        System.out.println("结束");  }}
复制代码

3.3 if 语句的练习

3.3.1 if 语句练习之获取两个整数的较大值

import java.util.Scanner;
/* * 需求:键盘录入两个数据,获取这两个数据的较大值 * * 分析: * A:看到了键盘录入,我们就应该想到键盘录入的三个步骤 * 导包,创建键盘录入对象,获取数据 * B:获取两个数据的较大值,用if语句的格式2就可以实现判断 * C:把较大的结果输出即可 * * 导包: * A:手动导包 * B:点击鼠标自动生成 * C:快捷键 * ctrl+shift+o */public class IfTest { 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格式2实现判断 /* if(a > b) { System.out.println("较大的值是:"+a); }else { System.out.println("较大的值是:"+b); } */ //我们获取到较大的值未必是输出,可能还会进行其他的操作,所以我们要改进代码 //定义一个变量用于保存较大的值 int max; if(a > b) { max = a; }else { max = b; } //我可以做 //max += 10; System.out.println("较大的值是:"+max); }}
复制代码

3.4 switch 语句的格式和执行流程概述

3.4.1 格式解释

3.4.1 格式解释:


switch(表达式) {  case 值1:        语句体1;      break;  case 值2:      语句体2;      break;  case 值3:      语句体3;      break;  ...  default:      语句体n+1;      break;}
复制代码


switch 表示这是 switch 语句


表达式的取值:byte,short,int,char


JDK5 以后可以是枚举


JDK7 以后可以是 String


case 后面跟的是要和表达式进行比较的值


语句体部分可以是一条或多条语句


break 表示中断,结束的意思,可以结束 switch 语句


default 语句表示所有情况都不匹配的时候,就执行该处的内容,和 if 语句的 else 相似。

3.4.2 执行流程

首先计算出表达式的值


其次,和 case 依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break 就会结束。


最后,如果所有的 case 都和表达式的值不匹配,就会执行 default 语句体部分,然后程序结束掉。

3.5 switch 语句的练习

switch 语句的案例根据数字输出对应星期


import java.util.Scanner;
/* * 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对应的内容 * * 执行流程: * A:计算表达式的值 * B:拿着这个值依次和case后面的值进行比对,一旦有匹配的,就执行对应的语句,在执行的过程中,遇到break就结束。 * C:如果所有的case都不匹配,就执行语句体n+1 * * 案例: * 根据键盘录入的数据1-7,输出对应的星期一到星期日 * * 快捷键:对代码进行格式化 * ctrl+shift+f */public class SwitchDemo { public static void main(String[] args) { // 创建键盘录入数据 Scanner sc = new Scanner(System.in);
// 给出提示 System.out.println("请输入一个整数(1-7):"); int weekDay = sc.nextInt();
// 用switch语句实现判断 switch (weekDay) { 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; } }}
复制代码


发布于: 2022 年 04 月 14 日阅读数: 41
用户头像

InfoQ签约作者 2020.11.10 加入

文章首发于公众号:五分钟学大数据。大数据领域原创技术号,深入大数据技术

评论 (1 条评论)

发布
用户头像
限时秒杀,华为云服务器最低至0.34折,每天限量抢购,加我咨询,可以免费提供上云技术咨询服务 微信同号13570910329
4 小时前
回复
没有更多了
Java运算符、输入、选择流程控制详细讲解_Java_五分钟学大数据_InfoQ写作平台