正规365娱乐平台-365bet官方游戏-365体育官网全球最大

java的运算符(详细版)

文章目录 一、运算符1.1、算术运算符1.2、增量运算符1.3、自增/自减运算符1.4、关系运算符1.5、逻辑运算符1.5.1、逻辑与运算符1.5.2、逻辑或操作

java的运算符(详细版)

文章目录

一、运算符1.1、算术运算符1.2、增量运算符1.3、自增/自减运算符1.4、关系运算符1.5、逻辑运算符1.5.1、逻辑与运算符1.5.2、逻辑或操作符1.5.3、逻辑非

1.6、位运算符1.6.1、按位与&1.6.2、按位或|1.6.3、按位取反~1.6.4、按位异或^

1.7、移位操作符1.7.1、左移操作符<<1.7.2、右移操作符>>1.7.3、无符号右移>>>

1.8、条件操作符

二、总结

目录

一、运算符

运算符是什么呢?其实这个问题很简单,运算符在我们的生活中很常见,失去了它,我们的数学基本报废了,像“+ , - ,* , /”都是我们最基本的运算符。即:对操作数进行操作时使用的符号,不同操作符的含义各不相同。 java作为一门优秀的程序设计语言,同样也提供有一整套丰富的运算符来操作变量。Java中的运算符分为:算术运算符(±*/),逻辑运算符(&&,||等),位运算符(& 、|等),关系操作符(><等),移位操作符和条件操作符等。

1.1、算术运算符

基本四则运算符:+ - * /(也可以叫双目运算符)

int a = 10;

int b = 5;

System.out.println(a + b);//加

System.out.println(a - b);//减

System.out.println(a * b);//乘

System.out.println(a / b);//除

System.out.println(a % b);//模,就是除法的余数

需要注意的是运算符使用的时候,要保证运算符两边是相同的类型变量,否则会发生隐式的类型提升,Java会自动将占用内存较小的变量类型提升为占用内存大的变量类型

int i = d * a;

double d1 = d * a;

//两行代码均发生了隐式的类型提升

如代码,变量a被提升为double类型的,并且运算符计算出来的结果也是两个变量中占用内存最大的决定,如代码,a是int类型,d是double类型的,那么这两个变量经过算术运算符运算之后的结果必然是double类型的,代码1系统会报错。 算术运算符都是二元运算符,运算符必须要有左右两个操作数 int/int类型还是int型,这个不会改变,并且会先下取整。

int a = 3;

int b = 2;

System.out.println(a / b);

结果是1.5吗?当然不是1.5,在Java中整型的运算结果只会是整型,那也就是不可能会有浮点型出现,则最终结果是经过了向下取整得出来的结果,也就是1。 在使用除法和模运算符时,要注意右操作数不可以为0,和我们平常的数学运算一样。 %不仅可以对整数取模,也可以对浮点数取模,但没什么意义,一般是对整型取模。 两侧操作数类型不同时,类型小的向类型大的提升,运算结果也是类型大的决定

1.2、增量运算符

增量运算符:+=、-=、*=、/=

int a = 1;

a += 1;//a = a + 1 2

a -= 1;//a = a - 1 1

a /= 1;//a = a / 1 1

a %= 1;//a = a % 1 0**

在增量运算符中会发生强制类型转换,运算符的右操作数和左操作数类型不同时,会将右操作数强转为左操作数的类型,从而将结果控制成原来的类型。

1.3、自增/自减运算符

自增/自减运算符:++ --,就是自增1,自减1的操作

int a = 10;

a++;//后置++

++a;//前置++

--a;//前置--

a--;//后置--

自增/自减运算符是单目运算符,只需要一个操作数即可 当自增/自减运算符单独使用的时候,后置和前置没用区别,都是一样的结果 当自增/自减运算符和其他运算符混搭使用的时候,区别就体现出来了,前置++是先进行自增的操作了之后再运算其他的操作符,后置++是先运算其他的操作符后再进行自增的操作,–也是如此。

1.4、关系运算符

关系运算符主要有6个,分别是== 、!= 、> 、<、<=、>=,关系运算符的结果只能是boolean类型的,也就是true或者false。

int a = 10;

int b = 5;

System.out.println(a == b);//false

System.out.println(a != b);//true

System.out.println(a < b);//false

