Java运算符有哪些?

2021-04-27 20:26发布

5条回答
帅帅马
1楼 · 2021-04-29 16:32.采纳回答

在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等。

算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左边,所以一般格式为:结果 = 值;

加(+):result = value1 + value2;例如 result = 10 + 10;结果result值为20;

减(-):result = value1 - value2; 例如 result = 20 - 10; 结果result值为10;

乘(*): result = value1 * value2; 例如 result = 20 * 10; 结果result值为200;

除(/): result = value1 / value2; 例如result = 20 / 10;结果result值为2;如果value2的值为0,则Java会抛出一个异常;

余(%):求余,即获取不能除尽的值,result = value1 % value2;例如result = 12 % 5;result结果为2;

自增(++):value++或者++value;意思是将value的值加1;自增有两种写法,一种是++在前面,一种是++在后面,这两种单独使用的时候没有区别,但是和其他变量或者其他语法一起使用的时候,就有区别了,++在前说明是先将value加1然后在计算;++在后面说明先使用value在进行value加1;例如value = 10;result = value++; result的结果为10,value结果为11,因为++在后面所以先使用value赋值给result,然后value在进行加1;在如:result = ++value; result 的结果为11,value的结果为11;因为++在前面,所以value值先加一变成了11,然后再将value值赋值给result,所以result的结果为11;

自减(--):与自增一样的逻辑,只不过是将自身进行减1;

逻辑运算符:&&(并且) ||(或) !(非),逻辑运算符判断的变量为boolean,只有true与false;

并且(&&):result = value1 && value2;当value1与value2都为true的时候,result的结果为true;当其中任何一个为false的时候,result结果为false;而且,当value1的值如果为false的时候,value2不会进行判断,整个结果result的结果为false;例如if( value != null && value.length() > 10);如果value == null,则整个结果为false,并且value.length()不进行判断;这样如果value == null;则后面由于不会进行运算也就不会发生异常;

或(||):result = value1 || value2; 当value1与value2都为false的时候,result结果为false;如果有一个为true,那么result结果为true;并且如果value1为true的时候,value2不需要进行判断,result为true;

非(!): result = !value; result的结果与value的结果相反;value为true,则result为false;value为false,则result为true;

关系运算符:(>(大于), >=(大于等于), <(小于), <=(小于等于), ==(等于), !=(不等于)),关系运算法的结果为boolean类型的值,只有true或者false;

大于(>):判断第一个值是否大于第二个值,如果满足条件,则结果为true;否则为false;

大于等于(>=):判断第一个值是否大于等于第二个值;

小于(<):判断第一个值是否小于第二个值;

小于等于(<=):判断第一个值是否小于等于第二个值;

等于(==):判断两个值是否相等;

不等于(!=):判断两个值是否不相等;


浅浅77
2楼 · 2021-04-28 09:28

运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符赋值运算符关系运算符逻辑运算符位运算符和其他运算符。

算术
单目:~(按位取反)、! (取非)、-(负号运算符)、 ++(自增)、 - -(自减)、
双目:+ - * / %(取余)
三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符(可以是">""<""!="等等),一个"?",一个":",冒号前后需要有两个表达式或者是值或者是对象。
关系
等于符号:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号:<= 。
位与逻辑
位运算符 与(&)、非(~)、或(|)、异或(^)
&:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64;
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
~:0变1,1变0
^:两边的位不同时,结果为1,否则为0.如1100^1010=0110
逻辑运算符
与(&&)、非(!)、或(||)
赋值
= += -= *= /= %= &= ^= |= <<= >>=
instanceof
该运算符是双目运算符,左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。
运算符综述
Java 的表达式就是用运算符连接起来的符合Java 规则的式子.运算符的优先级决定了表达式中运算执行的先后顺序.例如,x位移
<< 带符号左移 >>带符号右移 >>> 无符号右移
运算符优先级
按优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。

折叠编辑本段类型转换

