⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java02_08.htm

📁 JAVA的课件
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Java语言教程</title>
</head>

<body background="Bg.gif">

<p align="center"><b><font size="5">2.8 运算符与表达式</font></b></p>    
<p>运算符指明对操作数所进行的运算。</p>    
    
<p>按操作数的数目来分,可分为一元运算符(如++、~),二元运算符(如+、>)和三元运算符(如   
?:)。对于一元运算符来说,可以有前缀表达式(如++i )和后缀表达式(如i++)&nbsp;<br>  
<br>  
按照运算符功能来分,基本的运算符可分成下面几类:&nbsp;<br>  
<br>  
     1.算术运算符(+,-,*,/,%,++,--)&nbsp;<br>  
<br>  
     2.关系运算符(&gt;,&lt;,&gt;=,&lt;=,==,!=)&nbsp;<br>  
<br>  
     3.布尔逻辑运算符(!,&amp;&amp;,||)&nbsp;<br>  
<br>  
     4.位运算符(&gt;&gt;,&lt;&lt;,&gt;&gt;&gt;(不带符号右移),&amp;,|,^(异或),~(位反))&nbsp;<br>  
<br>  
     5.赋值运算符(=,及其扩展赋值运算符如+=)&nbsp;<br>  
<br>  
     6.条件运算符( ?:)&nbsp;<br>  
<br>  
     7.其它(包括分量运算符·,下标运算符[],实例运算符instanceof,内存分配运算符new,强制类<br>  
型转换运算符(类型),方法调用运算符() 等)&nbsp;<br>  
<br>  
本节中我们主要讲述前6类运算符。&nbsp;<br>  
<br>  
一、算术运算符&nbsp;<br>  
<br>  
     算术运算符作用于整型或浮点型数据,完成算术运算。&nbsp;<br>  
<br>  
1、二元算术运算符,如下表所示&nbsp;<br>  
</p>    
    
<table border="1" width="80%">  
  <tr>  
    <td width="33%">    运算符</td>  
    <td width="33%">           用法&nbsp;</td>  
    <td width="34%">描述</td>  
  </tr>  
  <tr>  
    <td width="33%">       +</td>  
    <td width="33%">              op1+op2</td>  
    <td width="34%">加</td>  
  </tr>  
  <tr>  
    <td width="33%">       -</td>  
    <td width="33%">              op1-op2&nbsp;</td>  
    <td width="34%">减</td>  
  </tr>  
  <tr>  
    <td width="33%">       *&nbsp;</td>  
    <td width="33%">              op1*op2</td>  
    <td width="34%">         乘</td>  
  </tr>  
  <tr>  
    <td width="33%">       /</td>  
    <td width="33%">op1/op2</td>  
    <td width="34%">除</td>  
  </tr>  
  <tr>  
    <td width="33%">       %</td>  
    <td width="33%">              op1%op2</td>  
    <td width="34%">         取模(求余)</td>  
  </tr>  
</table>  
<p>     Java对加运算符进行了扩展,使它能够进行字符串的连接,如"abc&quot;+&quot;de&quot;,得到串"abcde"。我<br>  
们将在第五章中讲解。&nbsp;/根据操作数来作整除或浮点除法。<br> 
<br> 
     与C、C++不同,对取模运算符%来说,其操作数可以为浮点数,如:37.2%10=7.2。&nbsp;<br> 
<br> 
2、一元算术运算符,如下表所示:&nbsp;<br> 
</p>   
   
<table border="1" width="80%"> 
  <tr> 
    <td width="33%" align="center"><b>    运算符</b></td> 
    <td width="33%" align="center"><b>用法</b></td> 
    <td width="34%" align="center"><b>          描述</b></td> 
  </tr> 
  <tr> 
    <td width="33%">       +&nbsp;</td> 
    <td width="33%">              +op</td> 
    <td width="34%">            正值</td> 
  </tr> 
  <tr> 
    <td width="33%">       -</td> 
    <td width="33%">              -op</td> 
    <td width="34%">负值</td> 
  </tr> 
  <tr> 
    <td width="33%">       ++</td> 
    <td width="33%">++op ,op++</td> 
    <td width="34%">      加1&nbsp;</td> 
  </tr> 
  <tr> 
    <td width="33%">       --&nbsp;</td> 
    <td width="33%">--op,op--&nbsp;</td> 
    <td width="34%">      减1</td> 
  </tr> 
