Java学习笔记-Day04 Java运算符



一、二进制与十进制之间的转换

1、十进制转换成二进制

1.1、正整数


将十进制数除以2,在下面标出商,在旁边标出余数。然后,将得到的商再除2,依次类推直到商为0时,最后将旁边的余数倒着写出来,高位补上0。正数二进制的符号位(首位)是0。

口诀:除2取余,逆序排序。
在这里插入图片描述

1.2、负整数


先将对应的正整数转换成二进制后得到原码,负数二进制的符号位(首位)是1,对二进制取反得到反码,然后对结果再加1得到补码

在这里插入图片描述

1.3、小数


用2乘以十进制小数,将积的整数部分取出,如此进行,直到积中的小数为0,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列。

口诀:乘2取整,顺序排列。
在这里插入图片描述

1.4、带有小数的整数


先将整数部分转换成二进制,再将小数部分转换成二进制,最后将整数部分的二进制与小数部分的二进制结合,得到带有小数的整数的二进制。
在这里插入图片描述

2、二进制转换成十进制


先将二进制数补齐位数,首位是0就表示是正数,首位是1则表示是负数。

(1)正整数的二进制:将二进制中的位数的权分别与对应的值相乘,然后累加得到的就是十进制。

在这里插入图片描述


(2)负整数的二进制:需要取反再加1(符号位不变,其余位数取反,再加上1)。然后,将二进制中的位数的权分别与对应的值相乘(符号位除外),进行累加求和,最后在该数前添加一个负号,就得到该负数的十进制。

在这里插入图片描述

二、位运算符

运算符运算范例
&位与1&0=0
1&1=1
0&0=0
|位或1 | 0=1
1 | 1=1
0 | 0=0
^异或1^0=1
1^1=0
0^0=0
<<左移位11<<1=22
>>右移位11>>1=5
-11>>1=-6
>>>无符号右移11>>>1=5
-11>>>1=2147483642
~取反~6= -7
~ - 6=5


(1)& 位与
先将十进制转换成二进制,再对二进制数的每一位进行位与操作,操作结束后再转换成十进制。

(2)| 位或
先将十进制转换成二进制,再对二进制数的每一位进行位或操作,操作结束后再转换成十进制。

(3)^异或
先将十进制转换成二进制,再对二进制数的每一位进行异或操作,操作结束后再转换成十进制。

(4)<< 左移位
将操作数的所有二进制向左移位,右边空位补0,左边移去的部分舍去。

在这里插入图片描述
在这里插入图片描述

(5)>> 右移位
将操作数的所有二进制向右移位,左边的空位根据原数的符号位补0或补1(原来是正数就补0,是负数就补1)。

在这里插入图片描述
在这里插入图片描述


(6)>>> 无符号右移
将操作数的所有二进制向右移位,左边的空位补0(不考虑原数正负)。

在这里插入图片描述
在这里插入图片描述


(4)~取反
对一个操作数的二进制位取反。

在这里插入图片描述

在这里插入图片描述

三、逻辑运算符


操作的数据为boolean类型,结果也为boolean类型。

运算符运算范例
&false & true=false
true & false=false
true & true=true
false & false=false
|false | true=true
true | false=true
true | true=true
false | false=false
&&短路与false && true=false
true && false=false
true && true=true
false && false=false
||短路或false || true=true
true || false=true
true || true=true
false || false=false
^异或true ^ false=true
true ^ true=false
false ^ false=false
!取反~true=false
~false=true


(1)与 & :同真为真,一假为假。

(2)或 | :一真为真,同假为假。

(3)短路与 && :同真为真,一假为假。但是如果左边已经为false,则右边的表达式不执行。

(4)短路或 || :一真为真,同假为假。但是如果左边已经为true,则右边的表达式不执行。

(5)非 ! :真假相对。

(6)异或 ^:运算符两边的boolean值不相同,结果为true。运算符两边的boolean值相同,结果为false。

四、条件运算符


语法:判断条件? 表达式1 : 表达式2

当判断条件值为true时,返回表达式1的值,否则返回表达式2的值;•往往用来为变量赋值

/**
 * 使用条件运算符完成计算两个数字中的最大值
 *
 */
public class Demo01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		int b = 5;
		// 条件运算符          判断条件?表达式1:表达式2
		// 判断条件成立,执行表达式1。判断条件不成立,执行表达式2。
		int max = a>=b?a:b;
		System.out.println(max);
	}

/**
 * 使用条件运算符完成计算三个数字中的最大值
 *
 */
public class Demo02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		int b = 50;
		int c = 100;
		// 将a与b进行比较,如果a大,再将a与c进行比较,如果b大,将b与c进行比较
		int max = a>=b?(a>=c?a:c):(b>=c?b:c);
		System.out.println(max);
	}

}


如果表达式1与表达式2的数据类型不同,表达式的输出结果将会自动转换成精度最大的那个类型。

public class Demo {
	public static void main(String[] args) {
		int x=4;
		System.out.println("value is "+((x>4)?99.9:9));// value is 9.0
	}
}

五、算术运算符

  • +(连接字符串):表达式中需要有字符串。
  • /(除):如果变量是整形,/ 进行整除运算,结果是商的整数部分。
  • %(取模):进行取模运算,结果是余数部分。
  • (自增) ++:1、a++(先引用,后自增1) 2、++a(先自增1,后引用)
  • (自减) - -:1、a - -(先引用,后自减1) 2、- - a(先自减1,后引用)

    在这里插入图片描述

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

  • 关系运算符的运算结果为boolean类型。
    在这里插入图片描述

== 运算符的作用

(1) 如果作用于基本数据类型的变量,则是比较其存储的值是否相等。
(2)如果作用于引用类型的变量(如 String),则比较的是所指向对象的地址,也就是是否指向同一个对象。

注意:
在这里插入图片描述
① == 将左侧和右侧的值转换成二进制来比较。
0.3转换为二进制为 0.010011001100110011…

② double和float的精度不同,double的精度为15 ~ 16位,float的精度为7 ~ 8位。
a的二进制为 0.010011001100110,b的二进制为0.0100110。

所以 a == b为false。

七、赋值运算符


赋值运算符的优先级是最低的。

赋值运算符运算规则
=赋值a=1;
+=加后赋值a += 1;相当于a = a+1;
-=减后赋值a -= 1;相当于a = a-1;
*=乘后赋值a *= 1;相当于a = a*1;
/=除后赋值a /= 1;相当于a = a/1;
%=取模后赋值a %= 1;相当于a = a%1;
&=位与后赋值a &= 1;相当于a = a&1;
=位或后赋值a= 1;
~=取反后赋值a ~= 1;相当于a = a~1;
<<=位左移后赋值a <<= 1;相当于a = a<<1;
>>=位右移后赋值a >>= 1;相当于a = a>>1;
>>>=位无符号右移后赋值a >>>= 1;相当于a = a>>>1;

八、运算符优先级


Java中除了赋值运算符的结合性为“先右后左”,其它所有运算符的结合性都是”先左后右”。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值