折叠强制和转换
Java语言和解释器限制使用强制和转换,以防止出错导致系统崩溃。整数和浮点数运算符间可以来回强制转换,但整数不能强制转换成数组或对象。对象不能被强制为基本类型。
Java中整数运算符在整数运算时,如果操作数是long类型,则运算结果是long类型,否则为int类型,绝不会是byte,short或char型。这样,如果变量i被声明为short或byte,i+1的结果会是int。如果结果超过该类型的取值范围,则按该类型的最大值取模。
折叠运算符操作
一、运算符"+",如果必要则自动把操作数转换为String型。如果操作数是一个对象,它可定义一个方法toString()返回该对象的String方式,例如floata=1.0print("Thevalueofais"+a+"\n");+运算符用到的例子Strings="a="+a;+=运算符也可以用于String。注意,左边(下例中的s1)仅求值一次。s1+=a;//s1=s1+a//若a非String型,自动转换为String型。
二、整数算术运算的异常是由于除零或按零取模造成的。它将引发一个算术异常。下溢产生零,上溢导致越界。例如:加1超过整数最大值,取模后,变成最小值。一个op=赋值运算符,和上表中的各双目整数运算符联用,构成一个表达式。整数关系运算符<,>,<=,>=,==和!=产生boolean类型的数据。
三、数组运算符数组运算符形式如下:[]可给出数组中某个元素的值。合法的取值范围是从0到数组的长度减1。
四、对象运算符双目运算符instanceof测试某个对象是否是指定类或其子类的实例。例如:if(myObjectinstanceofMyClass){MyClassanothermyObject=(MyClass)myObject;…}是判定myObject是否是MyClass的实例或是其子类的实例。
五、浮点运算符浮点运算符可以使用常规运算符的组合:如单目运算符++、--,双目运算符+、-、*和/,以及赋值运算符+=,-=,*=,和/=。此外,还有取模运算:%和%=也可以作用于浮点数,例如:a%b和a-((int)(a/b)*b)的语义相同。这表示a%b的结果是除完后剩下的浮点数部分。只有单精度操作数的浮点表达式按照单精度运算求值,产生单精度结果。如果浮点表达式中含有一个或一个以上的双精度操作数,则按双精度运算,结果是双精度浮点数。
六、布尔运算符布尔(boolean)变量或表达式的组合运算可以产生新的boolean值,fales和true(记得是小写)。单目运算符!是布尔非。双目运算符&,|和^是逻辑AND,OR和XOR运算符,它们强制两个操作数求布尔值。为避免右侧操作数冗余求值,用户可以使用短路求值运算符&&和||。
七、用户可以使用==和!=,赋值运算符也可以用&=、|=、^=。三元条件操作符和C语言中的一样。
八、++运算符用于表示直接加1操作。增量操作也可以用加运算符和赋值操作间接完成。++lvalue(左值表示lvalue+=1,++lvalue也表示lvalue=lvalue+1。
九、--运算符用于表示减1操作。++和--运算符既可以作为前缀运算符,也可以做为后缀运算符。双目整数运算符是:运算符操作**+加-减*乘/除%取模&位与|位或^位异或<<左移 >>右移(带符号) >>>添零右移整数除法按零舍入。除法和取模遵守以下等式:

(a/b)*b+(a%b)==a


三岁奶猫
3楼 · 2021-04-28 13:42

Java的运算符可分为4类:算术运算符、关系运算符、逻辑运算符和位运算符。

1.算术运算符
   Java的算术运算符分为一元运算符和二元运算符。一元运算符只有一个操作数;二元运算符有两个操作数,运算符位于两个操作数之间。算术运算符的操作数必须是数值类型。

   (1)一元运算符:
   一元运算符有:正(+)、负(-)、加1(++)和减1(--)4个。
   加1、减1运算符只允许用于数值类型的变量,不允许用于表达式中。加1、减1运算符既可放在变量之前(如++i),也可放在变量之后(如i++),两者的差别是:如果放在变量之前(如++i),则变量值先加1或减1,然后进行其他相应的操作(主要是赋值操作);如果放在变量之后(如i++),则先进行其他相应的操作,然后再进行变量值加1或减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   //取余,运算结果为1.0
   -7 % 3   //取余,运算结果为-1,即运算结果的符号与左操作数相同
   7 % -3   //取余,运算结果为1,即运算结果的符号与左操作数相同

2.关系运算符
   关系运算符用于比较两个数值之间的大小,其运算结果为一个逻辑类型的数值。关系运算符有六个:等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)。

   例如:
   9 <= 8      //运算结果为false
   9.9 >= 8.8  //运算结果为true
   'A' < 'a'   //运算结果为true,因字符'A'的Unicode编码值小于字符'a'的
   要说明的是,对于大于等于(或小于等于)关系运算符来说,只有大于和等于两种关系运算都不成立时其结果值才为false,只要有一种(大于或等于)关系运算成立其结果值即为true。例如,对于9 <= 8,9既不小于8也不等于8,所以9 <= 8 的运算结果为false。对于9 >= 9,因9等于9,所以9 >= 9的运算结果为true。

