首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA 运算符跟表达式Mark

2012-10-28 
JAVA 运算符和表达式Mark?算?符?指?明?对?操?作?数?所?进?行?的?运?算?。?按?操?作?数?的?数?目?来?分?,可?

JAVA 运算符和表达式Mark

?JAVA 运算符跟表达式Mark算?符?指?明?对?操?作?数?所?进?行?的?运?算?。?按?操?作?数?的?数?目?来?分?,可?以?有?一?元?运?算?符?(如?++、
-),二?元?运?算?符?(如?+、?>)和?三?元?运?算?符?(如??:),它?们?分?别?对?应?于?一?个?、?两?个?和?三?个?操?作?数?。?对
于?一?元?运?算?符?来?说?,可?以?有?前?缀?表?达?式?(如?++i?)和?后?缀?表?达?式?(如?i++),对?于?二?元?运?算?符?来?说?则
采?用?中?缀?表?达?式?(如?a+b)。?按?照?运?算?符?功?能?来?分?,基?本?的?运?算?符?有?下?面?几?类?:

1.算?术?运?算?符?(+,-,*,/,%,++,--)

2.关?系?运?算?符?(>,<,>=,<=,==,!=)

3.布?尔?逻?辑?运?算?符?(!,&&,||)

4.位?运?算?符?(>>,<<,>>>,&,|,^,~?)

5.赋?值?运?算?符?(=,及?其?扩?展?赋?值?运?算?符?如?+=)

6.条?件?运?算?符?(??:)

7.其?它?(包?括?分?量?运?算?符?·?,下?标?运?算?符?[],实?例?运?算?符?instanc?eof,内?存?分?配?运?算?符?new,强?制?类
型?转?换?运?算?符?(类?型?),方?法?调?用?运?算?符?()?等?)

本?章?中?我?们?主?要?讲?述?前?6类?运?算?符?。

§?3.1算?术?运?算?符

算?术?运?算?符?作?用?于?整?型?或?浮?点?型?数?据?,完?成?算?术?运?算?。

一?、?二?元?算?术?运?算?符?,如?下?表?所?示

运算符?用法?描述
+?op1+op2?加
-?op1-op2?减
*?op1*op2?乘
/?op1/op2?除
%?op1%op2?取模(求余)

Java对?加?运?算?符?进?行?了?扩?展?,使?它?能?够?进?行?字?符?串?的?连?接?,如?"abc"+"de",得?到?串?"abcde"。?我
们?将?在?第?七?章?中?讲?解?。

与?C、?C++不?同?,对?取?模?运?算?符?%来?说?,其?操?作?数?可?以?为?浮?点?数?,?如?37.2%10=7.2。

二?、?一?元?算?术?运?算?符?,如?下?表?所?示?:

运算符?用法?描述
+?+op?正值
-?-op?负值
++?++op,op++?加1
--?--op,op--?减1

i++与?++i的?区?别

i++在?使?用?i之?后?,使?i的?值?加?1,因?此?执?行?完?i++后?,整?个?表?达?式?的?值?为?i,而?i的?值?变?为?i+1。

++i在?使?用?i之?前?,使?i的?值?加?1,因?此?执?行?完?++i后?,整?个?表?达?式?和?i的?值?均?为?i+1。

对?i--与?--i同?样?。

例?3.1.下?面?的?例?子?说?明?了?算?术?运?算?符?的?使?用

public?class?ArithmaticOp{
public?static?void?main(?String?args[]?){
int?a=5+4;?//a=9
int?b=a*2;?//b=18
int?c=b/4;?//c=4
int?d=b-c;?//d=14
int?e=-d;?//e=-14
int?f=e%4;?//f=-2
double?g=18.4;
double?h=g%4;?//h=2.4
int?i=3;
int?j=i++;?//i=4,j=3
int?k=++i;?//i=5,k=5
System.out.println("a?=?"+a);
System.out.println("b?=?"+b);
System.out.println("c?=?"+c);
System.out.println("d?=?"+d);
System.out.println("e?=?"+e);
System.out.println("f?=?"+f);
System.out.println("g?=?"+g);
System.out.println("h?=?"+h);
System.out.println("i?=?"+i);
System.out.println("j?=?"+j);
System.out.println("k?=?"+k);
}
}
其结果为:
C:\>java?ArithmaticOp
a?=?9
b?=?18
c?=?4
d?=?14
e?=?-14
f?=?-2
g?=?18.4
h?=?2.4
i?=?5
j?=?3
k?=?5

§?3.2关?系?运?算?符

关?系?运?算?符?用?来?比?较?两?个?值?,返?回?布?尔?类?型?的?值?true或?false。?关?系?运?算?符?都?是?二?元?运?算
符?,如?下?表?所?示?:

运算符?用法?返回true的情况
>?op1>op2?op1大于op2
>+?op1>=op2?op1大于或等于op2
<?op1<op2?op1小于op2
<=?op1<=op2?op1小于或等于op2
==?op1==op2?op1与op2相等
!=?op1!=op2?op1与op2不等

Java中?,任?何?数?据?类?型?的?数?据?(包?括?基?本?类?型?和?组?合?类?型?)都?可?以?通?过?==或?!=来?比?较?是?否
相?等?(这?与?C、?C++不?同?)。

关?系?运?算?的?结?果?返?回?true或?false,而?不?是?C、?C++中?的?1或?0。

关?系?运?算?符?常?与?布?尔?逻?辑?运?算?符?一?起?使?用?,作?为?流?控?制?语?句?的?判?断?条?件?。?如

if(?a>b?&&?b==c)

§?3.3布?尔?逻?辑?运?算?符

布?尔?逻?辑?运?算?符?进?行?布?尔?逻?辑?运?算?,如?下?表?所?示?:

op1?op2?op1&&op2?op1||op2?!op1
false?false?false?false?true
false?true?false?true?true
true?false?false?true?false
true?true?true?true?false
}@@@
·&&、‖ 为二元运算符,实现逻辑与、逻辑或。
·!?为一元运算符,实现逻辑非。
·对于布尔逻辑运算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表
达式的结果为true,不必对运算符右边的表达式再进行运算;同样,对与运算,如果左边表达式
的值为false,则不必对右边的表达式求值,整个表达式的结果为false。
下面的例子说明了关系运算符和布尔逻辑运算符的使用。
@@@[
public?class?RelationAndConditionOp{
public?static?void?main(?String?args[]?){
int?a=25,b=3;
boolean?d=a<b;?//d=false
System.out.println("a<b?=?"+d);
int?e=3;
if(e!=0?&&?a/e>5)
System.out.println("a/e?=?"+a/e);
int?f=0;
if(f!=0?&&?a/f>5)
System.out.println("a/f?=?"+a/f);
else
System.out.println("f?=?"+f);
}
}
其运行结果为:
C:\>java?RelationAndConditionOp
a<b?=?false
a/e?=?8
f?=?0

注?意?:上?例?中?,第?二?个?if语?句?在?运?行?时?不?会?发?生?除?0溢?出?的?错?误?,因?为?e!=0为?false,所?以?就?不?需
要?对?a/e进?行?运?算?。

§?3.4位?运?算?符

位?运?算?符?用?来?对?二?进?制?位?进?行?操?作?,Java中?提?供?了?如?下?表?所?示?的?位?运?算?符?:

位?运?算?符?中?,除? ?~? ?以?外?,其?余?均?为?二?元?运?算?符?。

操?作?数?只?能?为?整?型?和?字?符?型?数?据?。

3.4.1补?码

Java使?用?补?码?来?表?示?二?进?制?数?,在?补?码?表?示?中?,最?高?位?为?符?号?位?,正?数?的?符?号?位?为?0,负?数
为?1。?补?码?的?规?定?如?下?:

对?正?数?来?说?,最?高?位?为?0,其?余?各?位?代?表?数?值?本?身?(以?二?进?制?表?示?),如?+42的?补?码?为
00101010。

对?负?数?而?言?,把?该?数?绝?对?值?的?补?码?按?位?取?反?,然?后?对?整?个?数?加?1,即?得?该?数?的?补?码?。?如
-42的?补?码?为?11010110?(00101010?按?位?取?反?11010101?+1?11010110?)

用?补?码?来?表?示?数?,0的?补?码?是?唯?一?的?,都?为?00000000。?(而?在?原?码?,反?码?表?示?中?,+0和?-0的?表?示
是?不?唯?一?的?,可?参?见?相?应?的?书?籍?)。?而?且?可?以?用?111111表?示?-1的?补?码?(这?也?是?补?码?与?原?码?和?反
码?的?区?别?)。

3.4.2按?位?取?反?运?算?符? ?~

~? ?是?一?元?运?算?法?,对?数?据?的?每?个?二?进?制?位?取?反?,即?把?1变?为?0,把?0变?为?1。

例?如?:

0010101



1101010

注?意?,~?运?算?符?与?-?运?算?符?不?同?,~?21≠?-21。

3.4.3按?位?与?运?算?符?&

参?与?运?算?的?两?个?值?,如?果?两?个?相?应?位?都?为?1,则?该?位?的?结?果?为?1,否?则?为?0。?即?:

0?&?0?=?0,0?&1?=?0,1?&?0?=?0,1?&?1?=?1

热点排行