• 04 运算符


    运算符

    运算符

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

    分类
    1. 算数运算符
    2. 赋值运算符
    3. 关系运算符(比较运算符)
    4. 逻辑运算符
    5. 位运算符
    6. 三元运算符

    算数运算符

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

    运算符运算结果
    +正号+77
    -负号-7-7
    +b = 11;-b-11
    -1+\12
    *1*66
    /6/23
    %取余12%52
    前++
    后++
    自增(前)先运算后取值
    自增(后)先取值后运算
    a=2;b=++a;
    a=2;b=a++
    a=3,b=3
    a=3,b=2
    前–
    后–
    自减(前)先运算后取值
    自减(后)先取值后运算
    a=2;b=–a;
    a=2;b=a–
    a=1,b=1
    a=1,b=2
    +字符串相加“abc”+“def”“abcdef”
    public class ArithmeticOperator {
        public static void main(String[] args) {
            System.out.println(10 / 4); //从数学来看是 2.5, java 中是 2
            System.out.println(10.0 / 4); //java 中是 2.5
            double d = 10 / 4;//java 中 10 / 4 = 2, 2=>2.0
            System.out.println(d);// 是 2.0
            // % 的本质 看一个公式!!!! a % b = a - a / b * b
            // -10 % 3 => -10 - (-10) / 3 * 3 = -10 + 9 = -1
            // 10 % -3 = 10 - 10 / (-3) * (-3) = 10 - 9 = 1
            // -10 % -3 = (-10) - (-10) / (-3) * (-3) = -10 + 9 = -1
            System.out.println(10 % 3); //1
            System.out.println(-10 % 3); // -1
            System.out.println(10 % -3); //1
            System.out.println(-10 % -3);//-1
            
            int i = 10;
            i++;//自增 等价于 i = i + 1; => i = 11
            ++i;//自增 等价于 i = i + 1; => i = 12
            System.out.println("i=" + i);//12
            int j = 8;
            //int k = ++j; //等价 j=j+1;k=j;
            int k = j++; // 等价 k =j;j=j+1;
            System.out.println("k=" + k + "j=" + j);//8 9
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    细节说明
    1. 对于除号/,它的整数除和小数除有区别:整数之间做除法时,只保留整数部分而舍弃小数部分。
    2. 当一个数取模时,可以等价a % b = a - a / b * b,这样我们就可以看到取模的一个本质。
    3. 当自增当做一个独立表达式时,无论++i,还是i++都是一样的。
    4. 当自增做一个表示时使用j = ++i 等价 j = i + 1,i = i+1;
    5. 当自增做一个表示时使用j = i++ 等价 j = i, i = i+1;
    练习
    1. 假如还有59天放假,问合xx多少个星期零xx天
    2. 定义一个变量保存华氏摄氏度,华氏温度转换摄氏温度的公式为:5/9*(华氏摄氏度-100),请求出对应的摄氏温度。(234.5)
    public class ArithmeticOperatorExercise{
        public static void main(String[] args){
            int days = 59;
            int weeks = days / 7;
            int leftDays = days % 7;
            System.out.println(days + "天 合" + weeks + "星期零" + leftDays + "天");
            
            double huaShi = 234.5;
            double sheShi = 5.0 / 9 * (huaShi - 100);
            System.out.println("华氏温度" + huaShi + " 对应的摄氏温度=" + sheShi);
            
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    1. 关系运算符的结果都是boolean类型,不是true就是false
    2. 关系表达式通常用在条件结构循环结构中。
    运算符运算范例结果
    ==相等于8 == 7false
    !=不等于8 != 7true
    <小于8 < 7false
    >大于8 > 7true
    <=小于等于8<=7false
    >=大于等于8>=7true
    instanceof检查是否为类对象
    其实是检查类是否有继承关系
    “hsp” instanceof Stringtrue
    public class ArithmeticOperatorExercise{
        public static void main(String[] args){
            int a = 9;
            int b = 8;
            System.out.println(a > b); //true
            System.out.println(a >= b); //true
            System.out.println(a <= b); //false
            System.out.println(a < b);//false
            System.out.println(a == b); //false
            System.out.println(a != b); //true
            boolean flag = a > b; //true
            System.out.println("flag=" + flag);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    细节说明
    1. 关系运算符的结果是boolean型,结果不是true就是false。
    2. 关系运算符组成的表达式,我们叫关系表达式。
    3. 比较运算符是双等于"==" 区别运算符号"="

    逻辑运算符

    用于连接多个条件(多个关系表达式)。

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

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

    aba&ba&&ba|ba||b!aa^b
    TTTTTTFF
    TFFFTTFT
    FTFFTTTT
    FFFFFFTF
    短路与&& 与 逻辑与&的区别
    1. &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高。
    2. & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
    3. 开发中, 我们使用的基本是使用短路与&&
    短路或|| 与 逻辑或|的区别
    1. ||短路或:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高。
    2. | 逻辑或:不管第一个条件是否为 false,第二个条件都要判断,效率低
    3. 开发中, 我们使用的基本是使用短路与||
    ! 取反

    如果条件本身成立,结果为 false,否则为 true 。

    ^逻辑异或

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

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

    赋值运算符

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

    分类
    • 基本赋值运算符= int a = 10;
    • 复合赋值运算符
      += ,-= ,*= , /= ,%= 等 , 重点讲解一个 += ,其它的使用是一个道理
      a += b; (等价 a = a + b; )
      a -= b; (等价 a = a - b; )
    特点
    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++;
    //复合赋值运算符会进行类型转换 
    byte b = 3; b += 2; 
    // 等价 
    b = (byte)(b + 2); 
    b++; // b = (byte)(b+1);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三目运算符

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

    运算规则
    1. 如果条件表达式为 true,运算后的结果是表达式 1;

    2. 如果条件表达式为 false,运算后的结果是表达式 2;

    说明:这部分的例题因为博主有基础,此处就略过了。(OS:太多了,不想写了。)

    运算符优先级

    运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。

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

    表格
    . () {} ; ,
    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= *= /= %=
    += -= <<= >>=
    >>>= &= ^= |=

    从上到下,同行顺序从左列展示。

    注意,通常会使用括号来改变优先顺序。

    标识符的命名规则和规范

    标识符

    Java对各种变量、方法和类等命名时使用的字符序列称为标识符。

    理解:凡是可以自己起名字的地方都叫 标识符。

    规则(必须遵守)
    1. 26个字母的大小写,0-9, _或$组成。
    2. 不可以使用数字开头。
    3. 不可以使用关键字和保留字,但是能包含其。
    4. Java中严格区分大小写,长度无限制。
    5. 标识符不能包含空格。
    规范(必须注意)
    1. 包名:多单词组成时所有单词全部小写。
    2. 类名、接口名、使用多单词组成时,所有单词的首字母大写。XxxYyyZzz(大驼峰命名规范)
    3. 变量名,方法名:多单词组成时,第一个单词小写,其他单词首字母大写。(小驼峰)
    4. 常量名:所有的单词字母都大写。多个单词组成时中间加入下划线。
    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
    • 用于定义类,函数,变量修饰符的关键字
      abstract final static synchronized
    • 用于定义类与类之间关系的关键字。
      extends implements
    • 用于定义建立案例以及引用实例,判断实例的关键字:
      new this super instanceof
    • 用于异常处理的关键字
      try catch finally throw throws
    • 用于包的关键字
      package import
    • 其他修饰符关键字
      native strictfp transient volatile assert

    键盘输入语句

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

    使用步骤
    1. 导入该类所在包。
    import java.util.Scanner;
    
    • 1
    1. 创建该类对象
    2. 调用里面的功能

    使用样例。

    import java.util.Scanner;
    
    public class Input {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入姓名");
            String name = sc.next();
    
            System.out.println("请输入年龄");
            int age = sc.nextInt();
    
            System.out.println("请输入薪资");
            double salary = sc.nextDouble();
    
            System.out.println("用户输入的名字是:" + name);
            System.out.println("用户输入的年龄是:" + age);
            System.out.println("用户输入的薪资是:" + salary);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    进制转换

    这部分内容是基本功建议自行学习。

    韩顺平java从p87开始一直看到p101

  • 相关阅读:
    多用户登录(列表)
    K8S NFS持久存储配置
    苏宁api接口
    hadoop3.x学习(一)--安装与环境配置
    华为ensp中MSTP多网段传输协议(原理及配置命令)
    [Geek Challenge 2022] crypto部分
    JavaScript前端精确配置设置与监听器使用
    深度优先算法(附视频)(两道例题,明白如何用dfs解题)(7-5 输出全排列)(7-10 整数分解为若干项之和)
    JavaWeb-JavaWeb中的I/O(输入/输出)
    无源供电无线测温系统的应用意义
  • 原文地址:https://blog.csdn.net/Tian_baby/article/details/126908651