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

优先级比较(补充概念:单目运算符:自加加 自减减 取反)

标识符的命名规则和规范

笙式理解:规则即是法律,规范即是道德

概念:凡是需要自己命名的地方都是标识符(如:变量名,类名,方法名等等)

标识符的规则

  1. 组成:由26个字母大小写,0-9,- 或 $ 组成,不可以以数字为开头命名,中间不能留有空格
  2. 不可以使用关键字和保留字
  3. 区分大小写,长度无限制

标识符的规范

进制转换

其他进制转换成十进制

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以进制(其他进制的进制数)的(位数-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运算符的主要内容,如果未能解决你的问题,请参考以下文章

Java基础—Java流程控制

java中的位运算符及其用法。

Java 基本语法---Java运算符

java位移运算符有啥意义

Java 基础之java运算符

Java三目运算符