day02_运算符_if

news2024/10/6 6:46:08

零、今日内容

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 变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1077096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全(黑客)—0基础学习手册

目录梗概 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来…

Git【入门】从安装到会用(千字总结●超详细)

我的个人主页&#xff1a;☆光之梦☆_C语言基础语法&#xff08;超详细&#xff09;,【java入门】语法总结-CSDN博客 创作不易&#xff0c;如果能帮到你就好 注&#xff1a;你的 &#x1f44d;点赞 ⭐收藏 &#x1f4dd;评论 是对博主最大的支持与鼓励喔 认真看完这篇文章&am…

极智AI | 能够轻松构建大模型端到端应用的LangChain 到底是什么

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来介绍一下 能够轻松构建大模型端到端应用的 LangChain,到底是什么。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 先上官…

Cesium热力图

二、代码 <!doctype html> <html><head><meta charset"utf-8"><link rel"stylesheet" href"./css/common.css"><title>热力图</title><script src"./js/config.js"></script>…

手动实现SpringMVC底层机制

手动实现SpringMVC底层机制 &#x1f41f;准备工作&#x1f34d;搭建SpringMVC底层机制开发环境 实现任务阶段一&#x1f34d;开发ZzwDispatcherServlet&#x1f966;说明: 编写ZzwDispatcherServlet充当原生的DispatcherServlet(即核心控制器)&#x1f966;分析代码实现&#…

基于点标签的目标检测与计数深度学习框架盘点

(1)P2PNet <1>P2PNet提出 论文出处&#xff1a;Rethinking Counting and Localization in Crowds: A Purely Point-Based Framework 论文链接&#xff1a;https://arxiv.org/abs/2107.12746 开源代码&#xff1a;https://github.com/TencentYoutuResearch/CrowdCount…

物联网AI MicroPython传感器学习 之 MQ136硫化氢传感器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 MQ136 是一种硫化氢检测传感器&#xff0c;感应范围为 1 - 200ppm。传感元件是 SnO2&#xff0c;它在清洁空气中的电导率较低。当存在 H₂S 气体时&#xff0c;传感器的电导率随着气体浓度的升…

Gralloc ION DMABUF in Camera Display

目录 Background knowledge Introduction ia pa va and memory addressing Memory Addressing Page Frame Management Memory area management DMA IOVA and IOMMU Introduce DMABUF What is DMABUF DMABUF 关键概念 DMABUF APIS –The Exporter DMABUF APIS –The…

PyTorch模型的多种导出方式提供给其他程序使用

PyTorch模型的多种导出方式提供给其他程序使用 flyfish PyTorch模型的多种导出方式 PyTorch模型的多种导出方式提供给其他程序使用1 模型可视化2 预训练模型3 ONNX模型导出有输入有输出TRAINING导出方式EVAL导出方式 4 自定义输入输出的名字&#xff0c;并可批量推理5 导出JI…

PyG两个data Datsaset v.s. InMemoryDataset

可以看到InMemoryDataset 对CPU更加友好 https://pytorch-geometric.readthedocs.io/en/latest/modules/data.html#pytorch-lightning-wrappers

Linux下C++编程-进度条

引言&#xff1a;本篇主要在linux下的C实现进度条的功能。按照多文件编程&#xff0c;同时使用Makefile文件完成多文件的编译、连接。 首先创建头文件&#xff1a; 1. progress.h #pragma once #include <iostream> #include <cstring> #include <iomanip>…

Navicat定时任务

Navicat定时任务 1、启动Navicat for MySQL工具&#xff0c;连接数据库。 2、查询定时任务选项是否开启 查询命令&#xff1a;SHOW VARIABLES LIKE ‘%event_scheduler%’; ON表示打开&#xff0c;OFF表示关闭。 打开定时任务命令 SET GLOBAL event_scheduler 0; 或者 SET G…

elasticsearch 8.5.3问题记录

一&#xff1a;解决 elasticsearch 高版本 warning: ignoring JAVA_HOMEC:\Program Files\Java\jdk-11&#xff1b; using bundled JDK if defined JAVA_HOME (set JAVA_HOME%JAVA_HOME%; )示例版本Elasticsearch 8.5.3 可以与 JDK 11 兼容&#xff0c;但不支持 JDK 17。确保选…

离散数学 期末复习

离散数学 期末复习 图片过多&#xff0c;若无法显示&#xff0c;请转至 https://chenhaotian.top/study/discrete-mathematics-final-review/ 访问全文 发布于 2023-06-18 第 1 章 命题逻辑 1.2 等值演算 真值表法 等值演算法 题&#xff1a;等值演算 题&#xff1a;等值演…

python 学习随笔 5

函数 在python中&#xff0c;函数也是对象。 def func():""" 这是文档字符串"""print("Hello World")fun带参数函数 函数和变量注解 def calc(a:int, b:int) -> int: # 为函数的形参和返回值标注类型return a b print(calc(1,3…

C语言重点突破(2)指针(三)

本章重点 1. 函数指针 2. 函数指针数组3. 指向函数指针数组的指针 4. 回调函数 1.函数指针 首先可以明确的是&#xff0c;函数指针和数组指针的类型都是指针类型&#xff0c;用来存放地址的&#xff0c;数组指针存放数组的地址&#xff0c;而函数指针存放的便是函数的地址。 …

ESPHome 通过http获取设备的状态

substitutions: { desc: 传感器, devicename: sensor }esphome:name: $devicenameplatform: ESP8266board: nodemcuv2arduino_version: latest# Enable logging logger:# Enable Home Assistant API api:encryption:key: "MhXiJqKKyCXTqjZWqtegaP1tQSUpPtbnXP9iV1i2TzE&qu…

SSM - Springboot - MyBatis-Plus 全栈体系(二十四)

第五章 SSM 二、SSM 整合配置实战 1. 依赖整合添加 1.1 数据库准备 依然沿用 mybatis 数据库测试脚本&#xff01; CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIM…

视频号双11激励政策,快来看一看

双十一即将来临&#xff0c;不少平台都公布了自己的双十一政策。这篇文章&#xff0c;我们来看看视频号推出的激励政策&#xff0c;看有哪些需要准备的。

var、const、let的区别

目录 一、作用域 二、变量提升&#xff08;Hoisting&#xff09; 三、重复声明 四、 赋值和重新赋值 五、全局对象属性 六、使用场景 七、声明和赋值的数据类型 一、作用域 var 声明的变量在函数作用域内有效&#xff0c;如果在函数外声明&#xff0c;它将成为全局变量…