>  기사  >  Java  >  Java의 연산자는 무엇입니까?

Java의 연산자는 무엇입니까?

青灯夜游
青灯夜游원래의
2019-12-30 17:26:295113검색

Java의 연산자는 무엇입니까?

Java의 연산자는 산술 연산자, 관계 연산자, 논리 연산자 및 비트 연산자의 4가지 범주로 나눌 수 있습니다.

산술 연산자

Java의 산술 연산자는 단항 연산자와 이항 연산자로 구분됩니다. 단항 연산자에는 피연산자가 하나만 있습니다. 이항 연산자에는 피연산자가 두 개 있으며 연산자는 두 피연산자 사이에 있습니다. 산술 연산자의 피연산자는 숫자 유형이어야 합니다.

1. 단항 연산자:

양수(+), 음수(-), 더하기 1(++), 빼기 1(--)의 4가지 단항 연산자가 있습니다.

더하기 1 및 빼기 1 연산자는 숫자 유형 변수에만 사용할 수 있으며 표현식에는 사용할 수 없습니다. 더하기 1 및 빼기 1 연산자는 변수 앞(예: ++i) 또는 변수 뒤(예: i++)에 배치할 수 있습니다. 둘 사이의 차이점은 다음과 같습니다. 변수 앞에 배치하는 경우(예: ++i) 변수 값은 먼저 1 또는 빼기 1을 더한 다음 다른 해당 연산(주로 할당 연산)을 수행합니다. 변수 뒤에 배치된 경우(예: i++) 다른 해당 연산을 먼저 수행한 다음 변수 값에 1을 더하거나 뺍니다. .

예:

int i=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 //Remainder, 연산 결과는 1.0

-7 % 3 //Remainder, 연산 결과는 -1, 즉 부호 연산 결과는 왼쪽 피연산자와 동일

7 % -3 //나머지, 연산 결과는 1, 즉 연산 결과의 부호가 왼쪽 피연산자와 동일

관계 연산자

관계 연산자는 두 값의 크기를 비교하는 데 사용되며, 그 연산의 결과는 논리값입니다. 6개의 관계 연산자가 있습니다: 같음(==), 같지 않음(!=), 보다 큼(>), 크거나 같음(>=), 보다 작음(4c1c0a9e6f13a60eb1789ca21d73a040= 8.8 //연산 결과는 true입니다

'A' 4e496b0c2c97869cf07f3a5b5a6d1cc2=1的计算结果为false后,系统马上得出该逻辑表达式的最终计算结果为false,因此,系统不继续判断ic387271006a58240a751d62eb30f84b3>)、左移(0e0c73725f0461daa2f74889ad0d988d>>)。 

位运算的位与(&)、位或(|)、位非(~)、位异或(^)与逻辑运算的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值。 

位运算示例

运算符  名称   示例说明 

&   位与x&y 把x和y按位求与

|   位或x|y 把x和y按位求或

~   位非~x  把x按位求非

^   位异或 x^y 把x和y按位求异或

>>  右移x>>y把x的各位右移y位

a3b498cebd6c2c5721c9ea9fbfbb606e>> 右移x>>>y   把x的各位右移y位,左边填0 

举例说明:

1、有如下程序段:

int x = 64;   //x等于二进制数的01000000
int y = 70;   //y等于二进制数的01000110
int z = x&y   //z等于二进制数的01000000

即运算结果为z等于二进制数01000000。位或、位非、位异或的运算方法类同。

2、右移是将一个二进制数按指定移动的位数向右移位,移掉的被丢弃,左边移进的部分或者补0(当该数为正时),或者补1(当该数为负时)。这是因为整数在机器内部采用补码表示法,正数的符号位为0,负数的符号位为1。例如,对于如下程序段:

int x = 70;   //x等于二进制数的01000110
int y = 2;
int z = x>>y  //z等于二进制数的00010001

即运算结果为z等于二进制数00010001,即z等于十进制数17。

