转自:http://www.blogjava.net/handan/archive/2007/05/14/117336.html
Java语言中的表达式是由运算符与操作数组合而成的,所谓的运算符就是用来做运算的符号。
在Java中的运算符,基本上可分为算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、转型运算符等。
一、算术运算符
所谓算术运算符,也就是我们数学中学到的加、减、乘、除等运算。这些操作可以对几个不同类型的数字进行混合运算,为了保证操作的精度,系统在运算的过程中会做相应的转换。
1、数字精度
所谓数字精度,也就是系统在做数字之间的算术运算时,为了尽最大可能地保持计算机的准确性,而自动进行相应的转换,将不同的数据类型转变为精度最高的数据类型。规则如下:
1)当使用运算符把两个操作数结合到一起时,在进行运算前两个操作数会转化成相同的类型。
2)两个操作数中有一个是double类型的,则另一个将转换成double型。
3)两个操作数中有一个是float类型的,则另一个将也转换成float型。
4)两个操作数中有一个是long类型的,则另一个将也转换成long型。
5)任何其它类型的操作,两个操作数都要转换成int类型。
2、整数型运算(int型)
对于int型的相关操作,加、减、乘的结果都是非常容易理解的,重点讲一下除(/)的运算。
两个整数相除的结果是整数,这一点与数学中是不同的,在Java中,两个整数相除的结果类似于数学中的求模运算。整除的余数是用%表示,例如15 / 2 = 7,而不是7.5,15 % 2 = 1。我们用程序验证一下:
/*两个整数相除及求余数*/
public class Divide
{
public static void main(String[] args)
{
int a = 15;
int b = 2;
double c = 2;
System.out.println(a + "/" + b + "=" + (a / b));
System.out.println(a + "%"+ b + "=" + (a % b));
System.out.println(a + "/" + c + "=" + (a / c));
System.out.println(a + "%" + c + "=" + (a % c));
}
}
输出结果:
15 / 2 = 7
15 % 2 = 1
15 / 2.0 = 7.5
15 % 2.0 = 1.0
3、自增和自减运算符
在循环与控制中,我们经常会用到类似于计数器的运算,它们的特征是每次的操作都是加1或减1。在Java中提供了自增、自减运算符,X++使变量X的当前值每次增加1,而X--是自减运算符,每次操作使当前X的值减1。例如:
/*测试自增、自减操作*/
public class SelfAction
{
public static void main(String[] args)
{
int x = 10;
int a = x+ x++;
System.out.println("a =" + a);
System.out.println("x =" + x);
int b = x + ++x;
System.out.println("b =" + b);
System.out.println("x =" + x);
int c = x + x--;
System.out.println("c =" + c);
System.out.println("x =" + x);
int d = x + --x;
System.out.println("d =" + d);
System.out.println("x =" + x);
}
}
输出结果:
a = 20
x = 11
b = 23
x = 12
c = 24
x = 11
d = 21
x = 10
二、关系运算符
Java具有完美的关系运算符。这些关系运算符基本上同数学中的关系运算符是一致的。“>”大于、“<”小于、“>=”大于等于、“<=”小于等于、“==”等于、“!=”不等于。例如:
/*关系运算符测试*/
public class RelationTest
{
public static void main(String[] args)
{
boolean x, y, z;
int a = 15;
int b = 2;
double c =15;
x = a > b; //true;
y = a < b; //false;
z = a != b; //true;
System.out.println("x =" + x);
System.out.println("y =" + y);
System.out.println("z =" + z);
}
}
输出结果:
x = true
y = false
z = true
三、逻辑运算符
在Java语言中有三种逻辑运算符,它们是NOT(非,以符号“!”表示)、AND(与,以符号“&&”表示、)OR(或,以符号“||”表示)。
1、NOT运算符
NOT运算符是用来表示相反的意思。
NOT逻辑关系值表
A |
!A |
true |
false |
false |
true |
2、AND运算符
AND运算符表示“与”的意思,也就是和的意思。
AND逻辑关系值表
A |
B |
A&&B |
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
3、OR运算符
OR运算符是用来表示“或”就像我们日常生活中理解的一样,两者只要有一个为“真”,结果就为“真”。
OR逻辑关系值表
A |
B |
A||B |
false |
false |
false |
true |
false |
true |
false |
true |
true |
true |
true |
true |
/*逻辑运算符测试*/
public class LogicSign
{
public static void main(String[] args)
{
boolean x, y, z, a, b;
a = 'a' > 'b';
b = 'R' != 'r';
x = !a;
y = a && b;
z = a || b;
System.out.println("x =" + x);
System.out.println("y =" + y);
System.out.println("z =" + z);
}
}
输出结果:
x = true
y = false
z = true
4、“短路”现象
在运用逻辑运算符进行相关的操作时,我们会遇到一种很有趣的现象;短路现象。
对于true && false根据我们的讲述,处理的结果已经是false了,也就是说无论后面是结果是“真”还是“假”,整个语句的结果肯定是false了,所以系统就认为已经没有必要再进行比较下去了。也就不会再执行了,这种理象就是我们所说的短路现象。
四、位运算符
所有的数据、信息在计算机中都是以二进制形式存在的。我们可以对整数的二进制位进行相关的操作。这就是按位运算符,它主要包括:位的“与”、位的“或”、位的“非”、位的“异或”。
1)位的“与”,用符号“&”表示,它属于二元运算符。 与位运算值表:
A |
B |
A&B |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
2)位的“或”用符号“|”表示,它属于二元运算符。。 或位运算值表:
A |
B |
A|B |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
3)位的“非”,用符号“~”表示,它是一元运算符,只对单个自变量起作用。它的作用是使二进制按位“取反”。 非位运算值表:
A |
~A |
1 |
0 |
0 |
1 |
4)位的“异或”,用符号“^”表示,它属于二元运算符。异或位运算值表:
A |
B |
A^B |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
/*测试位的四种运算*/
public class BitOperation
{
public static void main(String[] args)
{
int a = 15;
int b = 2;
int x = a & b;
int y = a | b;
int z = a ^ b;
System.out.println(a + "&" + b + "=" + x);
System.out.println(a + "|" + b + "=" + y);
System.out.println(a + "^" + b + "=" + z);
}
}
输出结果:
15 & 2 = 2
15 | 2 = 15
15 ^ 2 = 13
五、移位运算符
移位运算符的面向对象也是二进制的“位”。可以单独用移位运算符来处理int型数据。它主要包括:左移位运算符(<<)、“有符号”右移位运算符(>>)、“无符号”右移运算符(>>>)
1)左移位运算符
左移位运算符,用符号“<<”表示。它是将运算符左边的对象向左移运动运算符右边指定的位数(在低位补0)。
2)“有符号”右移运算符
“有符号”右移运算符,用符号“>>”表示。它是将运算符左边的运算对象向右移动运算符右侧指定的位数。它使用了“符号扩展”机制,也就是说,如果值为正,在高位补0,若为负,则在高位补1。
3)“无符号”右移运算符
“无符号”右移运算符,用符号“>>>”表示。它同“有符号”右移运算符的移动规则是一样的,惟一的区别就是:“无符号”右移运算符,它采用了“零扩展”,也就是说,无论值为正负,都在高位补0。
/*移位运算符测试*/
public class BitMotion
{
public static void main(String[] args)
{
int a = 15;
int b = 2;
int x = a << b;
int y = a >> b;
int z = a >>> b;
System.out.println(a + "<<" + b + "=" + x );
System.out.println(a + ">>" + b + "=" + y);
System.out.println(a + ">>>" + b + "=" + z);
}
}
输出结果:
15 << 2 =60
15 >> 2 = 3
15 >>> 2 =3
六、赋值运算符
赋值运算符是程序中最常用的运算符了,只要有变量的声明,就要有赋值运算。如a = 3;这里的a我们都知道是变量名,根据前面对变量的定义,我们可以知道这里的a实际上就是内存空间的一个名字,它对应的是一段内存空间,一在要在这个空间放入3这个值。这个放入的过程就实现了赋值的过程。
赋值运算一览表
运算符 |
一般表示法 |
Java语言表示法 |
+= |
a = a + b |
a += b |
-= |
a = a - b |
a -= b |
*= |
a = a * b |
a *=b |
/= |
a=a / b |
a /= b |
%= |
a = a % b |
a %= b |
>>= |
a = a >> b |
a >>= b |
>>>= |
a = a >>> b |
a >>>= b |
七、三元运算符
三元运算符比较罕见,因为它有三个运算对象,但它也确实属于运算符的一种,因为它最终也是产生一个值。它也可以转化为条件判断语句,只不过这种处理方式更简洁、明了。
它的运算过程是这样的:
如果“布尔表达式”的结果是“true”,就返回值0;
如果“布尔表达式”的结果是“false”,就返回值1;
它的返回值做为最终结果返回。
八、逗号运算符
在Java中,逗号运算符的惟一使用场所就是在for循环语句中。
九、字符串运算符
“+”号这个运算符,在Java中有一项特殊的用法,它不仅起到连接不同的字符串,还有一种隐式的转型功能。
十、转型运算符
转型运算符可以说是一种特殊的运算符,它是将一种类型的数据或对象,强制转变为另一种类型。
/*强制转型测试*/
public class TypeTran
{
public static void main(String[] args)
{
int x ;
double y;
x = (int)22.5 + (int)34.7; //强制转型可能引起精度丢失
y = (double)x;
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}
输出结果:
x = 56
y = 56.0
分析:
可以发现,由于强制转型,使数据精度丢失。系统会忽略强制转型的检查。所以对于强制转型,必须清楚转型是否可行。
最后总结一下运算符的优先级
运算符 |
优先级 |
括号() |
1最高 |
++、-- |
2 |
~、! |
3 |
*、/、% |
4 |
+、-(减) |
5 |
<<、>>、>>> |
6 |
>、<、>=、<= |
7 |
==、!= |
8 |
& |
9 |
^ |
10 |
| |
11 |
&& |
12 |
|| |
13 |
? : |
14
|
相关推荐
28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符.zip28.java运算符...
Java运算符是编程语言中用于执行特定操作的关键符号,它们在Java程序中起着至关重要的作用,帮助我们处理数据和控制程序流程。在这个"java运算符小程序"中,我们可以探索和学习Java中的各种运算符及其用法。 1. **...
非常详细的java运算符优先级表,帮助记住优先级顺序
JAVA运算符思维导图,便捷整理思路,算数运算符、连接运算符、赋值运算符、扩展赋值运算符、三目运算符、逻辑运算符、关系运算符
java运算符与优先级,完善版本。 谢谢,
Java运算符+(优先级、目数)
在Java编程语言中,转型运算符是至关重要的概念,它涉及到不同数据类型的转换。Java提供了两种主要的转型方式:自动类型转换(也称为隐式转换)和强制类型转换(也称为显式转换)。理解并熟练掌握这些转换对于编写...
Java运算符是编程语言中不可或缺的部分,它们帮助程序员执行各种计算和逻辑判断。在Java中,运算符主要分为四大类:算术运算符、关系运算符、逻辑运算符和位运算符。 1. **算术运算符** - 加法运算符 (+):将两个...
Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java中的运算符Java...
Java运算符是编程语言中用于执行特定计算或操作的符号。了解这些运算符对于编写高效、清晰的Java代码至关重要。以下是对Java运算符及其优先级的详细解释: 1. **点运算符** (.): 用于访问类的成员,如属性和方法。...
java 运算符学习笔记
Java运算符是编程中不可或缺的部分,它们用于执行各种计算和逻辑操作。Java提供了四大类运算符:算术运算符、位运算符、关系运算符和逻辑运算符。 1. **算术运算符**: - `+`:加法运算,可用于整数、浮点数的相加...
13.java位运算符.zip13.java位运算符.zip13.java位运算符.zip13.java位运算符.zip13.java位运算符.zip13.java位运算符.zip13.java位运算符.zip13.java位运算符.zip13.java位运算符.zip13.java位运算符.zip13.java位...
9.java赋值运算符.zip9.java赋值运算符.zip9.java赋值运算符.zip9.java赋值运算符.zip9.java赋值运算符.zip9.java赋值运算符.zip9.java赋值运算符.zip9.java赋值运算符.zip9.java赋值运算符.zip9.java赋值运算符.zip...
35.java三元运算符.zip35.java三元运算符.zip35.java三元运算符.zip35.java三元运算符.zip35.java三元运算符.zip35.java三元运算符.zip35.java三元运算符.zip35.java三元运算符.zip35.java三元运算符.zip35.java三元...
32.java关系运算符.zip32.java关系运算符.zip32.java关系运算符.zip32.java关系运算符.zip32.java关系运算符.zip32.java关系运算符.zip32.java关系运算符.zip32.java关系运算符.zip32.java关系运算符.zip32.java关系...
30.java赋值运算符.zip30.java赋值运算符.zip30.java赋值运算符.zip30.java赋值运算符.zip30.java赋值运算符.zip30.java赋值运算符.zip30.java赋值运算符.zip30.java赋值运算符.zip30.java赋值运算符.zip30.java赋值...
10.java算术运算符.zip10.java算术运算符.zip10.java算术运算符.zip10.java算术运算符.zip10.java算术运算符.zip10.java算术运算符.zip10.java算术运算符.zip10.java算术运算符.zip10.java算术运算符.zip10.java算术...
### Java运算符优先级详解 在Java编程语言中,了解并正确使用运算符优先级对于构建高效、可读性强的程序至关重要。虽然建议在实际开发过程中通过使用括号来明确表达式的计算顺序,而非依赖于复杂的优先级规则,但...