zoukankan      html  css  js  c++  java
  • Java-2 运算符

    1.算数运算符加减乘除取余

    • java中+,-,*,/,%运算:
    class MathDemo1{
    	public static void main(String[] args){
    		int a = 15;
    		int b = 2;
    		System.out.println(a+b);//17
    		System.out.println(a-b);// 13
    		System.out.println(a*b);// 30
    		System.out.println(a/b);// 7
    		System.out.println(a%b);// 1
    		System.out.println(a/b*1.0);// 7.0
    		System.out.println(1.0*a/b);// 7.5
    		System.out.println((double)a/b);// 7.5
    		System.out.println((double)(a/b));// 7.0
    	}
    }
    

    2.前++和后++

    • 它只能和变量一起使用,在变量的前面叫前++,在变量后面叫后++。
    • 在单独使用的时候:
    class MathDemo2{
    	public static void main(String[] args){
    		int a = 10;
    		int b = 10;
    		++a;
    		b++;
    		System.out.println(a);// 11
    		System.out.println(b);// 11
    	}
    }
    // 可以看到在单独使用时候没有区别
    
    • 参与运算:
    int c = 10;
    int d = 10;
    int e = ++c;
    int f = d++;
    System.out.println(e);// 11
    System.out.println(f);// 10
    System.out.println(d);// 11
    

    当参与运算时候,前++为先加1,再运算。后++ 先运算,后加1。

    • 练习
    int a = 4;
    int b = (a++) + (++a) + (a * 10)
    		 4       6       60
          = 70
    

    3.赋值运算

    • +=, -= , *=, /=, %=
    class MathDemo3{
    	public static void main(String[] args){
    		int a = 15;
    		int b = 2;
    		System.out.println(a=b);//2
    		
    		a += b;
    		System.out.println(a);// 4
    		a -= b;
    		System.out.println(a);// 2
    		a *= b;
    		System.out.println(a);// 4
    		a /= b;
    		System.out.println(a);// 2
    		a %= b;
    		System.out.println(a);// 0
            
            
            // 错误,不兼容类型,从int到short可能会有损失
            short s = 1;
            s = s + 1;
            
            // 正确,包含了一个强制类型转换,s = (short)(s+1)
            short s = 1;
            s+=1
    	}
    }
    

    4.关系运算符

    • 关系运算符得到的是结果true或false
    运算符 运算 例子 结果
    == 相等 4==3 false
    != 不等于 4!=3 true
    < 小于 4<3 false
    > 大于 4>3 true
    <= 小于等于 4<=3 false
    >= 大于等于 4>=3 true
    instanceof 是否是类的对象(只能用于引用数据类型) "hello" instanceof String true
    • demo
    class MathDemo4{
    	public static void main(String[] args){
    		int a = 15;
    		int b = 2;
    		System.out.println(a=b);// 2
    		System.out.println(a==b);// true
    		System.out.println(a>b);// false
    		System.out.println(a<b);// false
    		System.out.println("abc" instanceof String);// true
    	}
    }
    

    5.逻辑运算符

    • 用于连接布尔类型值(变量或是常量)
    &   and    两边都是true才是true       true&trie = true;
    |   or	   只要有一个为true,为true	  true&false = true;
    ^   xor     异或:相同为false,不同为true  true^false = true; true&true=false
    
    
    • demo
    class MathDemo5{
    	public static void main(String[] args){
    		boolean a = true;
    		boolean b = false;
    		System.out.println(a&b);//false
    		System.out.println(a|b);//true
    		System.out.println(a^b);//true
    		System.out.println(!(a&b));//true
    	}
    }
    
    • 优先级(从大到小):& ^ |

    6.短路运算符

    • 短路运算符包括:&& ||
    &&   两个都是true,结果才是true,如果前面为flase,后面不参与运算。&与&&得到结果都是一致的。
    ||   只要有一个为true,结果就是true,如果前面结果为true,后面不用计算了
    
    • demo
    int x = 3; int y = 4;
    System.out.println((x++>3) & (y++ > 4));//false
    System.out.println(x); // 4
    System.out.println(y); // 5
    
    
    int x = 3; int y = 4;
    System.out.println((x++>3) && (y++ > 4));//false
    System.out.println(x); // 4
    System.out.println(y); // 4
    
    int x = 3; int y = 4;
    System.out.println((++x>3) | (++y > 4));//true
    System.out.println(x); // 4
    System.out.println(y); // 5
    
    int x = 3; int y = 4;
    System.out.println((++x>3) | (++y > 4));//true
    System.out.println(x); // 4
    System.out.println(y); // 4
    

    7.逻辑运算连接数字

    • & | ^ 连接正整数,需要把整数转成二进制的补码,逐位进行运算。把0当成false,把1当成true。
    class MathDemo6{
    	public static void main(String[] args) {
    		System.out.println(15 & 2);// 2
    		System.out.println(15 | 2);// 15
    		System.out.println(15 ^ 2);// 13
    		System.out.println(~2);// -3
    	}
    }
    // int 占4个字节
    15的补码  00000000 00000000 00000000 00001111
     2的补码  00000000 00000000 00000000 00000010
           & 00000000 00000000 00000000 00000010   按照都为1为1
           | 00000000 00000000 00000000 00001111   1个为1就为1
           ^ 00000000 00000000 00000000 00001101   不同为1
           ~ 11111111 11111111 11111111 11111101   取反:e.g.: 一个为1一个为0->0,取反1(补码)
             11111111 11111111 11111111 11111100   (反码, -1)
             00000000 00000000 00000000 00000011   (源码, 取反)
    

    8.位运算符用法

    • 针对二进制位进行操作的运算符:
    >> 右移:空位补最高位,
    << 左移:空位补零高位丢弃
    >>> 无符号移动 空位补0
    
    • demo
    class MathDemo7{
    	public static void main(String[] args){
    		System.out.println(7<<2);
    		System.out.println(15>>2);
    	}
    }
    
    7 << 2
    7	00000000	00000000	00000000	00000111
    <<2	00000000	00000000	00000000	00011100	28
    15 >> 2
    15	00000000	00000000	00000000	00001111
    >>2	00000000	00000000	00000000	00000011	3
    // 简单运算: 左移记为相当于乘以2的几次方。右移记为相当于除以2的几次方。
    

    9.三目运算符用法

    • 三目表达式格式:
    (关系表达式)? 表达式1: 表达式2;
    // 如果条件为true,运算后结果示表达式1;
    // 如果条件为false,运算后的结果表达式2;
    // 表达式1和表达式2的最终结果是一个明确的值。
    
    • demo
    class MathDemo8{
    	public static void main(String[] args){
    		int a = 15;
    		int b = 23;
    		int c = a>b?a:b;
    		System.out.println(c);// 23
    		String d = a>b?"a":"b";
    		System.out.println(d);// b
    	}
    }
    
    • demo2
    int a = 12;
    int b = 44;
    String c = a==b? "相等":"不相等";
    System.out.println(c);//不相等
    int d = 19;
    boolean re = d%2==0? true:false;
    System.out.println(re);//false
    
    • 获取两个long类型整数中的最大值,输出其结果
    long a = 100;
    long b = 20;
    long max = a > b ? a : b;
    System.out.println("最大值为:"+max);// 100
    
    • 获取三个float小数中最大值,输出其结果
    float f1 = 32.5f;
    float f2 = 2;
    float f3 = 90.2f;
    
    float f4 = f1 > f2 ? f1 : f2;
    float max = f4 > f3 ? f4 : f3;
    System.out.println("最大值为:"+ max);// 90.2
    
    float max1 = f1>f2?f1>f3?f1:f3:f2>f3?f2:f3;
    float max2 = f1>f2&f1>f3?f1:f2>f3?f2:f3;
    System.out.println(max1);// 90.2
    System.out.println(max2);// 90.2
    
    
    // 分析
    f1>f2?(f1>f3?f1:f3):(f2>f3?f2:f3)
    f1>f2&f1>f3?f1:(f2>f3?f2:f3)
    
    • 三目运算符嵌套
    int y = 56;
    String str = (y<50)?"hai":(y>60)?"1987":"1988";
    System.out.println(str);//1988
    
    • 计算分数:
    // >= 90 A  80-89 B 70-79 C 60-69 D 60以下 E
    int score = 88;
    String level = (score>=90)?"A":(score>=80)?"B":(score>=70)?"C":(score>=60)?"D":"E";
    System.out.println(level);// B
    
  • 相关阅读:
    qemu-kvm 基础
    QEMU、KVM、libvirt三者间的关系
    QEMU和KVM的关系
    生死乃世间常事,若真爱,请许我出家
    净土大经科注(第四回)第28集文字稿
    净土大经科注 第18集(部分,文字不全)
    二零一四净土大经科注  (第十二集文字稿)
    净土大经科注(第四回)第14集文字稿
    陈静瑜老师系列讲座汇编
    陈静瑜老师:人这个烦恼习气真的是很难改,如果没有坚定的决心,像《了凡四训》上说的那种勇猛心,那种畏惧心、羞耻心,很难回头改过。
  • 原文地址:https://www.cnblogs.com/xujunkai/p/13698021.html
Copyright © 2011-2022 走看看