运算符

算数运算符 :  +   -    *    /    %   ++    --   +

class TestAri{

 public static void main(String []args){
//除:
int i = 12;
int j = i/5; //j=2
double d = i/5; //d=2.0
double d2 = (double)i/5; //d2=2.4
double d3 = i/5.0; //d3=2.4
System.
out.println(j);
//取模:%取余数 ,结果的符号取决于被模数 也就是前面的那个数
int i1 = 12%5; //2
            int i1 = -12%5; //-2
            int i1 = 12%(-5); //2
            int i1 = -12%(-5); //-2  

//前++: 先自增1,后做运算
           //后++: 先做运算,后自增1

int myInt1=10;

int myInt2=myInt1++;//后++
System.out.println(myInt1);11
System.out.println(myInt2);10

           int myInt3=10;
int myInt4=++myInt3; //前++
System.out.println(myInt3);//11
System.out.println(myInt4);//11
     }

}

赋值运算符: +=    -=    *=     /=      %=

class GetValue{

public static void main(String []args){

int i1 = 10;
i1 += 3;//i1 = i1+3;

short s = 10;
// s = s+3;//编译不通过
s = (short)(s+3)//这样才可以的,但是不建议这样去实现
s += 1;//一般采取这种方式 ,这样既可以实现运算 又不会更改s的数据类型。


int i2 = 12;
i2 %=5; //i2 = i2%5;
System.
out.println(i2); } }

等于:== 

赋值:=

比较运算符: ==        !=    <    >     <=      >=      instanceof (检查是否是类的对象             "Hello"   instanceof String             结果为 true             )

逻辑运算符:    &   逻辑与            |    逻辑或               !   逻辑非

                       && 短路与            ||  短路或                ^  逻辑异或(两个相异的就是true)

a b a&b a|b !a a^b a&&b a||b
true true true true false false true true
true  false false true false true false true
false true flase true true true false true
flase flase false false true false false false
class TestLogic{
     public static void main(String[]args){
      boolean a = true;
      boolean b = false;
 
    // &&与&&的区别:   &:不管左边是true还是false,右边都会进行运算
&&:当左边为false时,右边不再进行运算了

//以后使用时,建议使用&&

int i1=10;
if(a&(i1++) > 0){
System.out.println("我喜欢芳芳");
} else{
System.out.println("我很喜欢芳芳");
}
System.out.println(i1);//11


     int i2=10;
if(a&&(i2++) > 0){
System.out.println("我喜欢芳芳");
} else{
System.out.println("我很喜欢芳芳");
}
System.out.println(i2);//10


//|与||的区别: |:左边是true时,右边照样进行运算
      //             ||: 当左边为true时,右边不再进行运算了  
      //在使用时选择: ||


    } 

} 

位运算符: 

注意:  没有 <<<

运算符 运算 范例
<< 左移 3<<2=12         3*2*2=12
>> 右移 3>>1=1           3/2=1
>>> 无符号右移 3>>>1=1         3/2=1
& 与运算 6&3=2               都为1 结果才为1
| 或运算 6|3=7                只要有一个为1  结果为1
^ 异或运算 6^3=5               只有两个不一样才为1 
~ 反码 ~6=-7                取反
class  TestBit{
 public static void main(String [] args){
int m = 12;
int n = 5;
System.out.println("m:" + m + "n:" + n);
//操作:交换m n
//方法一:提供一个临时变量
// int temp = m;
//m = n;
//n = temp;
//方法二:一个骑到另一个的头上了,当m n 都较大时可能出现精度损失
m = m+n;//12+5
n = m-n; //17-5=12
m = m-n; //17-12
//方法三:优点:没有上面两个方法的缺点
m = m^n;
n = m^n;//(m^n)^n == m
m = m^n;//(m^n)^m == n
        System.out.println("m:" + m + "n:" + n);
  } 
}

31 << 3   =248=31*2*2*2= 31*2^3

三元运算符:(条件表达式)?表达式1:表达式2?

                         表达式为true 运算结果为表达式1,false 运算结果为表达式2;

要求:  表达式1与表达式2同一种数据类型

           既然是运算符,就一定会有运算的结果,结果的数据类型与表达式1,2的类型一致。

三元运算符一定程度上可以与if-else互换。(一定可以转换为if-else  反正不成立)。

class TestSanYuan{
    public  static void main(){
         int i = 10;
         int j = 20;
         //此时max记录了i与j的较大值
         int max = (i>j)?i:j;
//String str = (i>j)?"i大":"j大";
String str = (i>j)?"i大" :(i==j)?"相等":"j大";
System.out.println(max);
System.out.println(str); } }
从控制台输出60的十六进制。
class  TestInput{
  public static void main(String [] args){ 
            int i = 60;
            int  j = i &15;//获取到i的最低4位的值
            String k1=(j<=9)?j+"":(char)(j-10+'a')+"";

            i = i>>4;
            int z = i & 15;//获取i的高位四位的值
            String k2=(z<=9)? z+"":(char)(z-10+'a')+"";
           
            System.out.println(k2+k1);
   }

}
All that work will definitely pay off
原文地址:https://www.cnblogs.com/afangfang/p/12433362.html