java运算符
Posted Al_tair
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java运算符相关的知识,希望对你有一定的参考价值。
运算符是一种特殊的符号,用来表示数据的运算,赋值或者比较等
代码讲解
// / 使用
10 / 4; // 2
10.0 / 4 // 2.5
double d = 10 / 4; // 2.0
// % 使用
// 取模的本质 公式: a % b = a - a / b * b (当 a 是整数) a % b = a - (int)a / b * b (当 a 是浮点数,但是是近似值)
10 % 3 // 1
-10 % 3 // -1
10 % -3 // 1
-10 % -3 // -1
// 总结得出取模的正负取决于被模数
关系运算符
关系运算符的结果都为boolean类型, true / false
关系运算符组成的表达式我们称为关系表达式
逻辑运算符
用于连接多个条件(多个关系表达式),最终的值还是boolean类型
&& 短路与:如果某一个条件为false,则后面的条件不用判断,结果为false
& 逻辑与:全部条件都要执行
|| 短路或:如果某一个条件为true,则后面的条件不用判断,结果为true
| 逻辑或:全部条件都要执行
总结: && 和 || 优于 & 和 |
习题练习
赋值运算符
将某个运算后的值赋给指定的变量
基本赋值运算符: =
复合赋值运算符: += -+ = /= %=
三元运算符
条件表达式 ?表达式1 : 表达式2
讲解:如果条件的表达式为 true ,运算后的结果表达式1,反之运行表达式2
优先级比较(补充概念:单目运算符:自加加 自减减 取反)
标识符的命名规则和规范
笙式理解:规则即是法律,规范即是道德
概念:凡是需要自己命名的地方都是标识符(如:变量名,类名,方法名等等)
标识符的规则
- 组成:由26个字母大小写,0-9,- 或 $ 组成,不可以以数字为开头命名,中间不能留有空格
- 不可以使用关键字和保留字
- 区分大小写,长度无限制
标识符的规范
进制转换
其他进制转换成十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以进制(其他进制的进制数)的(位数-1)次方,然后求和
举例:八进制转换成十进制
十进制转换成其他进制
规则:将该数不断除以进制(其他进制的进制数),直到商为0为止,然后将每步得到的余数倒过来,就是对应的进制数
举例: 十进制转换成二进制
位运算
原码,反码,补码
位运算符
(&,|,^,~,>>,<<,>>>)
详解算术左右有移动
右移 高位补0,低位舍弃,若舍弃的位=0,则相当于除以2;若舍弃的位不等于0,则会丢失精度
左移 低位补0,高位舍弃,若舍弃的位=0,则相当于**乘以2;**若舍弃的位不等于0,则会出现严重误差
负数反码移位:高位和低位都补1
负数的补码移位:右移->高位补1 ; 左移->低位补0
// 运用补码原码知识
System.out.println(2&6); // 2
/**
* 讲解计算机运行过程
* 运算用补码
* 1. 2的原码 ==> 00000000 00000000 00000000 00000010 == 2 的补码
* 2. 6的原码 ==> 00000000 00000000 00000000 00000110 == 6 的补码
* 运算结果为原码
* 3. 按位与& ==> 00000000 00000000 00000000 00000010 == 6 的原码 结果为2
*/
System.out.println(~-2); // 1
/**
* 讲解计算机运行过程
* 运算用补码
* 1. -2的原码 ==> 10000000 00000000 00000000 00000010
* 2. -2的补码 ==> 11111111 11111111 11111111 11111110
* 3. ~-2的补码 ==> 00000000 00000000 00000000 00000001
* 运算结果为原码
* 3. 原码结果为 00000000 00000000 00000000 00000001 == 1
*/
System.out.println(-2>>3); // -1
/**
* 讲解计算机运行过程
* 运算用补码
* 1. -2的原码 ==> 10000000 00000000 00000000 00000010
* 2. -2的补码 ==> 11111111 11111111 11111111 11111110
* 3. -2>>3的补码 ==> 11111111 11111111 11111111 11111111
* 4. -2>>3的反码 ==> 11111111 11111111 11111111 11111110
* 运算结果为原码
* 5. 原码结果为 10000000 00000000 00000000 00000001 == -1
*/
相关面试题
++ 运算符的算法题
int i = 10;
i = i++;
System.out.println(i); // 10
i = 10;
i = ++i;
System.out.println(i); // 11
编程题: 用最有效率的方法算出2 乘以8 等于几? 【基础】
答: 2 << 3
请你解释为什么会出现4.0-3.6=0.40000001这种现象?
原因简单来说是这样:2进制的小数无法精确的表达10进制小数,计算机在计算10进制小数的过程中要先转换为2进制进行计算,这个过程中出现了误差。
请你讲讲一个十进制的数在内存中是怎么存的?
补码的形式。
以上是关于java运算符的主要内容,如果未能解决你的问题,请参考以下文章