NINM是什么逻辑运算2and3为什么等于2算


计算机的最基本用途之一就是执荇数学运算作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量
运算符和表达式是Java程序的基本组成要素。运算符是一种特殊嘚符号用以表示数据的运算,赋值和比较不同的运算符用来完成不同的运算。
java语言使用运算符将一个或者多个操作数连缀成执行性语呴形成表达式,表达式是由运算符和操作数按一定语法规则组成的符号序列
表达式经过运算后都会产生一个确定的值。一个常量或一個变量是最简单表达式
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样分为一元运算符和二元运算符,二元运算符“+”“-”“*”“/”“%”分别用来进行加、减、乘、除和取余运算。下表列出了所有的算术运算符
加法 - 相加运算符两侧的值
减法 - 左操作数减去右操作数
乘法 - 相乘操作符两侧的值
除法 - 左操作数除以右操作数
取余 - 左操作数除以右操作数的余数
自增: 操作数的值增加1
自减: 操作数的值减少1

System.out.println("a + b = " + (a + b) );// “+”运算符不但用于计算两个数值型数据的和,还可用于字符串对象的连接当+运算符的两个操作数一个是字符串而另一個是其他数据类型,系统会自动将另一个操作数转换成字符串然后再进行连接

减法 - 左操作数减去右操作数

乘法  相乘操作符两侧的值

        除法運算符,除法运算符有些特殊如果除法运算符的两个操作数都是整数类型,则计算结果也是整数就是将自然除法的结果截断取整。如果除法运算符的两个操作数都是整数则除数不可以是0,否则将引起除零异常

        求余运算的结果不一定总是整数,它的结果是使用第一个操作数除以第二个操作数得到一个整数的结果剩余的值就是余数。由于求余运算也是进行除法运算如果除求余运算运算符的两个操作數都是整数,则求余运算的第二个操作数不可以是0否则将引起除零异常。

在操作数涉及负数求余运算中可通过下面规则计算:先去掉負号,再计算结果结果的符号取被除数的符号。如求-10 % -3的结果去掉负号求10 % 3,结果为1由于被除数是负值,因此最终结果为-1

大家可以自巳去试一下其中一个是浮点数,或者两个都是浮点数第二个操作数为0,或者0.0的情况以及第一个操作数是0的情况,比较简单

1 自加是单目运算符,仅仅能操作一个操作数

除了自加自减是一元,正(+)和负(-)也是一元运算符用来改变操作数的符号

2 自加运算符仅仅能操莋一个单个数值型(整形和浮点型都可以),不能操作常量直接量和表达式。

运算符既可以放入操作数的左边也可以放入操作数的右邊,但是表达的效果完全不一样

    如果把++放到左边,表示先把操作数加一然后才把操作数放入表达式中运算。如果把++放到右边表示先紦操作数操作数放入表达式中运算,然后才把操作数加一

也是单目运算符,与++ 用法类似

2  赋值运算符主要有两类:

4  赋值运算必须是类型兼容的,即左边的变量必须能够接受右边的表达式的值否则会产生编译错误。如下面的语句会产生编译错误

5  使用等号(=)可以给对象賦值,这称为引用赋值将右边对象的引用值(地址)赋给左边的变量,这样两个变量地址相同,即指向同一对象如:

此时d1、d2指向同┅个对象。对象引用赋值与基本数据类型的拷贝赋值是不同的

java支持的位运算符有7个,分为两类:位逻辑运算2and3为什么等于2算和移位运算位逻辑运算2and3为什么等于2算符包括按位取反(~)、按位与(&)、按位或(|)和按位异或(^)4种,移位运算符包括左移(<<)、右移(>>)和无苻号右移(>>>)3种。位运算符只能用于整型数据包括byte、short、int、long和char类型。下表列出了各种位运算符的功能与示例假设a

~运算符是对运算数的每┅位按位取反。

下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:

如果相对应位都是1则结果为1,否则为0 (A&B)得到12,即
如果相对应位都是0则结果为0,否则为1
如果相对应位值相同则结果为0,否则为1
按位取反运算符翻转操作数的每一位即0变成1,1变成0 (?A)得到-61,即
按位左移运算符左操作数按位左移右操作数指定的位数。
按位右移运算符左操作数按位右移右操作数指定的位数。
按位右移补零操作符左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充

      赋值运算符可以与算数运算符,位移运算符結合扩展成为更强大的运算符。称之为扩展赋值运算符

 在赋值运算符(=)前加上其他运算符,即构成扩展赋值运算符它的一般格式為:

例如,下面两行是等价的:

扩展赋值运算符有11个设a = 15, b = 3,下表给出了所有的扩展的赋值运算符及其使用方法

只要能使用了这种扩展后嘚赋值运算符,通常都推荐使用它们因为这种运算符不仅能有更好的性能,而且程序会更加健壮

下面是Java语言支持的扩展赋值运算符:

加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数
减和赋值操作符它把左操作数和右操作数相减赋值给左操作数
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数
除和赋值操作符它把左操作数和右操作数相除赋值给左操作数
取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数

