目录

一、基本算数运算符

二、自增自减运算符

三、赋值运算符

四、关系运算符

五、逻辑运算符

六、三元运算符

七、 运算符的优先级

八、小案例:在程序中接收用户通过键盘输入的数据


声明:本文章根据黑马程序员b站教学视频做的笔记,可对应课程听,本文章所对应的课程链接如下:09、Java语法:算术运算符、+符号做连接符_哔哩哔哩_bilibili

本章主讲运算符。

运算符的定义:对变量,字面量进行运算的符号

一、基本算数运算符

对上表的解释:
①+,-,*,/,%分别是加减乘除,取余
②​/号注意,两个整数做除法,其结果一定是整数,因为表达式的最终结果类型是由表达式的最高类型决定,两个整数相除,表达式最高类型是整数(整型),要是得到小数在式子里给被除数乘以1.0(就是小数的位数)
​③+除了做基本的数学运算 还能做连接符,在与字符串做+运算的时候会被当成连接符,其结果还是字符串。

④我们在开发中主要需要识别这个加号是连接符还是能运算的。
识别技巧(能算则算,不能算就在一起)
​例如,
int   a=5
sout.(a+'a'+"hhh");
​输出;102hhh
​因为变量a等于5,字符a在计算机存储为97,所以算则算,5+102=107,后面字符串不能算,直接连在一块就行。 

二、自增自减运算符

注:++ 、-- 只能操作变量,不能操作字面量的。 (字面量就是具体的数)

代码中的问题:

自增自减运算符放在变量前后有区别吗?
(1)如果单独使用放前后没区别,例如i++;和++i;没有区别,就是单独一个语句没有区别。

单独使用例子:i++;
(2)非单独使用,在变量前,先进行变量自增自减,在使用变量(加号在前,先加在用)
​非单独使用,在变量后,先使用变量,在进行变量自增/自减(加号在后,先用再加)

例子:

int a = 10;
int rs = ++a; (先加再用)    

int b = 10;
int rs = b++; (先用再加)    

三、赋值运算符

赋值运算符包括:

  • 基本的赋值运算符:= (从右边往左)

int a = 10// 先看“=”右边,把数据10赋值给左边的变量a存储。

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

扩展的赋值运算符的特点隐含了强制类型转换。强转能规避一些bug,详解:例如

int a=10;
int b=20;
a+=b;
System.out.println(a);//30

以上第三行代码的解释:a=(int)a+b;就是a等于a+b,并把结果强转为int类型然后赋值给a.

其他扩展的赋值运算符与上面类似。(开发中用的最多的是+=和-=)

四、关系运算符

1.定义:判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值:true或者false  

2.注:在java中判断是否相等一定是“== ” ,千万不要把  “== ”误写成 “=”。  

五、逻辑运算符

1.定义:把多个条件放在一起运算,最终返回布尔类型的值:truefalse

2.在java中, “& 、 “|:   无论左边是 false还是 true右边都要执行。

3.由于&&、运算效率高(出结果快)、在开发中用的更多。

4.实际开发中、常用的逻辑运算符还是:&& 、 || 、 !