3.逻辑运算符
   逻辑运算符要求操作数的数据类型为逻辑型,其运算结果也是逻辑型值。逻辑运算符有:逻辑与(&&)、逻辑或(||)、逻辑非(!)、逻辑异或(^)、逻辑与(&)、逻辑或(|)。
   真值表是表示逻辑运算功能的一种直观方法,其具体方法是把逻辑运算的所有可能值用表格形式全部罗列出来。Java语言逻辑运算符的真值表如下:
   逻辑运算符的真值表
   A      B      A&&B   A||B  !A     A^B    A&B    A|B
   false false false false true   false false false
   true   false false true false true   false true
   false true   false true true   true   false true
   true   true   true   true false false true   true

   前两列是参与逻辑运算的两个逻辑变量,共有4种可能,所以表2.5共有4行。后6列分别是6个逻辑运算符在逻辑变量A和逻辑变量B取不同数值时的运算结果值。
   要说明的是,两种逻辑与(&&和&)的运算规则基本相同,两种逻辑或(||和|)的运算规则也基本相同。其区别是:&和|运算是把逻辑表达式全部计算完,而&&和||运算具有短路计算功能。所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。对于&&运算来说,只要运算符左端的值为false,则因无论运算符右端的值为true或为false,其最终结果都为false。所以,系统一旦判断出&&运算符左端的值为false,则系统将终止其后的计算过程;对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。

   例如,有如下逻辑表达式:
   (i>=1) && (i<=100)
   此时,若i等于0,则系统判断出i>=1的计算结果为false后,系统马上得出该逻辑表达式的最终计算结果为false,因此,系统不继续判断i<=100的值。短路计算功能可以提高程序的运行速度。
   作者建议读者:在程序设计时使用&&和||运算符,不使用&和|运算符。

   用逻辑与(&&)、逻辑或(||)和逻辑非(!)可以组合出各种可能的逻辑表达式。逻辑表达式主要用在 if、while等语句的条件组合上。
   例如:
   int i = 1;
   while(i>=1) && (i<=100) i++;    //循环过程
   上述程序段的循环过程将i++语句循环执行100次。

4.位运算符
   位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。
   位运算符共有7个,分别是:位与(&)、位或(|)、位非(~)、位异或(^)、右移(>>)、左移(<<)、0填充的右移(>>>)。
   位运算的位与(&)、位或(|)、位非(~)、位异或(^)与逻辑运算的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值。

   位运算示例
  运算符  名称   示例    说明
   &       位与    x&y     把x和y按位求与
   |       位或    x|y     把x和y按位求或
   ~       位非    ~x      把x按位求非
   ^       位异或 x^y     把x和y按位求异或
   >>      右移    x>>y    把x的各位右移y位
   <<      左移    x<
   >>>     右移    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。

5.其他运算符

   (1)赋值运算符与其他运算符的简捷使用方式
   赋值运算符可以与二元算术运算符、逻辑运算符和位运算符组合成简捷运算符,从而可以简化一些常用表达式的书写。
   赋值运算符与其他运算符的简捷使用方式
  运算符 用法   等价于    说明
   +=     s+=i    s=s+i     s,i是数值型
   -=     s-=i    s=s-i     s,i是数值型
   *=     s*=i    s=s*i     s,i是数值型
   /=     s/=i    s=s/i     s,i是数值型
   %=     s%=i    s=s%i     s,i是数值型
   &=     a&=b    a=a&b     a,b是逻辑型或整型
   |=     a|=b    a=a|b     a,b是逻辑型或整型
   ^=     A^=b    a=a^b     a,b是逻辑型或整型
   <<=    s<<=i   s=s<
   >>=    s>>=i   s=s>>i    s,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>
   条件运算符的运算方法是:先计算<表达式1>的值,当<表达式1>的值为true时,则将<表达式2>的值作为整个表达式的值;当<表达式1>的值为false时,则将<表达式3>的值作为整个表达式的值。如:
   int a=1,b=2,max;
   max = a>b?a:b;   //max等于2

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

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

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

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

   优先级 运算符                                         结合性
   1       .  []  ()  ;  ,
   2       ++  ――  +=  !  ~  +(一元) -(一元)                  右左
   3       *  /  %                                              左右
   4       +(二元)  -(二元)                                      左右
   5       <<  >>  >>>                                          左右
   6       <  >  <=  >=  instanceof                             左右
   7       = =  !=                                              左右
   8       &                                                    左右
   9       ^                                                    左右
   10      |                                                    左右
   11      &&                                                   左右
   12      ||                                                   左右
   13      ?:                                                  右左
   14      =  *=  /=  %=  +=  -=  <<=  >>=  >>>=  &=  ^=  |=   右左

爱学习的小巴
4楼 · 2021-04-28 15:48

1、算术运算符包括通常的加(+)、减(-)、乘(*)、除(/)、取模(%),完成整数型和浮点型数据的算术运算;

2、关系运算符用来比较两个值,包括大于(>)、小于(=)、小于等于(<=)、等于(==)和不等于(!=)6种;

