4、运算符

1、数据类型转化
  自动类型转换:=右边的数据类型可以自动转为等号左边的数据类型
  满足条件:等号右边的数据类型范围<等号左边的数据类型范围

  强制类型转换:
    会造成精度损失
2、从一个数字分别得到各个位上的数字
  最高位:用int来计算,进行除法,除整个位数(2658/1000=2)
  最高位的下一位:先取余,去掉最高位,进行除法,除整个位数((5658%1000)/100)
  下一位:先取余,去掉最高两位,进行除法,除整个位数((5658%100)/10)
  最后一位:直接用10 取余(5659%10)
    1*注意运算顺序
    1》先计算括号里边的
3、运算符
  1*算数运算符
  2*赋值运算符
  3*关系运算符(结果是boolean)
    1》判断一个表达式是否成立,结果只有两种:成立/不成立,用boolean接收:true、false
    2》==(双等,判断双等号两边的操作数是否相等),不止是数字,任何东西都可以用双等进行比较
    3》!=(不相等)
      ****可以作用域任何类型
    4》> < >= <=
      ****只能作用域数值类型(整型byte short int long 、浮点型 float double)
  4*逻辑运算符(结果是boolean)
    1》& 与运算(左右两边都为true时,才是true)
    2》| 或运算(左右两边只要有一个为true,结果为true;左右都不成立,结果为false)
    3》!非运算(!右边的表达式成立,结果为false,否则为true)(参与非运算的操作数必须是boolean类型的额)
    4》&& 短路与(同 &,效率更高,左边如果出现结果(左边为false),就不会计算右边)
    5》|| 短路或(同 |,效率更高,左边如果出现结果(左边为true),就不会计算右边)
    逻辑运算符的优先级是一样的,计算顺序是从左到右,但非的优先级比其他的高

int x = 8,y = 9;
//    System.out.println((++x==y)&&(++x!=y));
//    System.out.println(x);
//结果是true,之后的x=10
System.out.println((++x!=y)&&(++x==y));
System.out.println(x);

    5*条件运算符(三元表达式/三目表达式/条件运算符)
      语法:变量 = 条件?表达式1:表达式2;
      如果条件成立,则值为表达式1的值,如果不成立,则值为表达式2的值。
      (注意:表达式1的值和表达式2的值要是统一数据类型)

      例子:输入4位数字,各个位上的数字之和大于20,中奖,否则不中奖
int sum = qian + bai + shi + ge;
//    输入4位数字,各个位上的数字之和大于20,中奖,否则不中奖
System.out.println(sum>20?"中奖":"完犊子");

    6*位运算符(应用比较少,比较底层)
      对表达式以二进制为单位进行运算
      1*十进制和二进制的转换
        十进制转换为二进制:用十进制的数字除2,求出余数,记做第一位,;接着对商继续除2,求出余数,记做第二位。。。。直到商为0
        10 转换成二进制:1010(正着除,反着写)
        二进制转换为十进制:从右边起,改为的数值乘改为的权重(2的该位顺序-1次方;可以认为是该位的序号),依次累加

 
      2*位运算符
        &(按位与):将两个操作数转为2进制,两个额数的位上都是1,则结果才是1
          例:8&9 = 8(右对齐,没有的时候补0)
        |(按位或)
        ^(按位亦或)
        参与运算的表达式是两个数字/数字,则是位运算,否则是逻辑运算

原文地址:https://www.cnblogs.com/dhrwawa/p/11181022.html