资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
Java中的的运算符一.运算符的优先级1:java语言中各运算符优先级如下所示(优先级从上到下依次递减)类型 运算符单操作数运算符 + 、- 、+ 、- 、!、()算术运算符 * 、 / 、% 、+ 、 -移位运算符 、 比较运算符 = = != instanceof按位运算符 & |逻辑运算符 & |条件运算符 ?:赋值运算符 =2:java语言规定,表达式中运算顺序从左到右,但赋值顺序从右到左。二.单操作数运算符1:单操作符不象大多数具有两个操作数的运算符,它只有一个操作数.java语言共提供了7种单操作运算符,分别是:自动递增运算符(+) 自动递减运算符(-)取正运算符(+) 取负运算符(-) 按位取反运算符() 逻辑取反运算符(!) 造型运算符()2:自动递增运算指造作数加1运算.根据自动递增运算符和操作数位置关系,又分为前自动递增运算和后自动递增运算.前自动递增运算指运算符位于操作数之前,后自动递增运算指运算符位于操作数的后面.3:前自动递增运算和后自动递增运算对于操作数的改变是一样的,在原有值上均加1。如果自动递增运算表达式位于表达式中,则前自动递增运算和后自动递增运算的意义就不同了。前自动递增运算意味着先执行递增运算,后生成表达式值;后自动递增运算意味着先生成表达式值,后执行递增运算;4:-操作,同+。5:按位取反运算对一个整数型操作数进行按位操作,生成与输入位的相反值。若输入0,则输出为1;若输入1,则输出0。5:逻辑取反运算! 对一个布尔型操作数进行操作,生成与输入位的相反值。若输入为true,则输出为false;若输入为false,则输出为true;6:造型运算()的作用是明确将一种数据类型转换为另一种数据类型,可能造成数据信息的丢失。在java中,合法的类型转换编译器会自动进行,只有强制类型转换时,程序员才有必要进行造型运算。造型运算的操作对象不仅仅是基本数据类型,也可以是引用型。三.算术运算符1:java语言提供了5种算术运算符,分别是加运算符(+)减运算符(-) 乘运算符(*) 除运算符(/) 取模运算符(%)2:加和减运算符用于对基本数值类型的数据进行加减运算,其运算结果的数据类型取决于两个操作数的数据类型。当两个操作数类型为 char , byte , short 和int类型时,其运算结果的数据类型必为 int 。除此以外运算结果的数据类型为两个操作数中取值范围较宽的数据类型。3:当加和减运算产生的运算结果发生溢出时,不会抛出异常,只会导致结果数据精确性丢失的现象。4: +还用于连接两个对象的运算,将用于连接两个字符串连接起来。该运算符并不严格要求两个操作数均为字符串,只需要运算符两边的操作数至少有一个字符串。其运算过程为,先调用非字符串操作数对应的封装类的toString()方法,将非字符串操作数先转成字符串,然后再将两个字符串连接起来,构成一个新的字符串。5:乘运算用语对两个基本数值类型的数据进行相乘运算,其运算的数据类型取决于两个操作数的数据类型。当两个操作数类型为char , byte , short , int 类型时,其运算结果数据类型必为int ,除此之外运算结果类型为两个操作数中取值较宽的数据类型。6:当乘运算产生的运算结果发生溢处时,不会抛出异常,指挥导致结果数据精确性丢失的现象。7:除运算用于两个基本数值的类型数据进行相除运算。当相除的两个操作数均为整数时,如果运算结果为整数,则将运算结果作为返回值返回;如果运算结果不为整数,则运算结果整数部分作为返回值返回。当相除的两个操作数只要有一个为浮点数时,则运算结果必为浮点数。8:当除运算中右操作数取值为0时,如果操作数均为整数,则会抛出算术异常ArithmeticException;如果操作数中至少有一个为浮点数时,则结果为一个Infinity值。9:当取模运算中右操作数取值为0时,如果操作数均为整数,则会抛出算术异常ArithmeticException,因为取模运算归根结底为算术除法运算;如果操作数至少有一个浮点数,则结果为一个NAN(Not a Number)值。在java语言中,浮点数有无限值(Infinity)和NaN值概念。10:在java语言中,Float和Double两个封装类封装有用于表示非正常运算结果的常量NaN和POSITIVE_INFINITY,NEGATIVE_INFINITY。尽管两个INFINITY常量代表无限值,但其本身只是一个特殊数值,而不是一个特殊数值.四.移位运算符1:java共提供了3种移位运算符,分别为带符号左移位运算符和无符号右移位运算符.注意java语言没有提供循环移位运算符。2:移位运算符的操作只能是整数型,即字符型,字节型,短整型,整型,长整型,进行移位运算时,总是先将字符型,字节型,短整型转换为整型再进行移位运算,实际上移位操作对象只有整型或长整型,3:带符号左移位运算符将运算符左边的对象向左移由运算符右侧指定的位数,在低位补0,即左移时最低位始终补0,最高位被舍去.带符号的左移位运算相当于对左操作数进行乘2运算.4:带符号右移运算将运算符左边的运算对象向右移动由运算符右侧指定的位数,若值为正,则在高位插入0,若值为负,则在高位插入1,即移入的最高位和原最高符号位相同.带符号的右移位运算相当于对左操作数进行除2运算.5:无符号右移位运算符使用了0扩展,无论运算符左边的运算对象取值正负,都在高位插入0,即移位始终补0.五.比较运算符1:java语言共提供了6种比较运算符,它们分别为小于,小于等于,大于,大于等于,等于,不等于.这6个比较运算符适合所有基本类型数值之间的比较,但布尔型值只能与布尔型值比较,比较运算的结果是一个布尔型值,整个比较表达式可以作为逻辑运算符的操作数,除了可以用于基本类型数值之间的比较,也可以应用于对象变量之间的比较.2:字符型值可以作为比较操作数与其他基本类型数值(除布尔型值外)进行比较,因为每个字符都有一个对应的标准字符码.当字符型值进行比较运算时,实际比较的是该字符对应的一个整数字符码.3:关系运算符等于=和不等于!=不仅可以用于基本类型数值之间的比较.而且可以用于引用型之间的比较,但是这种引用型之间的比较不同于基本类型数值之间的比较.它比较的不是对象之间的内容,而只是对象的引用值,即内存地址,两个引用变量之间的等于比较是在判断这两个变量是否引用了同一个对象.如果需要判断两个对象的内容是否相等,则应该使用equals()方法.在java.lang.Object中定义的equals()方法用来比较两个对象的内容是否相等.要想比较两个程序员自定义对象的属性,则需要覆盖该方法,否则调用该方法的效果如同比较运算符.4:当采用比较运算符比较两个非new语句创建的字符串内容相等时,则比较的结果为true,因为字符串对象是不可以改变的,对于没有采用new语句创建的字符串对象,而是采用字符串常量的方式创建的字符串,系统只创建一次,因此多个字符串引用变量引用的是同一个字符串对象,所以比较的是同一个字符串,自然内存地址一样,比较结果必然为true;5:在java语言中,除了提供常规的关系运算符外,还提供了一种特殊的比较运算符,就是用于测试对象类型的instanceof比较运算符.instanceof比较运算符用于在运行期检查一个对象所属类型,它的左操作数是一个对象引用表达式,通常为一个引用变量或数组元素,可以取值为null,则比较结果仅返回false,不会抛出任何异常.右操作数必须是一个类,接口,数组,但不能是java.lang.Class或一个代表类名称的字符串对象.6:instanceof比较运算符的右操作数是一个接口时,表明比较的目的是判断左操作数是否实现了此接口.7:instanceof比较运算符不能用于测试一个对象和一个无类型数组,必须明确指定数组的类型,才能进行有效的比较.六.按位运算符1:java语言中共提供了4种按位运算符,分别为按位与&, 按位|,按位异或和按位非,这四个运算符适合所有整型数据.进行按位运算时,总是先将字符型、字节型、短整型值转换为整型再进行位运算。对于布尔型运算只有按位非()不能用于布尔型数值。其他3种位运算都可以把布尔型数值当作一个具有一位值进行按位运算。布尔型值为true对应为1,false对应为0,尽管位运算可以应用于布尔型,但不能将布尔型值和其他整数型值混合使用,如混合使用,将发生类型转换错误,因为布尔型值和其他基本类型之间不能进行相互转换。2:&(与)运算符对于两个整数型如下: x y 与运算结果0 0 00 1 01 0 01 1 1 x y 与运算结果 false false false false true false true false falsetrue true true 3:|(或)运算符对于两个整数型如下: x y 与运算结果 0 0 0 0 1 1 1 0 11 1 1 x y 与运算结果 false false false false true true true false truetrue true true4:运算(异或)符对于两个整数型如下: X y 与运算结果 0 0 0 0 1 1 1 0 11 1 0 X y 与运算结果 false false false false true true true false truetrue true false
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号