当前位置: 首页 > news >正文

Java运算符学习笔记

运算符

-运算符介绍

​ 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

  1. 算数运算符
  2. 赋值运算符
  3. 关系运算符[比较运算符]
  4. 逻辑运算符
  5. 位运算符[需要二进制基础]
  6. 三元运算符

-算数运算符

  • 介绍

    算数运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。

  • 算数运算符一览

运算符运算
+正号
-负号
+
-
*
/
%取模(取余)
++(前)、++(后)自增(前):先运算后取值;自增(后):先取值后运算
–(前)、–(后)自减(前):先运算后取值;自减(后):先取值后运算
+字符串相加
  • 面试题

    public class ArithmeticOperatorExercise01{public static void main(String[] args){int i=1;i=i++;//temp=i;i=i+1;i=tempSystem.out.println(i);//1int j=1;j=++j;//j=j+1;temp=j;j=temp;System.out.println(j);//2}
    }
    
  • 课堂练习2

    public class ArithmeticOperatorExercise02{public static void main(String[] args){//1. 假如还有59天放假,问:合xx个星期零xx天int gap=59;//距离放假的天数int weeks=gap/7;//周int days=gap-weeks*7;//天System.out.println("合"+weeks+"个星期零"+days+"天");//2.定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。[234.5]double fTem=234.5;double cTem=5/9.0*(fTem-100);System.out.println(fTem+"华摄氏度对应的摄氏度是"+cTem);}
    }
    

-关系运算符(比较运算符)

  • 介绍
    1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false。
    2. 关系表达式经常用在if结构的条件中或循环结构的条件中。
运算符运算
==相等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于
instanceof检查是否是类的对象
  • 细节说明
    1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false
    2. 关系运算符组成的表达式,我们称为关系表达式。a>b
    3. 比较运算符“==”不能误写成"="

-逻辑运算符

  • 介绍

    用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值

  • 逻辑运算符一览

    1. 短路与&&,短路或||,取反!
    2. 逻辑与&,逻辑或|,^逻辑异或
  • 逻辑运算符一览

    1. a&b:& 叫逻辑与:规则:当a和 b同时为true ,则结果为true,否则为false。
    2. a&&b:&& 叫短路与:规则:当a 和 b同时为true,则结果为true,否则为false。
    3. a l b 😐 叫逻辑或,规则:当a和b,有一个为true,则结果为true,否则为false。
    4. a||b:|| 叫短路或,规则:当a 和 b,有一个为true ,则结果为true,否则为false。
    5. ! a:叫取反,或者非运算。当a 为true,则结果为false,当a为false时,结果为true。
    6. a^b: 叫逻辑异或,当a和b不同时,则结果为true, 否则为false。
  • &&和&基本规则

    名称语法特点
    短路与&&条件1&&条件2两个条件都为true,结果为true
    逻辑与&条件1&条件2两个条件都为true,结果为true
  • &&和&使用区别

    1. &&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false效率高
    2. & 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
    3. 开发中,我们使用的基本是短路与&&,效率高

●||和|基本规则名称

名称语法特点
短路或||条件1||条件2两个条件中只要有一个成立,结果为true
|逻辑或条件1|条件2只要有一个条件成立,结果为true
  • ||和|使用区别
  1. ||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
  2. |逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
  3. 开发中,我们基本使用||
  • !取反与^逻辑异或基本规则

    名称语法特点
    !非(取反)!条件如果条件本身成立,结果为false,否则为true
    ^逻辑异或a^b当a和b不同时结果为true,否则为false
  • 用以连接多个条件(多个关系表达式),最终的结果也是一个boolean值

-赋值运算符

  • 介绍

    赋值运算符就是将某个运算后的值,赋给指定的变量。

  • 赋值运算符的分类

    基本赋值运算符 =

    复合赋值运算符 +=、-=、*=、/=、%=等

  • 赋值运算符特点

    1. 运算顺序从右往左int num= a+b+c;

    2. 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值

      int num = 20; int num2= 78*34 -10; int num3 = a;

    3. 复合赋值运算符等价于下面的效果

      比如:a+=3:等价于a=a+3:

    4. 复合赋值运算符会进行类型转换。

      byte b = 2; b+=3; b++;

-三元运算符

  • 基本语法

    条件表达式?表达式1:表达式2;

    1. 如果条件表达式为true,运算后的结果是表达式
    2. 如果条件表达式为false,运算后的结果是表达式
  • 使用细节

    1. 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
    2. 三元运算符可以转成if–else 语句

-运算符优先级

  • 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
  • 只有单目运算符、赋值运算符是从右向左运算的。
. () {} ; ,
R->L++ – ~ !(data type)
L->R* / %
L->R+ -
L->R<< >> >>> 位移
L->R< > <= >= instanceof
L->R== !=
L->R&
L->R^
L->R|
L->R&&
L->R||
L->R? :
R->L= *= /= %=
+= -= <<= >>=
>>>= &= ^= |=
  • 优先级梳理
  1. 括号
  2. 单目运算符
  3. 算数运算符
  4. 位移运算符
  5. 比较运算符
  6. 逻辑运算符
  7. 三元运算符
  8. 赋值运算符

-标识符的命名规则和规范

  • 标识符概念

    1. Java 对各种变量、方法和类等命名时使用的字符序列称为标识符
    2. 凡是自己可以起名字的地方都叫标识符 int num1=90;
  • 标识符的命名规则(必须遵守)

    1. 由26个英文字母大小写,0-9,_或$组成
    2. 数字不可以开头,如int 3ab =1;
    3. 不可以使用关键字和保留字,但能包含关键字和保留字。
    4. Java中严格区分大小写,长度无限制。int totalNum=10; int n=90;
    5. 标识符不能包含空格。int a b=90;
  • 标识符命名规范

    1. 包名:多单词组成时所有字母都小写:aaa.bbb.ccc//比如com.hsp.crm
    2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZ22比如:TankShotGame
    3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz比如:tankShotGame
    4. 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXXYYYZZZ比如 :定义一个所得税率 TAX RATE
    5. 后面我们学习到 类,包,接口,等时,我们的命名规范要这样遵守,更加详细的看文档.

-关键字

  • 关键字的定义和特点(不用背)

    • 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)

    • 特点:关键字中所有字母都为小写

  • 各种关键字:

    • 用于定义数据类型的关键字:class、interface、enum、byte、short、int、long、float、double、char、boolean、void
    • 用于定义数据类型值的关键字:true、false、null
    • 用于定义流程控制的关键字:if、else、switch、case、default、while、do、for、break、continue、return
    • 用于定义访问权限修饰符的关键字:private、protected、public
    • 用于定义类、函数、变量修饰符的关键字:
    • 用于定义类与类之间关系的关键字:extends、implements
    • 用于定义建立实例及引用实例,判断实例的关键字:new、this、super、instanceof
    • 用于处理异常的关键字:try、catch、finally、throw、throws
    • 用于包的关键字:package、import
    • 其他修饰符关键字:native、strictfp、transient、volatile、assert

-保留字

  • 介绍

    ​ Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字byValue、cast,future、 generic、 inner、 operator、 outer、 rest、 vargoto 、const

-键盘输入语句

  • 介绍
    在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java,需要一个 扫描器(对象),就是 Scanner

  • 步骤:
    1)导入该类的所在包,java.util.*

    2)创建该类对象(声明变量)

    3)调用里面的功能

  • 案例

    import java.util.Scanner;
    public class InputExercise{public static void main(String[] args){//初始化Scanner对象Scanner input=new Scanner(System.in);//接收用户输入System.out.println("请输入姓名:");String name=input.next();System.out.println("请输入年龄:");int age=input.nextInt();System.out.println("请输入薪水:");double salary=input.nextDouble();//输出接收的用户输入System.out.println("姓名是"+name+"\n年龄是"+age+"\n薪水是"+salary);}
    }
    

-进制

  • 进制介绍

    对于整数,有四种表示方式:

    1. 二进制:0,1,满2进1.以0b或0B开头。
    2. 十进制:0-9 ,满10进1
    3. 八进制:0-7,满8进1.以数字0开头表示
    4. 十六进制:0-9及A(10)-F(15),满16进1.以0x或0X开头表示。此处的A-F不区分大小写。
  • 进制演示

public class baseExercise{public static void main(String[] args){//二进制、十进制、八进制、十六进制整数int num0=0b1010;int num1=1010;int num2=01010;int num3=0x1010;System.out.println(num0);System.out.println(num1);System.out.println(num2);System.out.println(num3);}
}
  • 二进制转十进制:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方然后求和。

  • 八进制转十进制:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方然后求和。

  • 十六进制转十进制:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方然后求和。

  • 十进制转其他进制:将该数不断除以其他进制的base,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

  • 二进制转换成八进制:从低位开始,将二进制数每三位一组,转成对应的八进制数即可

  • 二进制转换成十六进制:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可

  • 八进制转换成二进制:将八进制数每1位,转成对应的一个3位的二进制数即可

  • 十六进制转换成二进制:将十六进制数每1位,转成对应的一个4位的二进制数即可

  • 二进制在运算中的说明

    1. 二进制是逢2进位的进位制,0、1是基本算符。
    2. 现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用0和1两个数字及其组合来表示任何数。进位规则是"逢2进1",数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。

-原码、反码、补码(重点难点)

网上对原码,反码,补码的解释过于复杂,我这里精简几句话:

对于有符号的而言:

  1. 二进制的最高位是符号位:0表示正数,1表示负数(口诀:0->01->-)
  2. 正数的原码,反码,补码都一样(三码合一)
  3. 负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
  4. 负数的补码=它的反码+1,负数的反码= 负数的补码-1
  5. 0的反码,补码都是0
  6. java没有无符号数,换言之,java中的数都是有符号的
  7. 在计算机运算的时候,都是以补码的方式来运算的
  8. 当我们看运算结果的时候,要看他的原码(重点)

-位运算符

  • java中有7个位运算(&、|、^、~、>>、<<和 >>>)

  • 分别是 按位与&、按位或|、按位异或^,按位取反~,算数右移>>、算数左移<<,逻辑右移>>>(没有逻辑左移!),它们的运算规则是:

    • 按位与&:两位全为1,结果为1,否则为0

    • 按位或|:两位有一个为1,结果为1,否则为0

    • 按位异或^:两位不同结果为1,否则为0

    • 按位取反~:0变1,1变0

    • 算数右移>>:符号位不变,低位溢出,用符号位补足高位

    • 算数左移<<:符号位不变,低位补0

    • 逻辑右移>>>:符号位参与右移,低位溢出,高位补0

相关文章:

  • 【翻译、转载】【译文】模型上下文协议(Model Context Protocol, MCP)简介
  • 邮件协议、签名与推送
  • C++23 新特性:为 std::pair 的转发构造函数添加默认实参
  • 《前端秘籍:SCSS阴影效果全兼容指南》
  • drawDB:打造高效数据库设计流程
  • 仓颉编程语言快速入门:从零开始构建你的第一个程序
  • BC19 反向输出一个四位数
  • Runnable 组件生命周期监听器与使用场景
  • 【人工智能】人形机器人与低空经济协同发展分析
  • window-docker的容器使用宿主机音频设备
  • 【51单片机2个定时器2个外部中断设置】2022-5-11
  • maven坐标导入jar包时剔除不需要的内容
  • 基于开源AI大模型AI智能名片S2B2C商城小程序源码的私域流量稳定性构建研究
  • Android运行时ART加载OAT文件的过程
  • Hadoop 1.x设计理念解析
  • 配置和使用持久卷
  • Prompt多版本测试指南:如何科学评估不同提示词的效果
  • OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境
  • ROC-AUC:模型评估的“超级英雄
  • 文献分享:CH-CL配对和VL结构域的完整性影响IgG1分泌过程
  • AI世界的年轻人|横跨教育与产业,他说攻克前沿问题是研究者的使命
  • 跳水世界杯总决赛陈佳获得女子3米板冠军,陈艺文获得亚军
  • 缔造“水饺皇后”的香港,也是被移民塑造的香港
  • 德国旅游胜地发生爆炸事故,11人受伤
  • 美乌签署协议建立美乌重建投资基金
  • 迪卡侬回应出售中国业务30%股份传闻:始终扎根中国长期发展