</table> 
<p>i++与++i的区别&nbsp;<br> 
<br> 
     i++在使用i之后,使i的值加1,因此执行完i++后,整个表达式的为i,而i的值变为i+1。&nbsp;<br> 
<br> 
     ++i在使用i之前,使i的值加1,因此执行完++i后,整个表达式和i的值均为i+1。&nbsp;<br> 
<br> 
     对i--与--i同样。&nbsp;<br> 
<br> 
     例2.5&nbsp; 下面的例子说明了算术运算符的使用&nbsp;<br> 
<br> 
    public class ArithmaticOp{&nbsp;<br> 
          public static void main( String args[] ){&nbsp;<br> 
                int   a=5+4;            //a=9&nbsp;<br> 
                int   b=a*2;            //b=18&nbsp;<br> 
                int   c=b/4;            //c=4&nbsp;<br> 
                int   d=b-c;            //d=14&nbsp;<br> 
                int   e=-d;       //e=-14&nbsp;<br> 
                int   f=e%4;            //f=-2&nbsp;<br> 
                double      g=18.4;&nbsp;<br> 
                double      h=g%4;            //h=2.4&nbsp;<br> 
                int   i=3;&nbsp;<br> 
                int   j=i++;            //i=4,j=3&nbsp;<br> 
                int   k=++i;            //i=5,k=5&nbsp;<br> 
                System.out.println("a = "+a);&nbsp;<br> 
                System.out.println("b = "+b);&nbsp;<br> 
                System.out.println("c = "+c);&nbsp;<br> 
                System.out.println("d = "+d);&nbsp;<br> 
                System.out.println("e = "+e);&nbsp;<br> 
                System.out.println("f = "+f);&nbsp;<br> 
                System.out.println("g = "+g);&nbsp;<br> 
                System.out.println("h = "+h);&nbsp;<br> 
                System.out.println("i = "+i);&nbsp;<br> 
                System.out.println("j = "+j);&nbsp;<br> 
                System.out.println("k = "+k);&nbsp;<br> 
          }&nbsp;<br> 
    }&nbsp;<br> 
    其结果为:&nbsp;<br> 
    C:\>java ArithmaticOp&nbsp;<br> 
    a = 9&nbsp;<br> 
    b = 18&nbsp;<br> 
    c = 4&nbsp;<br> 
    d = 14&nbsp;<br> 
    e = -14&nbsp;<br> 
    f = -2&nbsp;<br> 
    g = 18.4&nbsp;<br> 
    h = 2.4&nbsp;<br> 
    i = 5&nbsp;<br> 
    j = 3&nbsp;<br> 
    k = 5&nbsp;<br> 
<br> 
二、关系运算符&nbsp;<br> 
<br> 
     关系运算符用来比较两个值,返回布尔类型的值true或false。关系运算符都是二元运算<br> 
符,如下表所示:&nbsp;<br> 
</p>   
   
<table border="1" width="80%"> 
  <tr> 
    <td width="33%">    运算符</td> 
    <td width="33%">        用法</td> 
    <td width="34%">          返回true的情况</td> 
  </tr> 
  <tr> 
    <td width="33%">    >&nbsp;</td> 
    <td width="33%">             op1>op2</td> 
    <td width="34%">        op1大于op2&nbsp;</td> 
  </tr> 
  <tr> 
    <td width="33%">    >=</td> 
    <td width="33%">             op1>=op2</td> 
    <td width="34%">       op1大于或等于op2&nbsp;</td> 
  </tr> 
  <tr> 
    <td width="33%">    <</td> 
    <td width="33%">             op1<op2</td> 
    <td width="34%">        op1小于op2&nbsp;</td> 
  </tr> 
  <tr> 
    <td width="33%">    <=</td> 
    <td width="33%">             op1<=op2</td> 
    <td width="34%">        op1小于或等于op2&nbsp;</td> 
  </tr> 
  <tr> 
    <td width="33%">    ==</td> 
    <td width="33%">op1==op2&nbsp;</td> 
    <td width="34%">        op1与op2相等</td> 
  </tr> 
  <tr> 
    <td width="33%">    !=</td> 
    <td width="33%">op1!=op2</td> 
    <td width="34%">        op1与op2不等</td> 
  </tr> 