System.out.println(a > b);//true

System.out.println(a <= b);//false

System.out.println(a >= b);//true

在Java中,=是赋予,==是相等的意思,和实际的数学是有一定的区别的 当代码写成10 > a > 1时,系统是无法运算的,因为系统会先执行判断10 > a是否为true还是false,判断得的结果不管是true还是false,此时都变成了booleana类型的和int类型的进行比较了,类型不同,如何比较?无法比较。

1.5、逻辑运算符

逻辑运算符主要有三个:&& 、|| 、 !,运算结果都是boolean类型的

1.5.1、逻辑与运算符

语法规则:表达式1 && 表达式2,并且左右两边的表达式的结果必须是Boolean类型的。 相当于现实生活中的必须要有手机并且手机要有电才可以进行上网。 两个表达式如果有一个是假的,那么整个表达式都是假的 两个表达式必须要都是真的,整个表达式才是真的 两个表达式都是假的,整个表达式也是假的

int a = 10;

int b = 5;

System.out.println(a == b && a != b);//false

System.out.println(a != b && a > b);//true

System.out.println(a < b && a == b);//false

并且在逻辑与表达式中含有一个短路现象,意思就是如果表达式1为真,那么表达式2才会执行 如果表达式1是假的,那么表达式2是不会执行的,直接跳过执行表达式2直接得出结果。 表达式1是假的,就表达式2不执行,表达式2右操作数为0,从语法上来说是错误的,但是这里编译器并没有报错而是直接输出结果了,这就说明短路现象是真实存在的。

1.5.2、逻辑或操作符

语法规则:表达式1 || 表达式2,并且左右两边的表达式的结果必须是Boolean类型的。 相当于现实生活中的只要手机有电,不管手机有没有流量都可以玩游戏。 两个表达式,只要有一个是真的结果就是真的 两个表达式,有一个是假的,另外一个是真的,那结果就是真的 两个表达式,两个都是假的,那结果就是假的

int a = 10;

int b = 5;

System.out.println(a == b || a < b);//false

System.out.println(a != b || a > b);//true

System.out.println(a > b || a == b);//true

System.out.println(a == b || a > b);//true

逻辑或操作符也含有短路现象,但是逻辑或和逻辑与的短路现象不一样 当表达式1为真时,表达式2不在执行 当表达式1为假时,表达式2执行 表达式2还是右操作数的问题,但因为表达式1为真,发生短路,直接跳过表达式2直接输出结果了。

1.5.3、逻辑非

逻辑非很好理解,就是取反的意思,假的变成真的,真的变成假的,但是Java的逻辑非和C语言的逻辑非不太一样,Java的逻辑非的参数只能对结果是Boolean类型的,参数不可以是变量,但是C语言的可以。

1.6、位运算符

Java中数据存储的最小单位是字节,数据操作的最小单位是比特位,字节是最小的存储单位,一个字节由8个比特位组成,多个字节组合在一起可以表示不同的数据类型。 位运算符主要有:& 、 | 、^、,除了是单目操作符以外,其他的都是双目操作符。 位操作表示按二进制位运算,计算机的底层以及各种数据都是由一串一串的由0和1组成的二进制代码,按位运算就是按二进制的每一位进行运算。

1.6.1、按位与&

如果两个二进制位都是1,那结果就是1,否则为0;

int a = 10;

int b = 5;

System.out.println(a & b);

1.6.2、按位或|

如果两个二进制位都是0的话,结果就为0,否则为1. 当&和|的两个操作符是int,short , long ,tybe 的时候,&和|的作用就是按位运算,如果两个操作符是Boolean类型的,那这个时候表示的就是逻辑运算。

1.6.3、按位取反~

如果二进制位是1,则转为0,如果二进制位是0则转为1 按位取反包括符号位也会取反,也就是说,按位取反有正负数转换的效果。

1.6.4、按位异或^

如果两个数字的二进制位序列相同,那么结果位0,如果二进制位不同则结果位0.

int a = 5;

int b = 5;

System.out.println(a ^ b);//0

1.7、移位操作符

移位操作符主要有两个:<< , >> , >>>,都是双目操作符,有都是按照二进制位来运算的。

1.7.1、左移操作符<<

二进制序列的最左位不要了,将右边的代码移动覆盖过去

