java 运算符

package com.sky.basic;


public class Operator {
 
 /**
  * 计算运算符:+,-,*,/;
  * @author sky
  */
 private void computOperator(){
  int a=8;
  int b=5;
  //对于除法运算,根据基本类型的自动转换规则,当除数和被除数都是整数时,得到的结果
  //也是整数。因此8/5得到的是1,而不是1.6
  int f=a/b;
  double g=a/b;
  System.out.println("\n\t f=a/b = "+f+"; (g=a/b = )"+g);
  //只要除数和被除数中有一个为double或者float,结果就不同了,8/5.0得到是1.6
  double h=a/(b*1.0d);
  float i=a/(b*1.0f);
  System.out.println("\n\t h=a/(b*1.0d)="+h+"i=a/(b*1.0f)= "+i);
 }
 
 /**
  * 比较运算符:==;<;>;!=;<=;>=;
  */
 private void compareOperator(){
  int a=5;
  int b=10;
  System.out.println("\n\t (a==b)="+(a==b));
  System.out.println("\n\t (a<b) ="+(a<b));
  System.out.println("\n\t(a>b)="+(a>b));
  System.out.println("\n\t(a!=b)="+(a!=b));
  System.out.println("\n\t(a<=b)="+(a<=b));
  System.out.println("\n\t(a>=b)="+(a>=b));
  System.out.println("\n\t(a=b)="+(a=b));
 }

 /**
  * 位运算符:&;|;^;~;>>;>>>;<<;
  */
 private void bitOperator(){
  byte a=23;//"00010111"
  byte b=6; //"00011010"
  //按位与,两个运算数都为1时,结果为1,其余结果为0;
  int c=a&b;//"00010010";
  System.out.println("\n\t (c=a&b)="+c);
  //按位或,两个运算数都为0是结果为0,其余结果为1;
  int d=a|b;//"00011111"
  System.out.println("\n\t (d=a\b)="+d);
  //按位异或,两个运算数相同时结果0,不同时为1;
  int e=a^b;//"00001101";
  System.out.println("\n\t (e=a^b)="+e);
  //按位非,0变1,1变0
  int f=~a;//"11101000";
  //注意:java采用二进制补码存储数字,整数的原码和补码一致
  //对于负数,符号不变,将原码取反然后加1,得到补码,
  //补码"11101000"对应的源码是"10011000"即-24;
  System.out.println("\n\t f"+f);
  //右移,左边空出以符号位填充
  int g=a>>1;//"00001011"
  System.out.println("\n\t (g=a>>1)="+g);
  //右移,左边空出以0填充
  int h=a>>>1;//"00001011"
  System.out.println("\n\t (h=a>>>1)="+h);
  //对负数操作时,>>和>>>得到的结果会不一样
  System.out.println("\n\t (-24>>1) ="+(-24>>1)+";(-24>>>1)="+(-24>>>1));
  //左移
  int i=a<<1;//"00101110"=46
  System.out.println("\n\t (a<<1)="+(a<<1));
 }
 
 /**
  * 布尔运算符:&&;||;!;&;|;^;
  */
 private void booleanOperator(){
  boolean b1=true;
  boolean b2=true;
  boolean b3=false;
  //&&运算符:对运算数进行与运算,当所有运算数都为true时,结果为true,
  //否则结果为false
  if(b1&&b2&&b3){
   System.out.println("\n\t变量b1,b2,b3的值都为true");
  }else{
   System.out.println("\n\t变量b1,b2,b3中至少有一个值为false");
  }
  //注意&&是短路与,意思是:当对运算数的表达式进行从左到右运算时,若遇到有运算
  //数的值为false,则结束运算,将结果置为false
  int i=2;
  int j=0;
  if(b3&&((j=i)==2)){
  }
  System.out.println("\n\t j = "+j);
  if(b1&&((j=i)==2)){
  }
  System.out.println("\n\t j = "+j);
  //||运算符:对运算数进行或运算,当所有运算数都为false时,结果为false,否则结果为true
  if(b1||b2||b3){
   System.out.println("\n\t变量b1,b2,b3中至少有一个的值为true");
  }else{
   System.out.println("\n\t变量b1,b2,b3的值都为false");
  }
  //同样,||是短路或,意思是:当对运算数的表达式进行从左到右运算时,若遇到
  //有运算数的值为true,就结束运算,将结果置为true;
  if(b1||((j=j-1)==1)){
  }
  System.out.println("\n\t j = "+j);
  if(b3||((j=j-1)==1)){
  }
  System.out.println("\n\t j = "+j);
  //!运算符:对运算数的值进行取反运算,运算数位true,取反为false
  if(!b1){
   System.out.println("\n\t变量b1为false,因为b1取反后的值为true");
  }else{
   System.out.println("\n\t变量b1为true,因为b1取反后的值为false");
  }
  //&运算符,和&&一样,对运算数做与操作,不同的是它不是短路的,它会运算完所有的运算数表达式
  if(b3&((j=i)==2)){
   System.out.println("\n\tb3&((j=i)==2):true");
  }else{
   System.out.println("\n\tb3&((j=i)==2):false");
  }
  System.out.println("\n\t j="+j);
  if(b1&((j=j-1)==0)){
  }
  System.out.println("\n\t j="+j);
  //|运算符,和||一样,对运算数进行或操作,但它不是短路
  if(b1|((j=1)==2)){
   System.out.println("\n\t b1|((j=1)==2):true");
  }else{
   System.out.println("\n\t b1|((j=1)==2):false");
  }
  System.out.println("\n\t j = "+j);
  if(b3|((j=j-1)==1)){
  }
  System.out.println("\n\t j = "+j);
  //^运算符,对运算数做异常或操作,相同为false,不同为true
  if(b1^b2){
   System.out.println("\n\t变量b1,b2的值不同");
  }else{
   System.out.println("\n\t变量b1,b2的值一样");
  }
 }
 
 /**
  * 赋值运算符:=;+=;*=;&=;|=;^=;
  */
 private void evalueOperator(){
  //=是最常见的赋值运算符
  int i=5;//变量i 的赋值为5
  //+=运算符是先将运算符左边的运算数的值加上右边的运算数的值
  //将结果再赋值给运算符左边的运算数
  i+=3;//等价于i=i+3;
  i-=3;//等价于i=i-3;
  i*=3;//等价于i=i*3;
  i/=3;//等价于i=i/3;
  i&=3;//等价于i=i&3;
  System.out.println("\n\t(i&3) = "+i);
  i|=3;//等价于i=1|3;
  System.out.println("\n\t(i|=3) = "+i);
  i^=3;//等价于i^=3;
  System.out.println("\n\t (i^=3)="+i);
 }
 
 /**
  * 其他运算符:三元运算符;++;--;-;
  */
 private void otherOperator(){
  int i=5;
  //++是将运算数加1
  //++i表示先将i加1后再进行运算
  if(i++==5){
   System.out.println("\n\t 表达式(i++==5)的值为true");
  }else{
   System.out.println("\n\t 表达式(i++==5)的值为false");
  }
  System.out.println("\n\t i="+i);
  //i++表示先进行运算,再讲i的值加1
  i=5;
  if(++i==5){
   System.out.println("\n\t 表达式(++i==5)的值为true");
  }else{
   System.out.println("\n\t 表达式(++i==5)的值为false");
  }
  System.out.println("\n\t i = "+i);
  //--将运算数减1,同样,--i是将i减1,再进行运算;i--是先进行运算,再将i减1
  i--;
  --i;
  //可以用三目运算符替代简单的if语句
  //格式是:x=a?b:c;如果a的值为true,则将b的值赋予x,否则将c的值赋予x。
  int x=(i>=0)?i:-i;//将一个减号-和数字连用,是取数字的负数
  System.out.println("\n\t i的绝对值为:"+x);
 }
 

 public static void main(String[] args) {
  Operator operator=new Operator();
  System.out.println("\n\t 计算运算符方法的输出:");
  operator.computOperator();
  System.out.println("\n\t 比较运算符方法的输出:");
  operator.compareOperator();
  System.out.println("\n\t 位运算符方法的输出:");
  operator.bitOperator();
  System.out.println("\n\t 布尔运算符方法的输出:");
  operator.booleanOperator();
  System.out.println("\n\t 赋值运算符方法的输出:");
  operator.evalueOperator();
  System.out.println("\n\t 其他运算符方法的输出:");
  operator.otherOperator();
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值