本章将会连续JavaSE第02篇,具体解说Java根底语法中的运算符和流程管制中的程序构造、分支构造。

第一章:运算符

运算符,简而言之就是运算的符号。

咱们通常所了解的运算个别和数学有关系,同样编程中的运算和数学中运算规定是统一的。

在数学中个别咱们运算的是数字,在编程中运算的就是数据了。

若要运算,那必然是少不了运算符号了。

1.1-为什么须要运算符 (理解)

从利用角度来看,在软件开发中,有很多很多业务性能须要通过程序运算的能力实现,比方:

  • 网上购物商品数量的统计、价格的计算
  • 支付宝或微信的生产转账
  • 玩游戏中游戏人物的生命值、金币的计算
  • ...

如何命令计算机计算数据呢?这时就须要运算符号示意运算。

1.2-运算符的分类(理解)

  • 赋值运算符
  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 其余运算符

1.3-赋值运算符(记忆)

运算符格局和作用
  • 运算符号:=
  • 作用:能够把右侧的 数据 赋值给 指定的 变量
代码
int age = 10;  // 把数据10赋值给变量age

1.4-算术运算符(记忆)

运算符格局和作用
  • 运算符号:

    1. 示意加法运算:+
    2. 示意减法运算:-
    3. 示意乘法运算:*
    4. 示意除法运算:/
    5. 示意取模运算:%
  • 作用:能够实现数字相干的运算
