day02_运算符_if

零、今日内容

1.运算符
2.scanner
3.if,ifelse,elseif

复习

学习方法:
睡觉前过电影(1jdk,配置环境变量2idea使用3HelloWorld程序解释

4变量5数据类型6String)

  1. 主方法是每次都要写的,因为代码要执行(psvm)
    输出语句每次都要写的,因为要看结果(sout)
    1.声明变量的语法格式
    数据类型 变量名 = 值;
    int a = 1;
    double b = 2.0;
    String s = “abc”;

2.八大基本数据类型

  • 整型 byte short int long
  • 浮点型 float double
  • 字符 char
  • 布尔 boolean
    3.变量的命名规范
  • 首字母小写 helloWorld
  • 数字不能放开头
  • 不能特殊符号,除了_ $
  • 多个单词的话后续单词首字母大写

4.包名的命名规范

  • 小写,公司反域名
  • com.qf
  • com.baidu

5.类名的命名规范

  • 首字母大写 HelloWorld
  • 数字不能放开头
  • 不能特殊符号,除了_ $
  • 多个单词的话后续单词首字母大写

6.代码的执行顺序

  • 在main方法内是从上至下依次逐行执行的
  • 如果有赋值,代码是从右向左执行
  • int a = 1;// 右边的1赋值给左边的变量a

一、运算符

昨天学习的变量, 变量 是用来存数据的,还可以被重新赋值从而变化.

通过不同数据类型来修改变量,让变量有不同的性质.

现在有了变量存储数据,那么就可以对数据进行运算,那么就需要使用运算符.运算符有

  • 算术运算
  • 赋值运算
  • 关系运算
  • 逻辑运算
  • 三目运算

1.1 算术运算

算术运算就是最简单数学运算: 符号

+ 
- 
*/% 取余
++ 自增
-- 自减

演示

package com.qf;

/**
 * @desc
 */
public class Demo1 {

    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        /**
         * + 加法
         * 1) 数字相加
         * 2) 字符串拼接,
         *   遇到字符以后,后续所有都是拼接
         */
        // 数字相加
        int c = a + b;  // a加b将结果赋值给c变量
        System.out.println(c );// 输出3
        System.out.println(a + b );// 输出3
        System.out.println(1 + 2 );// 输出3

        // 字符串拼接
        System.out.println("abc" + "123" );// abc123
        System.out.println("1" + 1 );// 11
        System.out.println(1 + 1 + "1" + 1);// 211
        // 遇到字符以后,后续所有都是拼接
        System.out.println(1 + 1 + "1" + 1 + 1 +1 +1);// 211111

        /**
         * 减法 -
         * 数字相减
         */
        System.out.println(a - b ); // -1
        System.out.println(3 - 3 ); // 0
        System.out.println(3.0 - 1 );// 2.0

        /**
         * 乘法 *
         */
        System.out.println(a * b ); // 2
        System.out.println(3 * 4 ); // 12
        System.out.println(3 * 4.0 );// 12.0

        /**
         * 除法 /
         * 【特别注意:整数相除结果是整数,如果有小数直接舍弃】
         */
        System.out.println(4 / 2 ); // 2
        System.out.println(9 / 3 ); // 3
        System.out.println(10 / 4 );// 2,不保留小数部分
        System.out.println(10 / 3 );// 3,不保留小数部分

        /**
         * 取余 %
         * 除不尽得到余数
         * 一般用于判断奇偶性(一个整数除以2的余数是0,则为偶数)
         */
        System.out.println("余数: " + 10 % 3 );// 10除以3的余数是1

        /**
         * ++ 自增1
         * -- 自减1
         */
        int d = 1;
        d++; // d自增1
        System.out.println(d );// 2
        d--; // 自减1
        System.out.println(d );// 1

    }
    /**
     * 扩展:
     * i++
     * ++i
     * 的区别
     */
}

【特别注意:整数相除结果是整数,如果有小数直接舍弃】

1.2 赋值运算

就是将数据赋值给变量,例如int a = 1; 其实还有其他赋值符号

  • = 赋值
  • += , -= , *= , /=

 *
 * @desc 赋值运算
 */
public class Demo2 {
    public static void main(String[] args) {
        /**
         * 赋值
         */
        int a = 1;// 1赋值给变量a
        int b = a;// a赋值给变量b
        System.out.println(a );
        System.out.println(b );

        /**
         * +=
         */
        int c = 1;
        c += 2;// 相当于 c = c + 2
        System.out.println(c );// 3

        int d = 2;
        d -= 3; // d = d - 3
        System.out.println(d );// -1

    }
}

1.3 关系运算

判断数字间的关系

> 大于,例如a > b
< 小于
>= 大于等于
<= 小于等于
!= 不等于
== 相等

【特别注意】关系运算的结果是: boolean值,即只有true和false

public class Demo3 {

