Java 笔记 之 运算符

来源:互联网 发布:python 爬虫 二手房 编辑:程序博客网 时间:2024/06/05 07:44

运算符的概述

  • 对常量和变量进行操作的符号称为运算符,即 : 加 + ,减 - ,乘 * ,除 / ;
  • 表达式的概述
    • 用运算符把常量或者变量链接起来符合Java语法的式子称为表达式 . 不同运算符连接的式子体现的是不同类型的表达式 .
    • 例 : 定义两个int类型的变量 a,b,做加法,即 a+b;

常见的运算符

  • 算数运算符

    • (+ ,- , * ,/) 的基本用法

      public class Demo01 {    public static void main(String[] args) {        // 定义两个变量        int a = 3;        int b = 4;        System.out.println(a + b);        System.out.println(a - b);        System.out.println(a * b);        System.out.println(a / b);        // 整数相除只能得到整数,想要得到小数,就必须有浮点数参与运算        System.out.println(3 / 4.0);        System.out.println(3.0 / 4);    }}
    • % 的用法

      • 得到的是两个相除数据的余数
      • 用处 : 判断两个数据是可可以整除

        public class Demo02Operator {    public static void main(String[] args) {        int a = 5;        int b = 3;        System.out.println(a / b);//1        System.out.println(a % b);//2    }}
    • +的多种用法

      • 数字相加
      • 字符相加 : 用字符计算机中底层储存对应的数据值来参与运算
      • 字符串相加 : 这里的 + 其实不是加法,而是字符串连接符;字符串和其他类型的数据做拼接,结果是字符串类型 .

        public class Demo03 {    public static void main(String[] args) {        //1.整数的加法        int a = 10;        int b = 20;        System.out.println(a + b);        System.out.println("------------------");        //2.字符参与加法操作        char c = '0';        char c2 = 'a';        System.out.println(a + c);        System.out.println(a + c2);        System.out.println("------------------");        //3.字符串参与加法操作        System.out.println("hello" + a);        System.out.println("hello" + a + b); //"hello"+10="hello10",然后再和b进行拼接        System.out.println(a + b + "hello");//从左到右依次计算,先求和,在连接    }}       
    • ++和- -的用法

      • ++,- - 运算符 : 对变量做加 1 或者减 1 操作
      • ++,- - 既可以写在变量的后面,也可以写在变量的前面
      • 单独使用 : ++,- - 无论是写在变量的前面还是后面,结果都是一样的
      • 和其它操作混合使用 : 如果++,- - 卸载变量后面,先拿变量本来的值参加与操作,结束后变量做++,- -
        public class Demo04 {    public static void main(String[] args) {        int a = 10;        System.out.println("a:" + a);        // 单独使用        // a++;        // ++a;        // System.out.println("a:" + a);        // 参与操作使用        // int b = a++;        int b = ++a;        System.out.println("a:" + a);        System.out.println("b:" + b);    }}
  • 赋值运算符

    • 基本的赋值运算符 : =
      • 把右边的值赋值给左边
    • 扩展的赋值运算符 : += ,-+ ,*= ,/= ,%=

      • 把左边和右边的运算结果赋值给左边
      • 注意 : 左边不能是常量
      • 隐含了一个强制类型转换

        public class Demo05 {    public static void main(String[] args) {        // 把10赋值给int类型的变量a        int a = 10;        // += 把左边和右边的数据进行运算,最后赋值给左边,左边的只能是变量        a += 10;// 相当于a = a + 10        System.out.println("a:" + a);        System.out.println("----------------------");        short s = 10;        // s += 20; // 相当于 s = s + 20;        s = (short) (s + 20);        System.out.println("s:" + s);    }}
  • 关系运算符

    • == , != , > , < , >= , <=
    • 关系运算符的结果都是boolean 型,也就是说,要么是true,要么是false
    • 注意事项 : 关系运算符”==”不能误写成”=”

      public class Demo06 {    public static void main(String[] args) {        int a = 10;        int b = 20;        int c = 10;        System.out.println(a == b);        System.out.println(a == c);        System.out.println("-----------------");        System.out.println(a != b);        System.out.println(a != c);        System.out.println("-----------------");        System.out.println(a > b);        System.out.println(a > c);        System.out.println("-----------------");        System.out.println(a >= b);        System.out.println(a >= c);        System.out.println("-----------------");        int x = 3;        int y = 4;        // System.out.println(x == y);        // System.out.println(x = y);// 把y赋值给x,把x的值输出        boolean bb = (x == y);        // 报错        // boolean cc = (x = y);        int cc = (x = y);    }}
  • 逻辑运算符

    • 作用 : 逻辑运算符用于链接布尔型表达式,在Java中不可以写成 3 < x < 6 , 应该写成 x>3 && x<6 .
    • 基本使用: &(与),|(或),^(异或),!(非)

      • 与 : & 有false则false
      • 或 : | 有则true,无则true
      • 异或 : ^ 相同则false,不同则true
      • 非 : ! true则false , false则true

        public class Demo07 {    public static void main(String[] args) {        int a = 10;        int b = 20;        int c = 30;        System.out.println((a > b) & (a > c));// false & false        System.out.println((a < b) & (a > c)); // true & false        System.out.println((a > b) & (a < c)); // false & true        System.out.println((a < b) & (a < c)); // true & true        System.out.println("---------------");        System.out.println((a > b) | (a > c));// false | false        System.out.println((a < b) | (a > c)); // true | false        System.out.println((a > b) | (a < c)); // false | true        System.out.println((a < b) | (a < c)); // true | true        System.out.println("---------------");        System.out.println((a > b) ^ (a > c));// false ^ false        System.out.println((a < b) ^ (a > c)); // true ^ false        System.out.println((a > b) ^ (a < c)); // false ^ true        System.out.println((a < b) ^ (a < c)); // true ^ true        System.out.println("---------------");        System.out.println((a > b)); // false        System.out.println(!(a > b)); // !false        System.out.println(!!(a > b)); // !!false    }}
  • &和&&的区别

    • 单&时,左边无论是真假,右边都进行运算;
    • 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
      • 判断一个字符串补位null并且不是空字符串”“时,必须使用&&,否则会报空指针异常
    • “|”和”||”的区别同理,双或时,左边为真,右边不参与运算

      public class Demo08 {    public static void main(String[] args) {        int a = 10;        int b = 20;        int c = 30;        System.out.println((a > b) && (a > c));// false && false        System.out.println((a < b) && (a > c)); // true && false        System.out.println((a > b) && (a < c)); // false && true        System.out.println((a < b) && (a < c)); // true && true        System.out.println("---------------");        System.out.println((a > b) || (a > c));// false || false        System.out.println((a < b) || (a > c)); // true || false        System.out.println((a > b) || (a < c)); // false || true        System.out.println((a < b) || (a < c)); // true || true        System.out.println("---------------");        int x = 3;        int y = 4;        // System.out.println((x++ > 4) & (y++ > 5)); // false & false        System.out.println((x++ > 4) && (y++ > 5)); // false && false        System.out.println("x:" + x);        System.out.println("y:" + y);    }}
      public class Dome09 {    public static void main(String[] args) {        String string = null;        System.out.println(string == null & string.equals(""));//空指针异常,解决方法:用&&    }}
  • 三元运算符

    • 格式 : (关系表达式)?表达式1:表达式2;
      • 如果条件为true,运算后的结果是表达式1;
      • 如果条件为false,运算后的结果是表达式2;
    • 示例 :
      获取两个数中较大的数
      int x = 3;
      int y = 4;
      int z;
      z = (x>y)?x:y;
      z变量储存的就是两个数中较大的数

      public class Demo10 {    public static void main(String[] args) {        int a = 10;        int b = 20;        int c = (a > b) ? a : b;        System.out.println("c:" + c);    }}