【我的Java学习笔记-3】

运算符和表达式

运算符: 对字面量或者变量进行操作的符号。
表达式: 用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
举例说明:
int a=10;
int b = 20;
int c= a+ b;
+ :是运算符,并且是算术运算符
a+b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式

算数运算符

package com.itheima.arithmeticoprator;public static void main(String[] args) {  //+  System.out.println(3 + 2);//5  //-    System.out.println(5 - 1);//4  //*    System.out.println(7 * 9);//63  //结论:在代码中,如果有小数参与计算,结果有可能不是精确的  System.out.println(1.1 + 1.1);//2.2  System.out.println(1.1 + 1.0);//2.1  System.out.println(1.1 - 1.01);//0.09000000000000008  System.out.println(1.1 * 1.01);//1.1110000000000002  //除法  System.out.println(10 / 2);//5  System.out.println(10 / 3);//3→整数参与计算结果只能是整数  System.out.println(10.0 / 3);//3.3333333333333335  //求模运算--实际为除法运算,结果取余数而已  System.out.println(10 % 2);//0  System.out.println(10 % 3);//1}

小测试:输入一个三位数,分别输出他的个位、十位、百位。

import java.util.Scanner;  public class Test1 {  public static void main(String[] args) {  //键入一个三位数,获取其中的个位、十位、百位  //键盘录入  Scanner sc = new Scanner(System.in);  System.out.println("请输入一个三位数:");  int number = sc.nextInt();  //获取各各位置  int ge = number % 10;  int shi = number / 10 % 10;  int bai = number / 100 % 10;  System.out.println(ge);  System.out.println(shi);  System.out.println(bai);  }  
}

"+"的三种情况

数字相加

隐式转换(自动类型提升)
隐式转换的两种规则:
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
- byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
强制转换
如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的。如果一定要这么做就需要加入强制转换
格式: 目标数据类型 变量名=(目标数据类型)被强转的数据
例子
double a = 12.3;
int b = (int)a;

字符串相加

1、当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了会将前后的数据进行拼接,并产生一个新的字符串。
2、连续进行"+"操作时,从左到右逐个执行
用代码演示

System.out.println("123" + 123);//"123123"字符串
System.out.println(1+2+"123");//"312",从左到右依次计算,第一个加法左右都是数字,进行相加运算,然后在进行字符串相加//注意,没有双引号的可能是变量,有双引号的一定是变量
int age = 18;
System.out.println("我的年龄是"+ age +"岁")//我的年龄是18岁
System.out.println("我的年龄是"+ "age" +"岁")//我的年龄是age岁

字符相加

前面学到char类型在计算的时候会自动提升为char进行计算

char c = 'a';
int result = c + 0;
System.out.println(result);//97

当进行字符+字符字符+数字时,会把字符通过ASCII码表查询到对应的数字再进行计算。
ASCII中,A对应65,a对应97
但是在有字符串时,进行的是拼接操作哦!

System.out.println(1 + 'a'); //98
System.out.println('a' + "abc"); //aabc

自增自减运算符

基本用法

符号:++
说明:变量值加1
符号:–
说明:变量值减1
代码示例

int a = 10;
a++;
System.out.printl(a);//11
++a;
System.out.printl(a);//12
a--;
System.out.printl(a);//11
--a;
System.out.printl(a);//10

以++为示例,参与运算时,当++放在变量前面,先进行加1,在进行运算;当++放在变量后面,先进行运算,再加1.
代码示例

int x = 10;
int y = x++;//后++,先用后加
int z = ++y;//前++,先加后用
System.out.printl("x:" + x);//12
System.out.printl("y:" + y);//10
System.out.printl("z:" + z);//12

赋值运算符

符号:=
作用:赋值
说明:int a=10,将10赋值给变量a
符号:+=
作用:加后赋值
说明:a+=b,将a+b的值给a
符号:-=
作用:减后赋值
说明:a-=b,将a-b的值给a
符号:*=
作用:乘后赋值
说明:a*=b,将axb的值给a
符号:/=
作用:除后赋值
说明:a/=b,将a/b的商给a
符号:%=
作用:取余后赋值
说明:a%=b,将a/b的余数给a

//+=  
int a = 10;  
int b = 20;  
a += b;//把a+b,再把结果赋值给左边的变量a  
//等同于 a=(int)(a + b);  
System.out.println(a);//30  
System.out.println(b);//20  //细节:  
//+=,-=,*=,/=,%=底层都隐藏了一个强制类型转换  
short s = 1;  
//把左边和右边进行相加,得到结果2,再赋值给左边的变量  
s += 1;//等同于:s = (short)(s + 1);  
System.out.println(s);//2

关系运算符

符号:==
说明:判断a和b的值是否相等,成立为true,不成立为false
符号:!=
说明:判断a和b的值是否不相等,成立为true,不成立为false
符号:>
说明:判断a是否大于b,成立为true,不成立为false
符号:>=
说明:判断a是否大于等于b,成立为true,不成立为false
符号:<
说明:判断a是否小于b,成立为true,不成立为false
符号:<=
说明:判断a是否小于等于b,成立为true,不成立为false
注意事项:关系运算符都是boolean类型,要么时true,要么时false。注意不要把“==”写成"="。
代码实现

Scanner sc = new Scanner(System.in);  
System.out.println("请输入我们自己的时髦程度:");  
int myfashion = sc.nextInt();  
System.out.println("请输入对象的时髦程度:");  
int girlfashion = sc.nextInt();  boolean result =  myfashion > girlfashion;  System.out.println(result);

逻辑运算符

  • 在数学中,一个数据x,大于5,小于15,我们可以这样来进行表示:5<x<15.
  • 在Java中,需要把上面的式子先进行拆解,再进行合并表达。
    • 拆解为:x>5 和 x<15
    • 合井后:x>5&x<15

分类

符号: &
作用:逻辑与(且)
说明:并且,两边都为真,结果才为真

符号: |
作用:逻辑或
说明:或者,两边都为假,结果才为假

符号: ^
作用:逻辑异或
说明:相同为假,不同为真

符号: !
作用:逻辑非
说明:取反
代码示例

// &并且  
System.out.println(true & true);//true  
System.out.println(false & false);//false  
System.out.println(true & false);//false  
System.out.println(false & false);//false  // |或者  
System.out.println(true | true);//true  
System.out.println(false | false);//false  
System.out.println(false | true);//true  
System.out.println(true | false);//true  //  ^异或  
System.out.println(true ^ true);//true  
System.out.println(false ^ false);//false  
System.out.println(true ^ false);//false  
System.out.println(false ^ true);//true  //  !非  
System.out.println(!true);//false  
System.out.println(!false);//true

短路逻辑运算符

短路与:&&
结果和&相同,但是具有短路效果
不满足A则不再判断B
短路或:||
结果和|相同,但是具有短路效果
满足了A则不再判断B
代码示例

int a = 10;
int b = 10;
boolean result = ++a < 5 && ++b > 5;
//由于++a < 5为false,不再判断后面的++b > 5,形成短路效果,同时,++b没有运算,所以不会自增。
System.out.println(result);  //false
System.out.println(a);  //11
System.out.println(b);  //10

[!NOTE] 注意事项
&、 | ,无论左边 true false,右边都要执行

&& 、||,如果左边能确定整个表达式的结果,右边不执行。

&&:左边为false,右边不管是真是假,整个表达式的结果一定是false。

||:左边为true,右边不管是真是假,整个表达式的结果一定是true。

最常用的逻辑运算符:&&、||、!

三元运算符

格式: 关系运算符 ? 表达式1 : 表达式2
示例: 求两个数的较大值
a > b ? a : b;
解释,如果a大于b,则输出a,否则输出b
注意:直接用是会报错的。
用法:
①int max = a > b ? a : b;
②System.out.println(a > b ? a : b);
代码示例

//定义三个数  
int height1 = 150;  
int height2 = 210;  
int height3 = 165;  
//第一个数和第二个数比较,大者赋值给一个临时变量  
int temp = height1 > height2 ? height1 : height2;  
//再拿高的一个和第三个数比较  
int max = temp > height3 ? temp : height3;  
System.out.println(max);

运算符优先级

![[Pasted image 20240420205726.png]]

PS:小括号大于一切,养成加小括号的习惯

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

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

相关文章

软件测试报告的用途

软件测试报告的用途十分广泛&#xff0c;主要体现在以下几个方面&#xff1a; 评估软件质量&#xff1a;软件测试报告是对软件进行全面、系统测试后的总结&#xff0c;通过报告中的各项数据和结果&#xff0c;可以评估软件的质量水平&#xff0c;包括功能的完整性、性能的稳定…

linux-进程(2)

1.通过系统调用获取进程标示符 进程id&#xff08;PID&#xff09; 父进程id&#xff08;PPID&#xff09; 每一个可执行程序运行起来之后都会成为一个进程&#xff0c;每个进程都有一个自己的id&#xff0c;以及一个父进程id&#xff0c;父进程就是创建自己进程的进程&#xf…

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention多变量时间序列预测

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测 目录 SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测预测效果基本介绍…

二叉树-从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7]前序遍历的…

Group Query Attention (GQA) 机制详解以及手动实现计算

Group Query Attention (GQA) 机制详解 1. GQA的定义 Grouped-Query Attention (GQA) 是对 Multi-Head Attention (MHA) 和 Multi-Query Attention (MQA) 的扩展。通过提供计算效率和模型表达能力之间的灵活权衡&#xff0c;实现了查询头的分组。GQA将查询头分成了G个组&#…

分享一个2099试用码!JetBrains 2024 版

程序员痛点&#xff1a; 好用的编程工具收费太贵 无法找到好且免费的编程资料&#xff08;书或者视频&#xff09; 今天我们话几分钟分享一个激活方法&#xff0c;一次学习&#xff0c;终身受益 一分钟激活全家桶旗下所有软件 支持更新 Stage 1.下载安装 toolbox-app&…

【论文阅读】《Octopus v2: On-device language model for super agent》,端侧大模型的应用案例

今年LLM的发展趋势之一&#xff0c;就是端侧LLM快速发展&#xff0c;超级APP入口之争异常激烈。不过&#xff0c;端侧LLM如何应用&#xff0c;不知道细节就很难理解。正好&#xff0c;《Octopus v2: On-device language model for super agent》这篇文章可以解惑。 对比部署在…

【小浩算法cpp题解】判断环形链表

目录 前言我的思路思路一 &#xff08;哈希表记录链表的访问&#xff09;&#xff1a;思路二 &#xff08;双指针&#xff0c;快指针在前&#xff0c;慢指针在后&#xff09;&#xff1a; 我的代码运行结果 前言 前几天我写的代码&#xff0c;都是把所有的内容写在main函数里&…

GPB | RegVar:基于深度神经网络的非编码区突变功能预测新方法

Genomics, Proteomics & Bioinformatics &#xff08;GPB&#xff09;发表了由军事医学研究院辐射医学研究所张成岗研究员、周钢桥研究员和卢一鸣副研究员团队完成的题为“RegVar: Tissue-specific Prioritization of Noncoding Regulatory Variants”的方法文章。我们的“…

Spring事务回滚核心源码解读

记一次Springboot事务超时不回滚的分析过程 在Springboot中&#xff0c;我用的xml进行事务管理&#xff0c;DataSourceTransactionManager作为事务管理器&#xff0c;配置了事务控制在Service层&#xff1b;在事务管理器中&#xff0c;配置了defaultTimeout事务超时时间为5秒&…

IEC 62680新规上线,慧能泰设备端PD协议芯片带你勇闯欧盟

2022年12月7日&#xff0c;欧盟发布了Directive (EU) 2022/2380&#xff0c;强化了通用充电器的规定&#xff0c;并计划于2024年12月28日起&#xff0c;在所有欧盟国家强制执行该指令。此修订主要针对新生产的手机、平板、相机、耳机、游戏机、音箱、电子书、键盘、鼠标、导航仪…

使用knuth Durstenfeld Shuffle置乱关键区域

示意图 使用knuth Durstenfeld Shuffle置乱关键区域。比较典型的就是当我们对图像进行小波变换后&#xff0c;能量主要集中在左上角。 将图像进行排列&#xff0c;将关键区域置于整个序列的末尾&#xff0c;从末尾开始逐个交换&#xff0c;完成置换。 为了演示方便&#xff0c…