
已解决问题
谷歌Isabella213用户在2021.11.06提交了关于“oppoj**a都有哪些运算符及其用法”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-03-03T17:21:37。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,没有什么华丽的语言,但是我对你的感谢不会减少 !
详细问题描述及疑问:期待您的答案,没有什么华丽的语言,但是我对你的感谢不会减少 !
J**a的
可分为4类:算术
、关系
、
和
符。
1.算术运算符
J**a的算术运算符分为一元运算符和二元运算符。一元运算符只有一个
;二元运算符有两个
,运算符位于两个
之间。算术运算符的操作数必须是数值类型。
(1)一元运算符:
一元运算符有:正(+)、负(-)、加1(++)和减1(--)4个。
加1、减1运算符只允许用于数值类型的变量,不允许用于表达式中。加1、减1运算符既可放在变量之前(如++i),也可放在变量之后(如i++),两者的差别是:如果放在变量之前(如++i),则变量值先加1或减1,然后进行其他相应的操作(主要是赋值操作);如果放在变量之后(如i++),则先进行其他相应的操作,然后再进行变量值加1或减1。
例如:
inti=6,j,k,m,n;
j=+i;//取原值,即j=6
k=-i;//取负值,即k=-6
m=i++;//先m=i,再i=i+1,即m=6,i=7
m=++i;//先i=i+1,再m=i,即i=7,m=7
n=j--;//先n=j,再j=j-1,即n=6,j=5
n=--j;//先j=j-1,再n=j,即j=5,n=5
在书写时还要注意的是:一元运算符与其前后的操作数之间不允许有空格,否则编译时会出错。
(2)二元运算符
二元运算符有:加(+)、减(-)、乘(*)、除(/)、取余(%)。其中+、-、*、/完成加、减、乘、除
,%是求两个操作数相除后的余数。
%求余操作举例:
a%b=a-(a/b)*b
取余运算符既可用于两个操作数都是整数的情况,也可用于两个操作数都是
(或一个操作数是
)的情况。当两个操作数都是
时,例如7.6%2.9时,计算结果为:7.6-2*2.9=1.8。
当两个操作数都是int类型数时,a%b的计算公式为:
a%b=a-(int)(a/b)*b
当两个操作数都是long类型(或其他整数类型)数时,a%b的计算公式可以类推。
当参加二元运算的两个操作数的
不同时,所得结果的
与精度较辅或位数更长)的那种
一致。
例如:
7/3//整除,运算结果为2
7.0/3//除法,运算结果为2.33333,即结果与精度较高的类型一致
7%3//取余,运算结果为1
7.0%3//取余,运算结果为1.0
-7%3//取余,运算结果为-1,即运算结果的符号与左操作数相同
7%-3//取余,运算结果为1,即运算结果的符号与左操作数相同
2.关系运算符
关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型的数值。关系运算符有六个:等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于()、左移(>)。
位运算的位与(&)、位或(|)、位非(~)、位
(^)与逻辑运算的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值。
位运算示例
运算符名称示例说明
&位与x&y把x和y按位求与
|位或x|y把x和y按位求或
~位非~x把x按位求非
^位异或x^y把x和y按位求异或
>>右移x>>y把x的各位右移y位
右移x>>>y把x的各位右移y位,左边填0
举例说明:
(1)有如下程序段:
intx=64;//x等于
的01000000
inty=70;//y等于
的01000110
intz=x&y//z等于
的01000000
即运算结果为z等于二进制数01000000。位或、位非、位异或的运算方法类同。
(2)右移是将一个二进制数按指定移动的位数向右移位,移掉的被丢弃,左边移进的部分或者补0(当该数为正时),或者补1(当该数为负时)。这是因为整数在机器**采用
表示法,正数的符号位为0,负数的符号位为1。例如,对于如下程序段:
intx=70;//x等于二进制数的01000110
inty=2;
intz=x>>y//z等于二进制数的00010001
即运算结果为z等于二进制数00010001,即z等于
17。
对于如下程序段:
intx=-70;//x等于二进制数的11000110
inty=2;
intz=x>>y//z等于二进制数的11101110
即运算结果为z等于二进制数11101110,即z等于
-18。要透彻理解右移和左移操作,读者需要掌握整数机器数的
表示法。
(3)0填充的右移(>>>)是不论被移动数是正数还是负数,左边移进的部分一律补0。
5.其他运算符
(1)赋值运算符与其他运算符的简捷使用方式
赋值运算符可以与二元算术运算符、逻辑运算符和位运算符组合成简
算符,从而可以简化一些常用表达式的书写。
赋值运算符与其他运算符的简捷使用方式
运算符用法等价于说明
+=s+=is=s+is,i是数值型
-=s-=is=s-is,i是数值型
*=s*=is=s*is,i是数值型
/=s/=is=s/is,i是数值型
%=s%=is=s%is,i是数值型
&=a&=ba=a&ba,b是逻辑型或整型
|=a|=ba=a|ba,b是逻辑型或整型
^=A^=ba=a^ba,b是逻辑型或整型
is,i是整型
>>>=s>>>=is=s>>>is,i是整型
(2)方括号[]和圆括号()运算符
方括号[]是数组运算符,方括号[]中的数值是数组的下标,整个表达式就代表数组中该下标所在位置的元素值。
圆括号()运算符用于改变表达式中运算符的
。
(3)字符串加(+)运算符
当操作数是字符串时,加(+)运算符用来合并两个字符串;当加(+)运算符的一边是字符串,另一边是数值时,机器将自动将数值转换为字符串,这种情况在输出语句中很常见。如对于如下程序段:
intmax=100;
System.out.println("max="+max);
计算机屏幕的输出结果为:max=100,即此时是把变量max中的整数值100转换成字符串100输出的。
(4)
(?:)
(?:)的语法形式为:
?:
的运算方法是:先计算的值,当的值为true时,则将的值作为整个表达式的值;当的值为false时,则将的值作为整个表达式的值。如:
inta=1,b=2,max;
max=a>b?a:b;//max等于2
(5)
符
符能将一个表达式的类型强制转换为某一指定**类型,其语法形式为:
()
(6)对象运算符instanceof
对象运算符instanceof用来测试一个指定对象是否是指定类(或它的子类)的实例,若是则返回true,否则返回false。
(7)点运算符
点运算符“.”的功能有两个:一是引用类中成员,二是指示包的层次**。
6.运算符的
以下按
从高到低的次序列出J**a语言中的所有运算符,表中结合性一列中的“左?右”表示其运算次序为从左向右,“右?左”表示其运算次序为从右向左。
优先级运算符结合性
1.[]();,
2++――+=!~+(一元)-(一元)右?左
3*/%左?右
4+(二元)-(二元)左?右
5>>>>左?右
6<>=instanceof左?右
7==!=左?右
8&左?右
9^左?右
10|左?右
11&&左?右
12||左?右
13?:右?左
14=*=/=%=+=-==>>>=&=^=|=右?左