</table> 
<p>&nbsp;&nbsp; Java中,任何数据类型的数据(包括基本类型和组合类型)都可以通过==或!=来比较是否<br> 
相等(这与C、C++不同)。&nbsp;<br> 
<br> 
&nbsp;&nbsp; 关系运算的结果返回true或false,而不是C、C++中的1或0。&nbsp;<br> 
<br> 
&nbsp;&nbsp; 关系运算符常与布尔逻辑运算符一起使用,作为流控制语句的判断条件。如&nbsp;<br> 
<br> 
&nbsp;&nbsp; <b>if( a>b &amp;&amp; b==c)&nbsp;<br> 
</b><br> 
三、布尔逻辑运算符&nbsp;<br> 
<br> 
     布尔逻辑运算符进行布尔逻辑运算,如下表所示:&nbsp;<br> 
</p>   
   
<table border="1" width="80%"> 
  <tr> 
    <td width="20%">    op1&nbsp;</td> 
    <td width="20%">    op2</td> 
    <td width="20%">    op1&amp;&amp;op2</td> 
    <td width="20%">     op1||op2&nbsp;</td> 
    <td width="20%">    !op1</td> 
  </tr> 
  <tr> 
    <td width="20%">    false</td> 
    <td width="20%">  false</td> 
    <td width="20%">    false</td> 
    <td width="20%">        false</td> 
    <td width="20%">      true&nbsp;</td> 
  </tr> 
  <tr> 
    <td width="20%">    false</td> 
    <td width="20%">  true</td> 
    <td width="20%">     false</td> 
    <td width="20%">         true</td> 
    <td width="20%">      true</td> 
  </tr> 
  <tr> 
    <td width="20%">    true</td> 
    <td width="20%">false</td> 
    <td width="20%">    false&nbsp;</td> 
    <td width="20%">         true</td> 
    <td width="20%">      false&nbsp;</td> 
  </tr> 
  <tr> 
    <td width="20%">    true</td> 
    <td width="20%">   true</td> 
    <td width="20%">      true</td> 
    <td width="20%">         true</td> 
    <td width="20%">      false&nbsp;</td> 
  </tr> 
