Java SE: 运算符

食用前说明:

本文章内容来自B站韩顺平老师的课堂笔记,本人只是将其进行自我整理,内容略有删减,韩顺平老师的B站课程AV号:BV1fh411y7R8

本文章内容整理自韩顺平老师的课堂笔记的第4章运算符,内容省略的练习部分。其中需重点掌握:进制转换,以及位运算,若需要的同学可直接跳转:

由基本的四种进制开始

4.1.1 运算符介绍

运算符是用以表示数据的 运算赋值比较等。

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

4.2 算术运算符

4.2.1 介绍

用于基本的数学运算

4.2.2 算术运算符总览

操作符 描述 例子 结果
+ 正号 +7 7
- 负号 b=11; -b -11
+ 加法 - 相加运算符两侧的值 9+9 18
- 减法 - 左操作数减去右操作数 10-8 2
* 乘法 - 相乘操作符两侧的值 7*8 56
/ 除法 - 左操作数除以右操作数 9/9 1
取余 - 左操作数除以右操作数的余数 11%9 2
++ 自增: 操作数的值增加1 a=2;b=++a; a=2;b=a++; a=3;b=3; a=3;b=2;
-- 自减: 操作数的值减少1 a=2;b=++a; a=2;b=a++; a=1;b=1; a=1;b=2;
+ 字符串相加 "hsp"+"edu" "hapedu"

前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。

后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算 实例:

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

4.3.1 介绍

关系运算符的结果都是 boolean 型,经常用在 if 结构的条件中或循环结构的条件中

4.3.2 关系运算符总览