    /**
     * 变量的使用步骤
     * 1. 先定义
     * 2. 后赋值
     * 3. 再使用
     */
    public static void main(String[] args) {

        /**
         * > < >=  <= == !=
         * 关系运算的结果是: boolean值,即只有true和false
         */
        System.out.println(1 > 0 ); // true
        int a = 2;
        int b = 3;
        System.out.println(a > b ); // false
        System.out.println(a < b ); // true
         System.out.println(a == b );// 判断是否相等    false
        System.out.println(a != b ); // 判断是否不相等 true
        System.out.println(2 >= 2 );// true

        // 使用场景是用来在后续if,for语句判断的
    }
}

1.4 逻辑运算

逻辑运算:

  • 与 &
  • 或 |
  • 非 !
  • 短路与/逻辑与 &&
  • 短路或/逻辑或 ||

语法:

boolean 变量 = 布尔表达式1 & 布尔表达式2;
// 所谓布尔表达式就是值是布尔值(true/flase)的式子
// 特别注意: 逻辑运算的结果也是布尔值: true 或 false
例如
boolean r = 1 > 0 & 2 > 1
public class Demo4 {

    public static void main(String[] args) {
        /**
         * &与(和)读作and
         * 1) &符号两边是两个判断式子
         * 2) 整体结果也是boolean 值
         * 3) 全对才对,一错就错
         * 场景: 登录学员系统.要求用户名和密码都正确才能登录
         */
        System.out.println(1 > 0 & 1 > 0);// T & T = T
        System.out.println(1 < 0 & 1 > 0);// F & T = F
        System.out.println(1 < 0 & 1 < 0);// F & F = F
        System.out.println(1 > 0 & 1 < 0);// T & F = F

        /**
         * && 它跟&一个意思,都是 一错就错全对才对
         * 但是有一个特殊的作用: 根据情况会短路代码,即后面表达式不执行
         *   总结: 当第一个式子能够决定整体结果时,后面式子不再执行
         */
        System.out.println(1 > 0 && 1 > 0);// T & T = T
        System.out.println(1 < 0 && 1 > 0);// F & T = F
        int i = 1;
        System.out.println(1 < 0 & i++ > 0 );
        System.out.println("i = " + i);// i=2,证明上面i++执行了

        int j = 1;
        System.out.println(1 < 0 && j++ > 0 );// &&发现当前面式子是错的时候后面式子不执行
        System.out.println("j = " + j );// j=1,证明上面j++没有执行
        // ========================================================================

        /**
         * | 或(or)
         * 全错才错,一对就对
         * 场景: 某些网站允许使用手机号或者邮箱登录
         */
        System.out.println(1 > 0 | 1 > 0);// T | T = T
        System.out.println(1 < 0 | 1 > 0);// F | T = T
        System.out.println(1 < 0 | 1 < 0);// F | F = F
        System.out.println(1 > 0 | 1 < 0);// T | F = T


        /**
         * || 跟| 一样,都是一对就对,全错才错
         * 但是||有短路作用,当前面式子结果是对的时候,后面就没有执行
         * 总结: 当第一个式子能够决定整体结果时,后面式子不再执行
         */
        int k = 1;
        System.out.println(1 > 0 | k++ > 0 );
        System.out.println("k = " + k );// k=2,说明k++执行了

        int g = 1;
        System.out.println(1 > 0 || g++ > 0 );
        System.out.println("g = " + g);// g=1,说明g++没有执行

        /**
         * 总结: 以后需要做逻辑运算就是使用
         * &&,|| 不再使用&,|
         * 因为短路与或 可以在某些条件情况下少执行一次
         */
        //================================================
        /**
         *  非 !
         *  对结果取反
         */
        System.out.println(!true );// false
        System.out.println(!(1 > 0) );// false
    }

}

复习

变量存储数据
数据类型修饰变量
通过运算符,运算后得到结果
算术:+-*/% ++ --
     +(加法)除了数字相加,还可以字符串拼接
     /(除法)整除相除,除不尽取整,舍弃小数点
关系 > < >= <= == !=
赋值 = , += (c+=1,c=c+1)
逻辑 &,|,! ,&&,||
    && 一错就错,前面式子错了,后面式子不执行
    || 一对就对,前面式子对了,后面式子不执行
    总结: 第一个式子能决定整体结果时,后面的不执行

1.5 三目运算

三元运算就是有三个数据,格式:

数据类型 变量 = 布尔表达式 ? 值1 : 值2;

执行流程:

  • 先判断布尔表达式
  • 如果结果为true,执行值1,将结果返回赋值给变量
  • 如果结果为false,执行值2,将结果返回赋值给变量
public class Demo5 {

    /**
     * 变量是存储数据
     * 数据类型是修饰变量的性质
     */
    public static void main(String[] args) {

        // 数据类型 变量 = 布尔表达式 ? 值1 : 值2;
        // 先判断布尔表达式
        // 如果结果为true,执行值1,将结果返回赋值给变量
        // 如果结果为false,执行值2,将结果返回赋值给变量
        int a = 1;
        int b = 2;
        String r1 = a > b ? "对" : "错";
        System.out.println(r1 );// 错

        int r2 = a > b ? a : b;
        System.out.println(r2 );// 2

        double r3 = a < b ? 99.9 : 0.0;
        System.out.println(r3 );// 0.0

        // 需求: 输出a,b中最大值
        String r4 = a > b ? "a大" : "b大";
        System.out.println(r4 );
    }
}
image-20231010150227529 image-20231010150337976