对于如下程序段:

int x = -70;  //x等于二进制数的11000110
int y = 2;
int z = x>>y  //z等于二进制数的11101110

即运算结果为z等于二进制数11101110,即z等于十进制数-18。要透彻理解右移和左移操作,读者需要掌握整数机器数的补码表示法。

3、0填充的右移(>>>)是不论被移动数是正数还是负数,左边移进的部分一律补0。 

其他运算符 

1、赋值运算符与其他运算符的简捷使用方式 

赋值运算符可以与二元算术运算符、逻辑运算符和位运算符组合成简捷运算符,从而可以简化一些常用表达式的书写。 

赋值运算符与其他运算符的简捷使用方式

运算符 用法   等价于说明

+= s+=is=s+i s,i是数值型

-= s-=is=s-i s,i是数值型

*= s*=is=s*i s,i是数值型

/= s/=is=s/i s,i是数值型

%= s%=is=s%i s,i是数值型

&= a&=ba=a&b a,b是逻辑型或整型

|= a|=ba=a|b a,b是逻辑型或整型

^= A^=ba=a^b a,b是逻辑型或整型

ba26955435af236af04aa58272198ee2>=s>>=i   s=s>>is,i是整型

>>>=   s>>>=i s=s>>>i   s,i是整型 

2、方括号[]和圆括号()运算符 

方括号[]是数组运算符,方括号[]中的数值是数组的下标,整个表达式就代表数组中该下标所在位置的元素值。

圆括号()运算符用于改变表达式中运算符的优先级。

3、字符串加(+)运算符 

当操作数是字符串时,加(+)运算符用来合并两个字符串;当加(+)运算符的一边是字符串,另一边是数值时,机器将自动将数值转换为字符串,这种情况在输出语句中很常见。如对于如下程序段:

int max = 100;
System.out.println("max = "+max);

计算机屏幕的输出结果为:max = 100,即此时是把变量max中的整数值100转换成字符串100输出的。

4、条件运算符(?:) 

条件运算符(?:)的语法形式为:

<表达式1> ?<表达式2> : <表达式3>

条件运算符的运算方法是:先计算27323b5ed8b44e0a297ecdb3b75fdcb7的值,当27323b5ed8b44e0a297ecdb3b75fdcb7的值为true时,则将47412bb27b333d7ef9616246112cd095的值作为整个表达式的值;当27323b5ed8b44e0a297ecdb3b75fdcb7的值为false时,则将724757b3a0af45ea06676406dc49b26a的值作为整个表达式的值。如:

int a=1,b=2,max;
max = a>b?a:b;   //max等于2

5、强制类型转换符

强制类型转换符能将一个表达式的类型强制转换为某一指定数据类型,其语法形式为:

(<类型>)<表达式>

6、对象运算符instanceof 

对象运算符instanceof用来测试一个指定对象是否是指定类(或它的子类)的实例,若是则返回true,否则返回false。

7、点运算符 

点运算符“.”的功能有两个:一是引用类中成员,二是指示包的层次等级。 

运算符的优先级 

以下按优先级从高到低的次序列出Java语言中的所有运算符,表中结合性一列中的“左右”表示其运算次序为从左向右,“右左”表示其运算次序为从右向左。

优先级 运算符 结合性 

1   .  []  ()  ;  , 

2   ++  ――  +=  !  ~  +(一元) -(一元)  右左

3   *  /  %  左右

4   +(二元)  -(二元)  左右

5   9bfa42134ac435362733abbb2296c9ff>  >>>  左右

6   377520d3212f646022f09a9470e4b397  c8641a367e3336f63c920347c30ba2c5=  instanceof 左右

7   = =  !=  左右

8   &左右

9   ^左右

10  |左右

11  &&   左右

12  ||   左右

13  ?:  右左

14  =  *=  /=  %=  +=  -=  =  >>>=  &=  ^=  |=   右左

推荐学习:Java视频教程

위 내용은 Java의 연산자는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.