3、位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<>>)。位运算符只能对整数型和字符型数据进行操作;

danganddang999
5楼 · 2021-09-01 09:43

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:

  • 算术运算符

  • 关系运算符

  • 位运算符

  • 逻辑运算符

  • 赋值运算符

  • 其他运算符


相关问题推荐

  • 回答 2

    Statement的execute(String query)方法用来执行任意的SQL查询,如果查询的结果是一个ResultSet,这个方法就返回true。如果结果不是ResultSet,比如insert或者update查询,它就会返回false。我们可以通过它的getResultSet方法来获取ResultSet,或者通过getUpda...

  • 回答 22

    忙的时候项目期肯定要加班 但是每天加班应该还不至于

  • 回答 108
    已采纳

    虽然Java人才越来越多,但是人才缺口也是很大的,我国对JAVA工程师的需求是所有软件工程师当中需求大的,达到全部需求量的60%-70%,所以Java市场在短时间内不可能饱和。其次,Java市场不断变化,人才需求也会不断增加。马云说过,未来的制造业要的不是石油,...

  • 回答 5
    已采纳

    工信部证书含金量较高。工信部是国务院的下属结构,具有发放资质、证书的资格。其所发放的证书具有较强的权威性,在全国范围内收到认可,含金量通常都比较高。 工信部证书,其含义也就是工信部颁发并承认的某项技能证书,是具有法律效力的,并且是国家认可的...

  • 回答 70
    已采纳

    学Java好不好找工作?看学完Java后能做些什么吧。一、大数据技术Hadoop以及其他大数据处理技术都是用Java或者其他,例如Apache的基于Java 的 HBase和Accumulo以及ElasticSearchas。但是Java在此领域并未占太大空间,但只要Hadoop和ElasticSearchas能够成长壮...

  • 回答 16
    已采纳

    就是java的基础知识啊,比如Java 集合框架;Java 多线程;线程的五种状态;Java 虚拟机;MySQL (InnoDB);Spring 相关;计算机网络;MQ 消息队列诸如此类

  • 回答 12

    #{}和${}这两个语法是为了动态传递参数而存在的,是Mybatis实现动态SQL的基础,总体上他们的作用是一致的(为了动态传参),但是在编译过程、是否自动加单引号、安全性、使用场景等方面有很多不同,下面详细比较两者间的区别:1.#{} 是 占位符 :动态解析 ...

  • 回答 62

    没问题的,专科学历也能学习Java开发的,主要看自己感不感兴趣,只要认真学,市面上的培训机构不少都是零基础课程,能跟得上,或是自己先找些资料学习一下。

  • 回答 4

    1、反射对单例模式的破坏采用反射的方式另辟蹊径实例了该类,导致程序中会存在不止一个实例。解决方案其思想就是采用一个全局变量,来标记是否已经实例化过了,如果已经实例化过了,第 二次实例化的时候,抛出异常2、clone()对单例模式的破坏当需要实现单例的...

  • 回答 5

     优点: 一、实例控制  单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。 二、灵活性  因为类控制了实例化过程,所以类可以灵活更改实例化过程。 缺点: 一、开销  虽然数量很少,但如果每次对象请求引用时都要...

  • 回答 4

    这个主要是看你数组的长度是多少, 比如之前写过的一个程序有个数组存的是各个客户端的ip地址:string clientIp[4]={XXX, xxx, xxx, xxx};这个时候如果想把hash值对应到上面四个地址的话,就应该对4取余,这个时候p就应该为4...

  • 回答 6

     哈希表的大小 · 关键字的分布情况 · 记录的查找频率 1.直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a·key + b,其中a和b为常数(这种散列函数叫做自身函数)。...

  • 回答 6

    哈希表的大小取决于一组质数,原因是在hash函数中,你要用这些质数来做模运算(%)。而分析发现,如果不是用质数来做模运算的话,很多生活中的数据分布,会集中在某些点上。所以这里最后采用了质数做模的除数。 因为用质数做了模的除数,自然存储空间的大小也用质数了...

  • 回答 2

    是啊,哈希函数的设计至关重要,好的哈希函数会尽可能地保证计算简单和散列地址分布均匀,但是,我们需要清楚的是,数组是一块连续的固定长度的内存空间

  • 回答 3

     解码查表优化算法,seo优化

  • 回答 5

    1.对对象元素中的关键字(对象中的特有数据),进行哈希算法的运算,并得出一个具体的算法值,这个值 称为哈希值。2.哈希值就是这个元素的位置。3.如果哈希值出现冲突,再次判断这个关键字对应的对象是否相同。如果对象相同,就不存储,因为元素重复。如果对象不同,就...

没有解决我的问题,去提问