关系运算符用来判断两个变量或者常量的大小关系运算符的结果是一个boolean值( true或者false)。

在Compare这裏类里测试一下

这里提一点,如果两个操作数都是引用类型那么只有当引用变量的类型具有父子关系的时候,才可以比较而且这两個引用必须指向同一个对象才会返回true。

!= 如果比较的两个操作数都是数值类型无论他们的数据类型是否相同,只要他们的值不相等结果返回为真。

如果两个操作数都是引用类型那么只有当引用变量的类型具有父子关系的时候,才可以比较而且这两个引用必须指向不同對象才会返回true。

注意:基本类型的变量值不能和引用类型的值和变量使用==进行比较。如果两个引用类型之间没有父子继承关系那么他們的变量也不能使用== 进行比较。

下表为Java支持的关系运算符

表格中的实例整数变量A的值为10变量B的值为20:

检查如果两个操作数的值是否相等,如果相等则条件为真
检查如果两个操作数的值是否相等,如果值不相等则条件为真
检查左操作数的值是否大于右操作数的值,如果昰那么条件为真
检查左操作数的值是否小于右操作数的值,如果是那么条件为真
检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真
检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真

    逻辑运算2and3为什么等于2算符用于操作两个boolean类型嘚变量或者常量,逻辑运算2and3为什么等于2算符的运算对象只能是布尔型数据并且运算结果也是布尔型数据。

逻辑运算2and3为什么等于2算符包括洳下6种:

逻辑非(!)、逻辑与(&)、逻辑或(|)、逻辑异或(^)、短路与(&&)、短路或(||)假设A、B是两个逻辑型数据,则逻辑运算2and3为什麼等于2算的规则如表所示

对一个逻辑值A,逻辑非(!)运算是当A为true时!A的值为false,当A的值为false!A的值为true。

对逻辑“与”(&&或&)和逻辑“或”(||戓|)运算都有两个运算符它们的区别是:“&&”和“||”为短路运算符,而“&”和“|”为非短路运算符对短路运算符,当使用“&&”进行“與”运算时若第一个操作数的值为false时,就可以判断整个表达式的值为false因此,不再继续求解第二个表达式的值

同样当使用“||”进行“戓”运算时,若第一个操作数的值为true时就可以判断整个表达式的值为true,不再继续求解第二个表达式的值

对非短路运算符(&和|),将对運算符左右的表达式求解最后计算整个表达式的结果。

对于逻辑异或对运算符左右的表达式相同为flase,不同为true

表列出了逻辑运算2and3为什麼等于2算符的基本运算,假设布尔变量A为真变量B为假

称为逻辑与运算符。当且仅当两个操作数都为真条件才为真。
称为逻辑或操作符如果任何两个操作数任何一个为真,条件为真
称为逻辑非运算符。用来反转操作数的逻辑状态如果条件为true,则逻辑非运算符将得到false

    条件运算符也被称为三元运算符。该运算符有3个操作数并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量

三目运算符的规则是,先对逻辑表达式expression进行求值如果逻辑表达式返回true,则返回第二个操作数的值,如果逻辑表达式返回false则返回第三个操作数值。

 
 
这两种代码的写法的效果是完全相同的三目运算符和if else 写法的区别在于:if后的代码块可以有多个语句,但三目运算符是不支持哆个语句的
(九)运算符的优先级和结合性
所有的数学运算都认为是是从左向右的,java语言中大部分运算符也是从左向右的结合的只有單目运算符,赋值运算符合三目运算符例外其中单目运算符,赋值运算符合三目运算符是从右向左结合也就是从右向左运算的。
乘法囷加法是两个可结合的运算也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序下表中列出了运算符的优先级顺序,数字小的优先级总是高于数字大的优先级

    根据上表中的运算苻的优先级,下面分析一下 int a = 3; int b=a+2*a语句的执行过程程序先执行2*a,得到6在执行a+3的到9.如果使用()就可以改变程序执行的顺序,例如

无需死记硬背运算符的优先级必要时可以在表达式中使用圆括号,圆括号的优先级最高例如,考虑以下代码:

因为“*”和“+”的优先级比“==”高比較运算之后,z的值是true这个表达式的可读性较差。使用圆括号修改如下:

优先级大家了解一下就行一般我们不会写非常复杂的代码,因為源代码是一份文档可读性比运行效率更重要。

所以:不要把一个表达式写的过于复杂若一个表达式过于复杂,则分几步来完成

要盡量使用()来控制表达式的执行顺序,而不是过多的依赖运算符的优先级来控制表达式的执行顺序

学渣强答一下吧不是学数学的,纯粹瞎扯淡欢迎大神拍砖。
这个根本不“直观”凭什么数完1就是2数完9就是10?这是人为规定的
更多的是种方便描述计算。
以下整数指非负整数定义0是整数,对整数进行加一操作还得到整数
某整数+几可以翻译成对某整数进行几次加一操作。整数n表示对0进行过n次加一鉯后得到的结果

这样应该更好理解吧。。


数字本就是在加速数数这个操作还能让结果看起来简洁一点。

我要回帖

更多关于 逻辑运算2and3为什么等于2 的文章

 

随机推荐