</table> 
<p>·&amp;&amp;、‖ 为二元运算符,实现逻辑与、逻辑或。<br>
·! 为一元运算符,实现逻辑非。<br>  
·对于布尔逻辑运算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表达式的结果为true,不必对运算符右边的表达式再进行运算;同样,对与运算,如果左边表达式的值为false,则不必对右边的表达式求值,整个表达式的结果为false。<br> 
<br> 
    下面的例子说明了关系运算符和布尔逻辑运算符的使用。<br> 
    public class RelationAndConditionOp{&nbsp;<br> 
&nbsp; public static void main( String args[] ){&nbsp;<br> 
&nbsp;&nbsp;&nbsp; int   a=25,b=3;&nbsp;<br> 
&nbsp;&nbsp;&nbsp; boolean d=a<b;          //d=false&nbsp;<br> 
&nbsp;&nbsp;&nbsp; System.out.println("a<b = "+d);&nbsp;<br> 
&nbsp;&nbsp;&nbsp; int   e=3;&nbsp;<br> 
&nbsp;&nbsp;&nbsp; if(e!=0 &amp;&amp; a/e>5)&nbsp;<br> 
&nbsp;&nbsp;&nbsp; System.out.println(&quot;a/e = "+a/e);&nbsp;<br> 
&nbsp;&nbsp;&nbsp; int   f=0;&nbsp;<br> 
&nbsp;&nbsp;&nbsp; if(f!=0 &amp;&amp; a/f>5)&nbsp;<br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;a/f = "+a/f);&nbsp;<br> 
&nbsp;&nbsp;&nbsp; else&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("f = "+f);&nbsp;<br> 
&nbsp; }&nbsp;<br>
    }&nbsp;<br>
    其运行结果为:&nbsp;<br>
    C:\>java RelationAndConditionOp&nbsp;<br> 
    a<b = false&nbsp;<br> 
    a/e = 8&nbsp;<br> 
    f = 0&nbsp;<br> 
<br> 
     注意:上例中,第二个if语句在运行时不会发生除0溢出的错,因为e!=0为false,所以就不需<br> 
要对a/e进行运算。&nbsp;<br> 
<br> 
四、位运算符&nbsp;<br>
<br>
     位运算符用来对二进制位进行操作,Java中提供了如下表所的位运算符:&nbsp;<br>
</p>  
  
<table border="1" width="88%" height="173">
  <tr>
    <td width="33%" height="16">操作符</td>
    <td width="26%" height="16">用法</td>
    <td width="41%" height="16">描述</td>
  </tr>
  <tr>
    <td width="33%" height="16">&gt;&gt;</td>
    <td width="26%" height="16">OP&gt;&gt;num</td>
    <td width="41%" height="16">将OP右移num位(带符号位)</td>
  </tr>
  <tr>
    <td width="33%" height="16">&lt;&lt;</td>
    <td width="26%" height="16">OP&lt;&lt;num</td>
    <td width="41%" height="16">将OP左移num位</td>
  </tr>
  <tr>
    <td width="33%" height="16">&gt;&gt;&gt;</td>
    <td width="26%" height="16">OP&gt;&gt;&gt;num</td>
    <td width="41%" height="16">将OP右移num位(高位补0)</td>
  </tr>
  <tr>
    <td width="33%" height="13">&amp;</td>
    <td width="26%" height="13">OP1&amp;OP2</td>
    <td width="41%" height="13">将OP1和OP2按位取与</td>
  </tr>
  <tr>
    <td width="33%" height="16">|</td>
    <td width="26%" height="16">OP1|OP2</td>
    <td width="41%" height="16">将OP1和OP2按位取或</td>
  </tr>
  <tr>
    <td width="33%" height="16">^</td>
    <td width="26%" height="16">OP1^OP2</td>
    <td width="41%" height="16">将OP1和OP2按位异或</td>
  </tr>
  <tr>
    <td width="33%" height="16">~</td>
    <td width="26%" height="16">~OP</td>
    <td width="41%" height="16">将OP按位取反</td>
  </tr>
</table>
<p>
     操作数只能为整型和字符型数据。&nbsp;<br>
<br>
【补充】补码&nbsp;<br>
     Java使用补码来表示二进制数,在补码表示中,最高位为符号&nbsp;,正数的符号位为0,负数为1。<br>
     对正数来说,最高位为0,其余各位代表数值本身(以二进制示),如+42的补码为00101010。&nbsp;<br>
<br>
     对负数而言,把该数绝对值的补码按位取反,然后对整个数&nbsp;加1,即得该数的补码。如<br>
-42的补码为11010110 (00101010 按位取反11010101 +1=11010110 )&nbsp;<br> 
<br> 
     用补码来表示数,0的补码是唯一的,都为00000000。(而在原码,反码表示中,+0和-0的表示<br> 
是不唯一的,可参见相应的书籍)。而且可以用111111表示-1的补码(这也是补码与原码和反<br>
码的区别)。&nbsp;<br>
<br>
     注意,~运算符与-运算符不同,~21≠-21。&nbsp;<br>
<br>
按位与运算符&amp;&nbsp;<br>
<br>
     参与运算的两个值,如果两个相应位都为1,则该位的结果为1&nbsp;,否则为0。即:&nbsp;<br>
<br>
     0 &amp; 0 = 0,0 &amp;1 = 0,1 &amp; 0 = 0, 1 &amp; 1 = 1&nbsp;<br> 
<br> 
<font size="3"><a href="index.htm">回目录</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<a href="java02_07.htm">上一课</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="java02_09.htm">    
下一课</a></font> 
</p>   
   
</body>   
   
</html>   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -