【Java】运算符

目录

一、算数运算符

二、关系运算符(比较运算符)

三、逻辑运算符 

四、赋值运算符

五、三元运算符

六、位运算符 

七、instanceof运算符 

八、进制 

九、原码、反码、补码


一、算数运算符

运算符运算示例结果
+正号+11
+1+23
-负号-1-1
-2-11
*1*22
/除(取整)10/42
%取余10%31

--

--

自减:先运算后取值

自减:先取值后运算

i=1;--i

i=1;i--

0

1

++

++

自加:先运算后取值

自加:先取值后运算

i=1;++i

i=1;i++

2

1

//取整/ 1.整数运算结果是整数2.以精度最大的类型输出(小数)
System.out.println(10 / 4);//2
System.out.println(10.0 / 4);//2.5

//取余%
System.out.println(10 % 3);//1
System.out.println(-10 % 3);//-1
System.out.println(10 % -3);//1
System.out.println(-10 % -3);//-1

//++使用
int i = 1;
++i;//+在前先进行+运算,再取值 i = i+1 -> i = 2
i++;//+在后先取值,再进行+运算 i = i+1 -> i = 1
//--同理

二、关系运算符(比较运算符)

  • 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false
运算符运算示例结果
==相等2==3false
!=不等2!=3

true

<小于2<3true
>大于2>3false
<=小于等于2<=3true
>=大于等于2>=3false

三、逻辑运算符 

逻辑与&<-符号左右两边都对才对->短路与&&(左边不对则右边不必执行)
逻辑或|<-符号左右两边一个对都对->短路或||(左边对则右边不必执行)
逻辑异或a^ba与b不同时true
取反!true取反false
//逻辑与<-符号左右两边都对才对->
int i = 50;
if (i > 20 & i < 80){
    System.out.println("逻辑与");
}

//短路与<-符号左右两边都对才对->(左边不对则右边不必执行)
if (i > 20 && i < 80){
    System.out.println("短路与");
}

//逻辑或<-符号左右两边一个对都对->
int n = 40;
if (n > 20 | n<60){
    System.out.println("逻辑或");
}
//短路或<-符号左右两边一个对都对->	(左边对则右边不必执行)
if (n > 20 || n<60){
    System.out.println("短路或");
}
        
//逻辑异或
boolean b = (1<10)^(1>10);
System.out.println(b);//两边不同时true

//取反
System.out.println(50>20);//true
System.out.println(!(50>20));//false

四、赋值运算符

  1. 基本赋值运算符  int a = 10;
  2. 复合赋值运算符+= ,-= ,*= , /= ,%= 等;   a += b; [等价 a = a + b;] ;  a -= b; [等价 a = a - b; ]
  3. 运算顺序从右往左 int num = a + b + c;
  4. 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值   int num = 50; int num2= 77 * 33 - 11; int num3 = a;
  5. 复合赋值运算符会进行类型转换。
 //复合赋值运算
int i1 = 10;
i1 += 6;//等于i1 = i1 + 6;
i1 -= 6;//等于i1 = i1 - 6;
i1 *= 6;//等于i1 = i1 * 6;
        
 //复合赋值运算符会进行类型转换。 
byte b = 2; 
b+=3;//等于 b = (byte)(b+3) 

五、三元运算符

  1. 语法:条件表达式?表达式1(条件判断true执行):表达式2(条件判断false执行);
  2. 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
//三元运算符
int i1 = 11;
int i2 = 22;
int num = i1 < i2 ? i1++:i2--;//返回11

//表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
int n1 = 33;
int n2 = 55;
int n3 = n1 < n2? (int)333.3:(int)555.5;//返回333 (强制类型转换)
double n4 = n1 < n2? 333:555;//返回333.0 (自动类型转换)
  • 例题//实现3个数最大值: 
//实现3个数最大值
int i1 = 55;
int i2 = 22;
int i3 = 33;
int max = (i1>i2?i1:i2)>i3?(i1>i2?i1:i2):i3;
System.out.println(max);

六、位运算符 

按位与&两位全为1,结果为1,否则为0
按位或|两位有一个为1,结果为1,否则为0
按位异或^两位一个为0,一个为1,结果为1,否则为0
按位取反~0->1 1->0
算数右移>>低位溢出,符号位不变,并用符号位补溢出的高位
算数左移<<符号位不变,低位补 0
>>>逻辑右移(无符号右移)运算规则是: 低位溢出,高位补 0
//算术右移 >>   算术左移 <<:
int a=1>>2; //1 => 00000001 => 00000000 本质 1 / 2 / 2 =0
int c=1<<2; //1 => 00000001 => 00000100 本质 1 * 2 * 2 = 4

七、instanceof运算符 

  • 左边是一个对象,右边是一个类。当左边的对象是右边的类的或子类创建的对象时true,否则false
Cat cat = new Cat();
System.out.println(cat(子类对象) instanceof Animal(父类));//true

八、进制 

  • 二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
  • 十进制:0-9 ,满 10 进 1。
  • 八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。
  • 十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 或 0X 开头表示( A-F 不区分大小写)
  1. 二进制转换成十进制示例:规则: 从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方然后求和。1010->1*2^4-1 + 0*2^3-1 + 1* 2^2-1 + 0*2^1-1 = 8+0+2+0=10 //八与十六进制换成十进制同理
  2. 十进制转换成二进制示例:将该数不断除2,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的二进制。//十进制换成八与十六进制同理
  3. 二进制转换成八进制:规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。(每三位一组把二进制数转为十进制即可)二进制转换成十六进制:四位一组
  4. 八进制转换成二进制:将八进制数每 1 位,转成对应的一个三位的二进制数即可。(每三位一组把十进制数转为二进制即可)十六进制转换成二进制(四位一组)

九、原码、反码、补码

  1. 二进制的最高位是符号位: 0表示正数,1表示负数
  2. 正数的原码=反码=补码 (三码合一)
  3. 负数的反码 =原码符号位不变,其它位取反(0->1,1->0);负数的补码=反码+1,负数的反码 =负数的补码 - 1
  4. 0的反码,补码都是0
  5. java没有无符号数,换言之,java中的数都是有符号的在计算机运算的时候,都是以补码的方式来运算的.当我们看运算结果的时候,要看他的原码
  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值