二、Scanner(键盘录入)

是什么? Scanner 是扫描控制台内容,可以将控制台输入的数据扫描到程序中

为什么? 是因为现在做练习,数据都是固定写死,效果不好看,使用Scanner实现从外部输入数据,再运算得到结果

怎么用?

  • 语法固定: Scanner scanner = new Scanner(System.in);

image-20231010154542756

package com.qf;

// 导包
import java.util.Scanner;

/**
 * @desc 演示使用Scanner
 */
public class Demo6 {
    public static void main(String[] args) {

        // 创建扫描器
        Scanner s = new Scanner(System.in);
        // 调用方法开始扫描
        // System.out.println("请输入数字:" );
        // int num = s.nextInt();// 允许键盘输入整数,其他的报错
        // System.out.println("输入的是:" + num );

        // System.out.println("请输入字符串:" );
        // String str = s.nextLine();
        // System.out.println("输入的是:" + str );

        // 输入两个数字,输出相加的结果
        System.out.println("请输入第1个数字:" );
        int a = s.nextInt();
        System.out.println("请输入第2个数字:" );
        int b = s.nextInt();

        System.out.println("结果是: "+ (a + b) );

    }
}

三 、if,ifelse,elseif

目前为止代码是从上至下依次逐行执行的,但是有些时候代码需要有选择的执行部分代码.

此时需要使用if,ifelse等分支语句

3.1 if(单分支)

if 翻译是如果,作用就是判断一个条件,条件成立就执行代码,条件不成立就不执行

语法:

if (布尔表达式) {
    执行代码;
}

执行流程:

  • 遇到if,开始判断
  • 如果表达式为true,就执行{}内的代码
  • 如果表达式为false,就不执行{}内代码
  • 最后无论对错,if(){} 后面代码一定会执行
/*
 * @desc
 */
public class Demo7 {
    public static void main(String[] args) {

        double yue = 100.0;// 账户余额
        double pay = 80;// 应支付钱
        if (yue >= pay) {// 判断结果true,就执行{}内;为false就跳过不执行
            System.out.println("付款成功" );
        }
       // 这句话无论上方if对错,都会执行
        System.out.println("下次再来~" );

        System.out.println("-------- 华丽的分割线 -------" );

        int age = 19;
        if (age >= 18) {
            System.out.println("欢迎浏览本网站" );
        }
        // 这句话无论上方if对错,都会执行
        System.out.println("还小,再等等~" );
    }
}

image-20231010164927786

3.2 if.else(双分支)

if如果,else其他,能实现二选一执行

语法:

if(布尔表达式) {
    执行语句;
}else{
    执行语句;
}

后续代码

执行流程

  • 遇到if,开始判断
  • 如果表达式为true,就执行if后{}内的代码,else后不再执行
  • 如果表达式为false,就不执行if{}内代码,而执行else后{}内的代码
  • 最后无论对错,if.else后面代码一定会执行
 * @desc if.esle 双分支语句
 */
public class Demo8 {

    public static void main(String[] args) {
        double yue = 100;// 余额
        double pay = 80;// 应付金额
        if (yue >= pay) { // 如果对(true)执行付款成功
            System.out.println("付款成功" );
        } else {// if为false,就执行付款失败
            System.out.println("付款失败" );
        }
        System.out.println("欢迎下次再来~" );

        System.out.println("--------分割线--------" );

        // 练习: 键盘输入两个数,比较大小,输出较大那个数
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第1个数" );
        int a = scanner.nextInt( );

        System.out.println("请输入第2个数" );
        int b = scanner.nextInt( );

        if (a > b) {
            System.out.println("第1个最大: a = " + a );
        } else {
            System.out.println("第2个最大: b = " + b );
        }

        System.out.println("--------分割线--------" );
        // 练习: 键盘录入一个数,输出该数是奇数还是偶数
        // 提示(判断奇偶性是通过除以2的余数,整数除以2余数为0是偶数,否则是奇数)
        System.out.println("请输入数字:" );
        int num = scanner.nextInt( );
        if (num % 2 == 0) {
            System.out.println(num +",是偶数" );
        } else {
            System.out.println(num +",是奇数" );
        }
    }

}

总结

重点是运算符和if语句
关于运算符,
	基本数学运算,关系判断,逻辑运算主要是使用&&和||,三目元素其实简化版ifelse
	特别注意: 除法,整数相除取整
	关系运算和逻辑运算的结果都是true/false的布尔值
关于if,ifelse
	重点是要将代码重复2遍,读代码,熟悉ifelse执行

快捷键

选中代码,ctrl+/ 注释

alt+回车,生成左边local variable(本地,变量)

单词

this  这个
window 窗口
cancel 取消
condition 条件
Variable 变量
result 结果
next 下一个
line  行
number 数字,简写num
local   本地
variable 变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值