代码
public static void main(String[] args) {        int a = 10;        int b = 3;        /* 加法运算 */        System.out.println(a + b);        // 后果:13        /* 减法运算 */        System.out.println(a - b);        // 后果:7        /* 乘法运算 */        System.out.println(a * b);        // 后果:30        /* 除法运算 */        System.out.println(a / b);        // 后果:3        /* 取模运算-求余数 */        System.out.println(a % b);        // 后果:1        /* 留神:在java中,任何整数不能除以0, 在运行时会产生谬误! */        System.out.println(200/0);        // 后果:Exception in thread "main" java.lang.ArithmeticException: / by zero}

1.5-关系运算符 (记忆)

关系运算符也叫比拟运算符

运算符格局和作用
  • 运算符:

    • 大于:>
    • 小于:<
    • 等于:==
    • 大于等于:>=
    • 小于等于:<=
    • 不等于:!=
  • 作用:能够实现条件判断是否成立,运算后果是布尔值truefalse
代码
public static void main(String[] args) {        int a = 10;        int b = 12;        /* 大于 */        System.out.println(a > b);        // 后果:false        /* 小于 */        System.out.println(a < b);        // 后果:true        /* 等于 */        System.out.println(a == b);        // 后果:false        /* 大于等于 */        System.out.println(a >= b);        // 后果:false        /* 小于等于 */        System.out.println(a <= b);        // 后果:true        /* 不等于 */        System.out.println(a != b);        // 后果:true}

留神:千万不要把"=="误写成“=”,"=="是判断是否相等的关系,"="是赋值。

1.6-逻辑运算符(记忆)

逻辑运算符格局及运算符作用

逻辑运算符能够判断多个组合条件是否成立,运算后果是布尔值:true或false

代码
public class Operator {    public static void main(String[]args){        //定义变量         int i = 100;         int j = 200;         int k = 300;         //& “与”,并且的关系,只有表达式中有一个值为false,后果即为false        System.out.println((i > j) & (i > k)); //false & false,输入false        System.out.println((i < j) & (i > k)); //true & false,输入false        System.out.println((i > j) & (i < k)); //false & true,输入false        System.out.println((i < j) & (i < k)); //true & true,输入true        //| “或”,或者的关系,只有表达式中有一个值为true,后果即为true        System.out.println((i > j) | (i > k)); //false | false,输入false        System.out.println((i < j) | (i > k)); //true | false,输入true        System.out.println((i > j) | (i < k)); //false | true,输入true        System.out.println((i < j) | (i < k)); //true | true,输入true        //^ “异或”,雷同为false,不同为true         System.out.println((i > j) ^ (i > k)); //false ^ false,输入false        System.out.println((i < j) ^ (i > k)); //true ^ false,输入true        System.out.println((i > j) ^ (i < k)); //false ^ true,输入true        System.out.println((i < j) ^ (i < k)); //true ^ true,输入false        //! “非”,取反        System.out.println((i > j)); //false         System.out.println(!(i > j)); //!false,,输入true    }}
短路逻辑运算符

在逻辑与运算中,只有有一个表达式的值为false,那么后果就能够断定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的成果,能够提高效率。

同理在逻辑或运算中,一旦发现值为true,左边的表达式将不再参加运算

  • 逻辑与&,无论右边虚实,左边都要执行。
  • 短路与&&,如果右边为真,左边执行;如果右边为假,左边不执行。
  • 逻辑或|,无论右边虚实,左边都要执行。
  • 短路或||,如果右边为假,左边执行;如果右边为真,左边不执行。
代码
public class Operator2 {    public static void main(String[]args){        int x = 3;        int y = 4;        System.out.println(((x=x+1) > 4) & ((y=y+1) > 5)); // 两个表白都会运算         System.out.println(x); // 4         System.out.println(y); // 5         int a = 3;        int b = 4;        System.out.println(((a=a+1) > 4) && ((b=b+1) > 5)); // 右边曾经能够确定后果为false,左边不参加运算        System.out.println(a); // 4         System.out.println(b); // 4    }}

1.7-其余运算符 (记忆)

  • 复合赋值运算符

    • 运算符:+=-=/=*=%=
    • 作用:和变量相干,是算术运算符和赋值运算符的组合应用。
    • 代码:
    int age = 10;    age+=3;     System.out.print(age);     // 运行后果:13。 age+=3 拆解 age = aeg + 3
  • 小括号

    • 运算符:(表达式)
    • 作用:能够进步运算的优先级。
    • 代码:
    int result = (10 + 8) * 2
  • 自增和自减

    • 运算符:++--
    • 作用:变量自增1或自减1

      • 前置自增或自减:++变量--变量,先让变量本身加1或减1,再参加表达式运算。
      • 后置自增或自减变量++变量--,先让变量本身参加表达式运算,再本身加1或减1
    • 代码:
    /* 前置自增 */    int a = 10;    System.out.print(++a);  // 后果:11    System.out.print(a);  // 后果:11    /* 后置自增 */    int b = 10;    System.out.print(b++);  // 后果:10    System.out.print(b);  // 后果:11
  • 三元运算符

    • 格局:条件表达式?表达式1:表达式2
    • 意义:问号后面的地位是判断的条件,判断后果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
    • 代码:
    int a = 10>8?10:8;    System.out.print(a);  // 后果:10

第二章:流程管制

2.0-数据输出(理解)

需要

接管用户录入的两个数字,计算两个数字的和。

常识筹备:如何接管用户录入的数据

咱们能够通过 Scanner 类来获取用户的输出。应用步骤如下:

1、导包。Scanner 类在java.util包下,所以须要将该类导入。导包的语句须要定义在类的下面。

import java.util.Scanner;

2、创立Scanner对象。

Scanner sc = new Scanner(System.in);// 创立Scanner对象,sc示意变量名,其余均不可变

3、接收数据

int i = sc.nextInt(); // 示意将键盘录入的值作为int数返回。

4、示例

import java.util.Scanner; public class ScannerDemo {     public static void main(String[] args) {         //创建对象         Scanner sc = new Scanner(System.in);         //接收数据         int x = sc.nextInt();         //输入数据         System.out.println("x:" + x); } }
性能实现:
import java.util.Scanner;public class Test01 {    public static void main(String[]args){        // 创立Scanner对象        Scanner scanner = new Scanner(System.in);        // 提醒输出数据        System.out.println("请输出第一个数字:");         // 接管用户输出的第一个数据        int num1 = scanner.nextInt();        // 提醒输出数据        System.out.println("请输出第二个数字:");         // 接管用户输出的第二个数据        int num2 = scanner.nextInt();        // 计算两个数字的和并输入        int sum = num1 + num2;        // 任何数据和字符串相加时,"+"示意连接符        System.out.println(num1 + "+" + num2 + "=" + sum);    }}

输入后果

请输出第一个数字:100请输出第二个数字:20100+20=120

2.1-为什么要学习流程管制 (理解)

流程,指的是程序的执行程序。程序默认的执行程序是自上而下执行的。

然而,在程序中有些程序是抉择执行的或是反复执行的,不同的抉择会有不同的性能。比方咱们玩游戏时王者光荣时,咱们在手机上抉择不同英雄时,实质底层就是程序在执行不同的代码。

所以,若要控制程序执行的流程,就必须学习流程管制语句。

流程管制语句分为三大类:程序构造、分支构造循环构造.

本篇咱们学习程序构造和分支构造,循环构造咱们下一篇再细细解说。

2.2-程序构造 (重点)

程序构造是程序中最简略最根本的流程管制,没有特定的语法结构,依照代码的先后顺序自上而下、从左向右,顺次执行,程序中大多数的代码都是这样执行的。

程序构造执行流程图:

public class Test {    public static void main(String[]args){        System.out.println(1);         System.out.println(2);         System.out.println(3);         System.out.println(4);     }}/*    执行后果:    1    2    3    4*/

2.3-分支构造 (重点)

2.3.1- if语句

语句格局:
if(条件表达式){  // 代码块}
执行流程:

若条件表达式成立(后果是true),则执行代码块中的程序。

示例:

需要:接管用户输出的年龄,判断用户是否满18岁,若满18岁,则输入“年龄非法”

import java.util.Scanner;public class Test02 {    public static void main(String[]args){        // 创立Scanner对象        Scanner scanner = new Scanner(System.in);        // 提醒输出数据        System.out.println("请输入您的年龄:");         // 接管用户输出的年龄        int age = scanner.nextInt();        // 判断        if(age >=18 ) {            System.out.println("年龄非法");        }    }}

2.3.2- if-else语句

语句格局
if(条件表达式){  // 代码块}else {  // 代码块}
执行流程

若条件表达式成立(后果是true),则执行if代码块中的程序,反之执行else代码块中的程序。

示例:

需要:接管用户输出的年龄,判断用户是否满18岁,若满18岁,则输入“年龄非法”,否则输入“年龄不非法”

import java.util.Scanner;public class Test03 {    public static void main(String[]args){        // 创立Scanner对象        Scanner scanner = new Scanner(System.in);        // 提醒输出数据        System.out.println("请输入您的年龄:");         // 接管用户输出的年龄        int age = scanner.nextInt();        // 判断        if(age >=18 ) {            System.out.println("年龄非法");        }else {            System.out.println("年龄不非法");        }    }}

2.3.3- if-else if-...else语句

语法格局:
if(条件表达式){  // 代码块}else if(条件表达式){   // 需要不同,else if语句定义的个数不同  // 代码块}else if(条件表达式){  // 代码块}// ...else { // 需要不同,else语句可有可无  // 代码块}
执行流程:

代码从上而下顺次判断。

若其中有满足条件的,则进入对于的代码块执行,后续分支不再执行。

若都不满足,则执行else中的语句。

示例:

需要:接管用户输出的学习成绩,输入等级。问题大于等于90是A,大于等于80小于90是B,大于等于70小于80是C,大于等于60小于70是D,其余状况时E

import java.util.Scanner;public class Test04 {    public static void main(String[]args){        // 创立Scanner对象        Scanner scanner = new Scanner(System.in);        // 提醒输出数据        System.out.println("请输出学生问题:");         // 接管用户输出的数据        float score = scanner.nextFloat();        // 判断        if(score>=90) {            System.out.println("A");        }else if(score>=80) {            System.out.println("B");        }else if(score>=70) {            System.out.println("C");        }else if(score>=60) {            System.out.println("D");        }else{            System.out.println("E");        }    }}

2.3.4- switch语句

语法格局:
switch(表达式) {   case 常量值1:     语句体1;    break;  case 常量值2:    语句体2;    break;    //...   default:     语句体n+1;    break;}
执行流程:

首先计算出表达式的值

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

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

示例1:

需要:提醒用户录入1-7之间的数字,依据数据返回给用户星期几

import java.util.Scanner;public class Test05 {    public static void main(String[]args){        // 创立Scanner对象        Scanner scanner = new Scanner(System.in);        // 提醒输出数据        System.out.println("请输出一个数字(1-7):");         // 接管用户输出的数据        int num = scanner.nextInt();        // 判断        switch (num){            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;        }    }}
示例2:

需要:一年有12个月,分属于春夏秋冬4个节令,键盘录入一个月份,请用程序实现判断该月份属于哪个节令,并输入。

import java.util.Scanner;public class Test06 {    public static void main(String[]args){        // 创立Scanner对象        Scanner scanner = new Scanner(System.in);        // 提醒输出数据        System.out.println("请输出一个月份(1-12):");         // 接管用户输出的数据        int num = scanner.nextInt();        // 判断        switch (num){            case 12:            case 1:            case 2:                System.out.println("冬");             break;            case 3:            case 4:            case 5:                System.out.println("春");             break;            case 6:            case 7:            case 8:                System.out.println("夏");             break;            case 9:            case 10:            case 11:                System.out.println("秋");             break;            default                System.out.println("输出的数字不非法");                     }    }}

留神:如果switch中得case,没有对应break的话,则会呈现case穿透的景象。