System.out.println(1 << 1);//等于2

1 << 1的意思是将1的二进制代码向左移动1位,将左边的第一位丢弃,然后在最右边补0,以达到32个二进制位,无论左边抛弃的是1还是0,右边都是永恒不变的补0。 并且<<还有乘法的效果,1 << 1 相当于1 * 2

1.7.2、右移操作符>>

抛弃最右边的,在最左侧补符号位(正数补0 ,负数补1)

System.out.println(2 >> 1);//等于1

System.out.println(-2 >> 1);//等于-1

2 >> 1表示将2的二进制代码向右移动一位,在最右边补符号位,以达到32位二进制代码的条件,右移还有除法的效果,2 >> 1相当于2 / 2的效果 因为一个数字默认是int型的,int占用4个字节,也就是32个比特位,那就是说一个数字占用32个比特位,所以抛弃多少位就要补多少位。

1.7.3、无符号右移>>>

抛弃最右边的,在最左侧补0,和右移差不多,但是有本质上的区别,无符号右移,无论是移动正数还是负数,结果都只能是正数。

System.out.println(8 >>> 1);

System.out.println(-1 >>> 1);

1.8、条件操作符

语法格式:表达式1?表达式2:表达式3 表达式1为真,执行表达式2,表达式3不执行 表达式1为假,表达式2不执行,执行表达式3

int a = 10;

int b = 20;

int c = a > b ? a : b;

类似于如果那么否则。 并且条件运算符必须要进行接收,否则会报错,并且作为接收的变量必须适用于表达式2和表达式3的结果,否则有可能会发生隐式转换或者报错。

二、总结

左移1位,相当于原数字乘以2,左移N位,相当于原数字 * 2的N次方 右移1位,等效于原数字除以2,左移N位,相当于原数字 / 2的N次方 计算机计算移位效率高于计算乘除,所以建议当每个代码正好需要乘除2的N次方的时候可以使用移位运算来代替。 逻辑与:有假为假 逻辑或:有真为真 按位与:有0为0 按位或:有1为1 按位异或:相同为0,相异为1 左移:补0 右移:补符号位 无符号右移:补0 +±-:注意是单独使用还是混合使用,单独使用无需考虑前置后置,混合使用需要考虑前置后置

← 上一篇: 如何在美国开店,向全球销售
下一篇: 餐桌上的历史|蘑菇为什么叫“蘑菇” →

相关推荐

词语山风是什么意思

词语山风是什么意思

山风 【拼音】 shān fēng 【词性】 名词 【注音】 ㄕㄢ ㄈㄥ 【基本解释】 ◎ 山风 shānfēng[mountain wind] 起于山野之间的风 【引证解释】 指《易·

U盘启动盘制作工具完整使用(小白)教程

U盘启动盘制作工具完整使用(小白)教程

目录 一、制作U盘启动盘1.下载并安装好老毛桃winpe装机工具,打开软件并插入U盘,选择“普通模式”,点击选中需要制作启动的u盘设备2.然后,

谁才是真爱?深扒绯闻女王叶璇的十段感情史

谁才是真爱?深扒绯闻女王叶璇的十段感情史

封为“绯闻女王”的叶璇出道多年,终于在35岁这年首度承认了恋情,开始在微博里与“小默先生”频繁秀恩爱虐单身狗。有网友细数这些年叶

电信话费预存:值不值?深度解析预存话费的优缺点

电信话费预存:值不值?深度解析预存话费的优缺点

什么是电信话费预存? 电信话费预存,简单来说就是用户一次性预付一定金额的话费,以便在后续使用中直接抵扣。这种方式在过去很常见,运

WCL使用指南:如何有效利用WCL工具提升工作效率

WCL使用指南:如何有效利用WCL工具提升工作效率

分析战斗数据 (Analyzing Combat Data) 上传战斗日志后,你可以开始分析数据。WCL提供了多种分析工具,帮助你了解自己的表现和团队的整体状况,xfz

实况精选球员能用多久 实况精选球员能用时间介绍

实况精选球员能用多久 实况精选球员能用时间介绍

实况精选球员能用多久?实况足球是一款风靡全球的足球体育竞技手游,由KONAMI出品,网易游戏运营,凭借媲美端游的视觉效果、卓越的游戏平衡