Java-Day-3(运算符 + 标识符 + 键盘输入)

发布时间 2023-04-03 21:53:17作者: 朱呀朱~

Java-Day-3

运算符

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

算术运算符

  • +、-、*、/

    • System.out.println(10.0 / 4); //2.5
      double d = 10 / 4; //2.0
      
      //数学公式有时不能硬搬,例如:摄氏温度 = 5 / 9 * ( 华氏温度 - 100 ),编码时就需要将 5 写成 5.0,因为 5 / 9 = 0
      
  • %:取模( 取余 )

    • 本质公式:a % b = a - a / b * b

    • System.out.println(10 % - 3); //1
      System.out.println(- 10 % - 3); // -1
      
  • ++、-- :自增、自减

    • 符号放前 — 先运算后赋值

    • 符号放后 — 先赋值后运算

    • int a = 1;
      int b = ++ a; //等价于 a = a + 1; b = a
      
      int a = 1;
      int b = a ++; //等价于 b = a; a = a + 1
      
      int i = 1;
      i = i ++; //i 输出为1;( 自行修改会有一个temp )
      // 1.temp = i; 2. i = i + 1; 3. i = temp;
      
      int i = 1;
      i = ++ i; //i 输出为2;
      // 1. i = i ++; 2. temp = i; 3. i = temp;
      
    • 但若是独立使用,放前放后都等价于 i = i + 1

关系运算符

结果都是Boolean型

  • ==
  • !=
  • < 、>
  • <= 、>=
  • instanceof

逻辑运算符

  • 短路与:&&
    • 如果第一个条件为 F,则直接 F,不再看第二个数
  • 短路或:||
    • 如果第一个条件为 T,则直接 T,不再看第二个数
  • 取反:!
  • 逻辑与:&
    • 不管第一个是否为 F,都得看第二个( 效率低 )
  • 逻辑或:|
    • 不管怎样都要看第二个( 效率低 )
  • 逻辑异或:^
int a = 2, b = 4;
if(a < 1 & ++b < 50){ Sys... } //false,且 b 为 5
// && 的话 b 就为 4

if(a++ == 3 & ++b < 50){ Sys... } //false,a 为 3
boolean x = false;
if((a++ == 2)&&(y = true)){ Sys... } //true,注意是把 true 赋给了y
a b a&b / a&&b a|b / a||b a^b
T T T T F
T F F T T
F T F T T
F F F F F
一错则错 全错才错 不同才错

赋值运算符

  • =

  • +=、-=、*=、/=、%=

    • a += b:a = a + b

    • 复合赋值运算符会进行类型转换

      byte b = 1;
      
      b += 2; //不会报错,底层内含( byte )强转
      b ++; //不会报错,同上内含强转
      b = b + 2; //报错,计算后成 int,不能直接返回给 byte
      

三元运算符

  • 条件表达式 ? 表达式1 :表达式2
    • —— 条件表达式为 true 时,返回的是表达式1
int a = 10, b = 99;
int result = a > b ? a++ : b++;
// 输出为99,因为 b 值先返回,然后再减一,注意 ++ 在后,但直接输出 b 值的话就是100
  • 表达式 1 与表达式 2 要为可以赋值给接收变量的类型,可以自行强转或者自动转换,但注意不会自动强制转换
  • 本质就是 if -- else
  • 可嵌套,但一般不用

运算符优先级

只有单目运算符(例如 a++ 对自身运算的)、赋值运算符是从右向左运算的

优先级从上到下依次降低
.() {} ; , (高)
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 = *= /= %= 赋值
R —> L += -= <<= >>=
R —> L >>>= &= ^= |= (低)

标识符

  • 标识符就是 Java 对各种变量、方法、类等命名时使用的字符序列

  • 凡是自己可以起名字的地方都叫标识符,如:main

  • 标识符的命名规则

    1. 26 英文字母大小写,0 ~ 9,_ 或 $ 组成

    2. 数字不可以开头

    3. 不可以使用关键字 ( class ) 和保留字 ( goto ) ,但能包含关键字和保留字

      ( 保留字,现有 Java 版本尚未使用,但以后版本可能会作为关键字使用 )

    4. Java 中严格区分大小写,长度无限制

    5. 不能包含空格

  • 标识符命名规范

    1. 包名:多单词时字母全小写
    2. 类名、接口名:多单词时每个单词首字母大写( 大驼峰 )
    3. 变量名、方法名:多单词时,第一个单词首字母小写,第二个单词开始首字母大写( 小驼峰,驼峰法 )
    4. 常量名:所有字母大写,多单词用下划线连接
    5. 都尽量用简单单词命名

键盘输入

  • 接收用户输入数据,需要一个扫描(对象),就是 Scanner

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

      import java.util.Scanner;
      
    2. 创建该类对象( 声明变量 )

      Scanner scanner = new Scanner(System.in);
      
    3. 调用里面的功能,使用相关方法

      String name = scanner.next();
      int age = scanner.nextInt();
      double sal = scanner.nextDouble();
       //接收键盘的输入