package com.gezi.string;public class string {public static void main(String[] args) {//目标:掌握逻辑运算符的使用//需求:要求手机满足尺寸大于等于6.95,且内存必须大于等于8double size =6.8;int  storage =16;//1. &前后的条件结果必须都是true,结果才是true.boolean rs= size >= 6.95 & storage >= 8;System.out.println(rs);//需求2,要求手机要么满足尺寸大于等于6.95,要么内存必须大于等于8//2.只要多个条件中有一个是true,结果就是trueboolean rs2=size >= 6.95 | storage >= 8;System.out.println(rs2);//3. !取反的意思System.out.println(!true); //falseSystem.out.println(!false); //trueSystem.out.println(!(2>1)); //false//4.^ 异或,前后条件的结果相同时返回false,不同时返回trueSystem.out.println(true^true); //falseSystem.out.println(false^false); //falseSystem.out.println(true^false); //trueSystem.out.println(false^true); //true//5. && 左边为false,右边不执行,结果直接是falseint i =10;int j=20;System.out.println(i > 100 && ++j>99);//false//双与逻辑符发现左边为false,所以右边不执行,所以j的值不变,即为20,输出表达式的值为falseSystem.out.println(j);  //j=20//而 & 发现左边为false,仍然会执行右边,即j=21,表达式结果是一样的都为falseSystem.out.println(i > 100 & ++j>99); //falseSystem.out.println(j);  //j=21//6. ||左边是true,右边不执行,结果直接是trueint m=10;int n=30;//||发现左边是true,右边不执行,输出表达式结果为true,n的值为30System.out.println(m > 3 || ++n > 40); //trueSystem.out.println(n);//而 | 发现左边为true,仍然会执行右边,输出表达式值是一样的,为true,但n的值变了,变成31System.out.println(m > 3 | ++n > 40);   //trueSystem.out.println(n);}
}

六、三元运算符

 1.格式:条件表达式  ?  值1 : 值2;

 2.执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2。

 3.小案例:需求,用三目运算符找出三个整数中最大的整数

package com.gezi.string;public class string {public static void main(String[] args) {//需求:找三个整数中的较大值int a=10;int b=45;int c=34;int temp=a>b ? a : b;   //先找出两个数中谁较大,用临时变量temp来存储这个临时结果,//上面那行代码对应的含义是 判断a>b吗,若a大则执行第一个位置的表达式,即把a的值赋给temp,若a不大于b,则返回第二个位置的值,即把b的值赋给tempint max=temp >c ? temp :c; //把两个数中较大的跟c比较,谁大就是谁最大。//上面那行代码对应的含义是 判断temp>c吗,若temp大则执行第一个位置的表达式,即把temp的值赋给max,若temp不大于c,则返回第二个位置的值,即把c的值赋给maxSystem.out.println(max);  //输出值45}
}

七、 运算符的优先级

定义:在表达式中,哪个运算符先执行后执行是要看优先级的,例如 “*、/” 的优先级高于”+-”。优先级高的先执行,具体优先级看下表

记忆口诀:括号级别最高,逗号级别最低,单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。

写代码的一个办法,当你不确定运算符的优先级的时候,那就想要谁先执行,就给谁套上括号。

八、小案例:在程序中接收用户通过键盘输入的数据

package com.gezi.string;import java.util.Scanner;public class string {public static void main(String[] args) {//学会java中接受用户在键盘上录入的数据————调用Scanner工具类//1、导包:一般不需要我们自己做,idea工具会自动帮助我们 导包的。// 2、抄写代码:得到一个键盘扫描器对象(东西)Scanner sc =new Scanner(System.in);   // new一个Scanner对象// 3、开始 调用sc的功能,来接收用户键盘输入的数据。System.out.println("请您输入您的年龄:");int age =sc.nextInt(); // 执行到这儿,会开始等待用户输入一个整数,直到用户按了回车键,才会拿到数据。System.out.println("请您输入您的名字:");String name =sc.next();// 执行到这儿,会开始等待用户输入一个字符串,直到用户按了回车键,才会拿到数据。System.out.println(name + "欢迎您进入系统~~");}
}

代码里面用到的相关知识:

   ①API Application Programming Interface:应用程序编程接口)

  • Java写好的程序,咱们程序员可以直接拿来调用。
  • Java为自己写好的程序提供了相应的 程序使用说明书(API文档)。
  • 下载API文档:https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html
  • API与JDK的包含关系如下图:

②Scanner工具类调用步骤

1、导包:import java.util.Scanner;(idea中自动导)

2、抄代码得到扫描器对象: Scanner sc = new Scanner(System.in)

3、抄代码等待接收用户输入的数据:

int age =  sc.nextInt()  //接整型变量

String name = sc.next()  //接字符串变量


day02天后半个笔记就到这里啦!喜欢的友友点个收藏吧 ~

持续更新中~

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随机密码生成器:原理、实现与应用(多语言实现)

在当今数字化的时代,信息安全至关重要。而密码作为保护个人和敏感信息的第一道防线,其安全性直接关系到我们的隐私和数据安全。然而,许多人在设置密码时往往使用简单、易猜的组合,如生日、电话号码或常见的单词,这使得…

TypeScript 泛型讲解

如果说 TypeScript 是一门对类型进行编程的语言,那么泛型就是这门语言里的(函数)参数。本章,我将会从多角度讲解 TypeScript 中无处不在的泛型,以及它在类型别名、对象类型、函数与 Class 中的使用方式。 一、泛型的核…

SQL 每日一题(6)

继续做题! 原始表:employee_resignations表 employee_idresignation_date10012022-03-1510022022-11-2010032023-01-0510042023-07-1210052024-02-28 第一题: 查询累计到每个年度的离职人数 结果输出:年度、当年离职人数、累计…

工业RTOS生态重构:从PLC到“端 - 边 - 云”协同调度

一、引言 在当今数字化浪潮席卷全球的背景下,工业领域正经历着深刻变革。工业自动化作为制造业发展的基石,其技术架构的演进直接关系到生产效率、产品质量以及企业的市场竞争力。传统的PLC(可编程逻辑控制器)架构虽然在工业控制领…

从版本控制到协同开发:深度解析 Git、SVN 及现代工具链

前言:在当今软件开发的浪潮中,版本控制与协同开发无疑扮演着举足轻重的角色。从最初的单兵作战到如今大规模团队的高效协作,一套成熟且得力的版本控制系统以及围绕其构建的现代工具链,已然成为推动软件项目稳步前行的关键引擎。今…

Visual Studio Code插件离线安装指南:从市场获取并手动部署

Visual Studio Code插件离线安装指南:从市场获取并手动部署 一、场景背景二、操作步骤详解步骤1:访问官方插件市场步骤2:定位目标版本步骤3:提取关键参数步骤4:构造下载链接步骤5:下载与安装 三、注意事项 …

用HTML5实现实时ASCII艺术摄像头

用HTML5实现实时ASCII艺术摄像头 项目简介 这是一个将摄像头画面实时转换为ASCII字符艺术的Web应用,基于HTML5和原生JavaScript实现。通过本项目可以学习到: 浏览器摄像头API的使用Canvas图像处理技术实时视频流处理复杂DOM操作性能优化技巧 功能亮点…

论文审稿之我对SCI写作的思考

有幸被邀请审过二区、三区、四区期刊的论文,近期审稿10余篇,分享一下我从一个审稿人的角度出发,如何提升自己写作的质量。 作图高清和好看,永远是排第一位。图中的字要清晰,有的放大200%还看不清字;每幅图的…

MLA:Transformer的智能变形金刚——解密多头潜在注意力的进化密码

第一章 MLA的进化之路:从MHA到智能变形 1.1 变形金刚的诞生背景 当LLM模型规模突破万亿参数量级时,传统Transformer的注意力机制开始显现"成长的烦恼":训练阶段计算密集、推理阶段内存吃紧。DeepSeek团队的MLA如同给注意力模块装…

电子电路:电学都有哪些核心概念?

电子是基本粒子,带负电荷。电荷是物质的一种属性,电子带有负电荷,而质子带有正电荷。电荷的单位是库仑。 电流呢,应该是指电荷的流动,单位是安培,也就是库仑每秒。所以电流其实就是电荷在导体中的移动形成的。比如,当电子在导线中流动时,就形成了电流。不过要注意,传…

第三次中医知识问答模型微调

本次参数 llamafactory-cli train \ --stage sft \ --do_train True \ --model_name_or_path /home/qhyz/zxy/LLaMA-Factory/model \ --preprocessing_num_workers 16 \ --finetuning_type lora \ --template deepseek3 \ --flash_attn fa2 \ --dataset_dir data \ --dataset …

leetcode2081. k 镜像数字的和-hard

1 题目:k 镜像数字的和 官方标定难度:难 一个 k 镜像数字 指的是一个在十进制和 k 进制下从前往后读和从后往前读都一样的 没有前导 0 的 正 整数。 比方说,9 是一个 2 镜像数字。9 在十进制下为 9 ,二进制下为 1001 &#xff…

计算机网络学习(七)——IP

一、IP 在计算机网络中,IP(Internet Protocol,网际协议)是网络层的核心协议,用于实现跨越不同网络的数据包传输。IP 是 TCP/IP 协议族的核心部分,属于网络层协议,也是 Internet 赖以运作的基础…

【技术追踪】ADDP:通过交替去噪扩散过程学习用于图像识别和生成的通用表示(ICLR-2024)

扩散模型交替去噪:助力图像识别与图像生成~ 论文:ADDP: Learning General Representations for Image Recognition and Generation with Alternating Denoising Diffusion Process 代码:https://github.com/ChangyaoTian/ADDP 0、摘要 图像识…

在Linux上安装Miniconda

在Linux上安装Anaconda或Miniconda(轻量级版本) 选择安装版本 Anaconda: 包含200预装包(如NumPy、Pandas、TensorFlow等),适合新手或需要完整科学计算环境的用户。 安装包较大(约500MB&#xff…

SRS流媒体服务器之RTC播放环境搭建

环境概述 srs版本 commit 44f0c36b61bc7c3a1d51cb60be0ec184c840f09d Author: winlin <winlinvip.126.com> Date: Wed Aug 2 10:34:41 2023 0800Release v4.0-r5, 4.0 release5, v4.0.271, 145574 lines. rtc.conf # WebRTC streaming config for SRS. # see full.…

清山垃圾的3个问题

与一群驴友进山&#xff0c;同步捡拾一路的垃圾&#xff1a;清山行动。 关于垃圾&#xff0c;大家提了3个问题。记录于此&#xff0c;勤于思考&#xff1a;为什么&#xff0c;如何做 问题 - 山里的垃圾有哪些&#xff1f; - 垃圾是谁丢的&#xff1f; - 他们为…

redis集合类型

练习命令使用&#xff0c;具体如下&#xff1a; 练习无序集合类型命令 sadd smembers scard srem sinter sunion sdiff sismember srandmember spop 练习有序集合类型命令 无序集合中的每个元素都是不同的&#xff0c;且没有顺序 创建/追加/删除/查看 127.0.0.1:6379>…

JAVA 包管理

一 、关键点 包声明规则&#xff1a; 每个类首行的package声明必须与文件路径完全匹配com.example.math对应路径com/example/mathorg.demo.greeting对应路径org/demo/greeting 编译参数&#xff1a; -d ./build&#xff1a;指定编译输出目录编译器会自动根据包声明创建对应…

Linux中的文件系统和软硬连接

磁盘的访问方式 CHS&#xff08;柱面&#xff0c;磁头&#xff0c;扇区&#xff09; 法&#xff08;磁盘硬件查找&#xff09;&#xff1a; 确定柱面&#xff08;C&#xff09; 磁头臂移动到对应的柱面位置。例如&#xff0c;柱面号为 5&#xff0c;则磁头移动到第 5 个磁道组…