运算符 描述 例子
== 相等于 (A == B)为假。
!= 不等于 (A != B)为真。
> 大于 (A> B)为假。
< 小于 (A
>= 大于不等于 (A> = B)为假。
<= 小于不等于 (A <= B)为真。
instanceof 检查是否为类对象 "hsp" instanceof String 为真

4.3.3 细节说明

1、关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。 2、关系运算符组成的表达式,我们称为关系表达式。 a > b 3、比较运算符"=="不能误写成"="

4.4 逻辑运算符

4.4.1 介绍

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

4.4.2 逻辑运算符一览

1、短路与 && , 短路或 ||,取反 !

2、逻辑与 &,逻辑或 |,^ 逻辑异或

4.4.3 &&& 基本规则

名称 语法 特点
&& 短路与 条件 1 && 条件 2 两个条件都为 true,结果为 true,否则 false
& 逻辑与 条件 1 & 条件 2 两个条件都为 true,结果为 true,否则 false

区别

  • 对于 && 短路与而言,如果第一个条件为 false,后面的条件不再判断,最终结果为 false,效率高

  • 对于 & 逻辑与而言,如果第一个条件为 false,后面的条件仍然会判断,第二个条件都要判断,效率低

  • 开发中多用 短路与 &&,效率高

4.4.6 ||| 基本规则

名称 语法 特点
|| 短路或 条件 1 || 条件 2 只要有一个条件成立,结果为 true,否则为 false
| 逻辑或 条件 1 | 条件 2 只要有一个条件成立,结果为 true,否则为 false

区别

  • 对于 || 短路与而言,如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高

  • 对于 | 短路与而言,不管第一个条件是否为 true,第二个条件都要判断,效率低

  • 开发中多用 短路与 ||,效率高

4.4.10 ! 取反 基本规则

名称 语法 特点
! 非(取反) !条件 如果条件本身成立,结果为 false,否则为 true
  • 案例演示

  • System.out.println(60 > 20); 	//结果:T
    System.out.println(!(60 > 20)); //结果:F

4.4.11 ^ 逻辑异或

  • a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false

    ^ 逻辑异或

    • 案例演示

    • System.out.println( (4 < 1) ^ (6 > 3) );
      
      //运行结果
      true

4.5 赋值运算符

4.5.1 介绍

将运算后的值,赋给指定的变量

4.5.2 赋值运算符的分类

  1、基本赋值运算符 =

  • int a = 10;

  2、复合赋值运算符

        += ,-= ,*= , /= ,%= 等

  • a += b;		//等价 a = a + b;
    a -+ b;		//等价 a = a - b;

4.5.3 赋值运算符特点

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++;

4.6 三元运算符

4.6.1基本语法

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

  • 运算规则:

    1. 条件表达式 为true,则结果为 表达式1

    2. 条件表达式 为false,则结果为 表达式2

    口诀:[ 真一假二 ]

4.6.2案例演示

int a = 10;
int b = 99;
int result = a > b ? a++ : b--; //判断为false 输出:b--
System.out.println("result=" + result);
System.out.println("a=" + a);
System.out.println("b=" + b);

运行结果

result=99
a=10
b=98

4.6.3使用细节

  1、两个表达式(表达式 1表达式 2),是可以赋值给变量的类型

  • 演示

  • //满足可以自动转换/或者强制转换的要求
    int a = 3;
    int b = 8;
    int c = a > b ? (int)1.1 : (int)3.4;//可以的
    double d = a > b ? a : b + 3;	//可以的,满足 int -> double

  2、三元运算符可转成 if--else 语句

  • 演示

  • int res = a > b ? a++ : --b;
    //等价于
    if ( a > b) res = a++;
    else res = --b;

4.7 运算符优先级

  1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。

  1. 只有单目运算符、赋值运算符是从右向左运算的。

运算顺序 运算优先级从上到下
.   ()   {}   ;   ,
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 =   *=   /=   %=
+=   -=   <<=   >>==
>>>=   &=    ^=    |=

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

  • 变量、方法和类 命名规则

    1. 由字母、数字、_$ 组成

    2. 数字不能开头

    3. 不能使用关键字、保留字,可以包含关键字、保留字

    4. Java严格区分大小写

    5. 不能包含空格

4.8.1 包名

  • 驼峰命名法

    tankShotGame

4.8.2 变量名、方法名

  • 驼峰命名法

     tankShotGame

4.8.3 常量名

  • 所有字母都大写,单词之间用下划线连接

     TAX_RATE

4.9 关键字

  • 用于定义数据类型的关键字

    class interface enum byte short int
    long float double char boolean void
  • 用于定义数据类型值的关键字

  • 用于定义流程控制的关键字

    if else switch case default while
    do for break continue return
  • 用于定义访问权限修饰符的关键字

  • 用于定义类,函数,变量修饰符的关键字

  • 用于异常处理的关键字

  • 用于包的关键字

  • 其他修饰符关键字

4.10 保留字

  • 现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。

    byValue cast future generic inner operator
    outer rest var goto const

4.11 键盘输入语句

4.11.1 介绍

  • 用于接收用户输入的数据。在 Input.java 包中

Scanner

4.11.2 步骤 :

  1. 导入该类的所在包, java.util.*

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

  3. 调用里面的功能

4.11.3 案例演示

/**
     要求:可以从控制台接收用户信息,【姓名,年龄,薪水】
 */
 import java.util.Scanner;//表示把 java.util 下的 Scanner 类导入
 public class Input {
 //编写一个 main 方法
     public static void main(String[] args) {
         //演示接受用户的输入
         //步骤
         //Scanner 类 表示 简单文本扫描器,在 java.util 包
         //1. 引入/导入 Scanner 类所在的包
         //2. 创建 Scanner 对象 , new 创建一个对象,体会
         // myScanner 就是 Scanner 类的对象
         Scanner myScanner = new Scanner(System.in);
         //3. 接收用户输入了, 使用 相关的方法
         System.out.println("请输入名字");
         //当程序执行到 next 方法时,会等待用户输入~~~ String name = myScanner.next(); //接收用户输入字符串
         System.out.println("请输入年龄");
         int age = myScanner.nextInt();  //接收用户输入 int
         System.out.println("请输入薪水");
         double sal = myScanner.nextDouble(); //接收用户输入 double
         System.out.println("人的信息如下:");
         System.out.println("名字=" + name
         + " 年龄=" + age + " 薪水=" + sal);
     }
 }
  • 运行结果

  • 请输入名字
     we
     请输入年龄
     12
     请输入薪水
     321
     人的信息如下:
     名字=we 年龄=12 薪水=321.0

4.12 进制(程序员的基本功)

4.12.1 进制介绍

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

二进制:0,1 ,满 2 进 1。以 0b0B 开头。

十进制:0-9 ,满 10 进 1。

八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。

十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x0X 开头表示。此处的 A-F 不区分大小写。

4.27 原码、反码、补码

  • 八原则:

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

  • 运算用补码,运算

  • 结果看原码

4.28.2 位运算符 >><<>>>

运算规则:

1、算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位

2、算术左移<<: 符号位不变,低位补 0

3、>>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0

4、特别说明:没有 <<< 符号

4.28.3 应用案例

 1、>> 本质除2: 1 / 2 / 2 =0

 int a = 1 >> 2; //1 => 00000001 => 00000000

 2、<< 本质乘2: 1 * 2 * 2 = 4

int c = 1 << 2; //1 => 00000001 => 00000100 

你可能感兴趣的:(JavaSE笔记,java,开发语言,后端)