二级java课件第3章语言概论_第1页
二级java课件第3章语言概论_第2页
二级java课件第3章语言概论_第3页
二级java课件第3章语言概论_第4页
二级java课件第3章语言概论_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二级教程——Java语言程序设计第3章Java语言概论第3章Java语言概论大纲要求(1)运算符(2)表达式运算(3)表达式语句重要考点提示根据对历年真题的分析可知,本章考核内容约占7%,主要包括以下几个方面:(1)运算符的分类及相互之间的优先级关系(2)操作数的类型转换(3)表达式结果的处理3.1运算符运算:对各种类型的数据进行加工的过程。运算符:表示各种运算的符号。操作数:参与运算的数据。按运算符所涉及的操作数的数目划分:(1)一元运算符:++,--,+,-。如++a(2)二元运算符:+,-,>。如a+b;

a>b;(3)三元运算符:?:。如a>b?1:0;按运算符的功能划分:(1)算术运算符:+,-,*,/,%,++,--例如:

3+2a-bi++--I(2)关系运算符:>,<,>=,<=,==,!=,例如:

count>3i==0n!=1(3)布尔逻辑运算符:!,&&,||,例如:

flag=true!(flag)flag&&false3.1运算符按运算符的功能划分:(4)位运算符:>>,<<,>>>,&,|,^,~,例如:

a=10011101;

b=00111001;有如下结果:

a<<3=11101000;a>>3=11110011;a>>>3=00010011;a&b=0001101;a|b=10111101;~a=01100010;a^b=10100100;3.1运算符按运算符的功能划分:(5)赋值运算符=及扩展+=,-=,*=,/=等例如:

i=3;i+=3等效于i=i+3;(6)条件运算符:?:,例如:

result=(sum==0?1:num/sum);(7)其他运算符3.1运算符其他运算符符号功能()表达式加括号优先运算符(参数表)方法参数传递,多个参数时用逗号分割(类型)强制转换类型.分量运算符,用于对象属性或方法的引用[]下标运算符,应用于数组instanceof对象运算符,用于测试一个对象是否是一个指定类的实例new对象实例化运算符,实例化一个对象,即为对象分配内存+字符串合并运算符,如“Hello”+“Java!”等于“HelloJava!”3.2表达式表达式是由操作数和运算符按一定的语法形式组成的符号序列。表达式的类型是指表达式运算结束后的结果的类型。例如:

1.x,y,z都是布尔型变量,则表达式

x&&y||z

就是布尔表达式。

2.num1,num2都是整型变量,则表达式

num1+num2

就是整型表达式。3.3算术运算符和算术表达式一元运算符++op正值--op负值++++op,op++加1----op,op--减1算术表达式由操作数和算术运算符组成。在算术表达式中,操作数只能是整型或浮点型数据。(1)一元算术运算符(1)一元加(+)和一元减(-)表示针对某个操作数的符号,其结果为此操作数的正值或负值。(2)增量运算符(++)将操作数加1,减量运算符(--)将操作数减1.++x,--x表示在使用x之前,先使x的值加(减)1。

x++,x--表示在使用x之后,使x的值加(减)1。注意:粗略的看,++x和x++的作用相当于x=x+1。但++x和x++的不同之处在于,++x是先执行x=x+1再使用x的值,而x++是先使用x的值再执行x=x+1。如果x的原值是5,则:对于y=++x;y的值是6。对于y=x++;y的值是5,然后x的值变为6。3.3算术运算符和算术表达式例3.1一元算术运算符的使用publicclassOperationsAndExpression{

voidsingleArithmaticOperator(){

floati=2.0f,j=10.0f; intm=20,n=10;

System.out.println((++i)*(j--)); System.out.println("i="+i+",j="+j); System.out.println((i++)*(j--)); System.out.println("i="+i+",j="+j); System.out.println((--m)*(n++)); System.out.println("m="+m+",n="+n); System.out.println((m--)*(n++)); System.out.println("m="+m+",n="+n);} 运行结果:30.0i=3.0,j=9.027.0i=4.0,j=8.0190m=19,n=11209M=18,n=12

publicstaticvoidmain(Stringargs[]){

OperationsAndExpressionOperAndExp=newOperationsAndExpression();OperAndExp.singleArithmaticOperator();}}(2)二元算术运算符类别运算符用法描述二元运算符+op1+op2加-op1–op2减*op1*op2乘/op1/op2除%op1%op2取模(求余)二元算术运算符有两个操作数,由两个操作数加一个二元算术运算符可构成一个算术表达式。二元算术运算符共有5个。(2)二元算术运算符二元算术运算符适用于所有数值型数据类型,包括整型和浮点型。如果操作数全为整型,只要其中有一个是long型,表达式结果也为long型。两个操作数全是byte或short型,表达式结果是int型。两个操作数是浮点型,只要其中一个为double型,表达式结果为double型,否则为float型。例3.2二元算术运算符的使用publicclassOperationsAndExpression{

voiddoubleArithmaticOperator(){

System.out.println(9/2); System.out.println(5/2.0); bytex=3,y=4; longr=80L; System.out.println(r/y); System.out.println(x*y); floatz=12.5f,w=5.5f; System.out.println(z+w); System.out.println(z-x); }

运行结果:42.5201218.09.5publicstaticvoidmain(Stringargs[]){

OperatorsAndExpressionsOperAndExp=newOperatorsAndExpressions();OperAndExp.doubleArithmaticOperator();}}

例3.3取模运算符在整数和浮点数中的使用publicclassOperatorsAndExpressions3{

voidresidual(){ inti=10,j=3; floatm=213.5f,n=4.0f; System.out.println(i%j); System.out.println(m%n); }

publicstaticvoidmain(Stringargs[]){ OperatorsAndExpressions3OperAndExp=newOperatorsAndExpressions3(); OperAndExp.residual(); }} 运行结果:11.5(2)二元算术运算符Java对“+”进行了扩展,使它能够进行字符串的连接。如”abc”+”de”得到字符串”abcde”“+”能够将字符串和其他类型的数据进行连接,其结果是字符串。如“abc”+3得到字符串“abc3”3.0+“abc”得到字符串“3.0abc”如果“+”运算符的第一个操作数是字符串,则Java系统会自动将后续的操作数类型转换为字符串类型,然后再进行连接;“abc”+3+4+5结果是“abc345”如果“+”运算符的第一个操作数不是字符串,则运算结果由后续的操作数决定。如

3+4+5+“abc”结果是“12abc”,而不是“345abc”;例3.4“+”运算符在字符串中的使用

intx=3,y=4,z=5; Strings="xyz="; System.out.println(x+y+z); System.out.println(s+x+y+z); System.out.println(x+y+z+s); System.out.println("abc"+3); System.out.println(3.0+"abc");运行结果:12xyz=34512xyz=abc33.0abc(3)算术运算符的优先级在稍微复杂一些的算术表达式中,算术运算符的优先级的次序排列为:

1)++和--的级别最高;

2)*和/及%次之;

3)+和-级别最低另外,通过括号可以明显地改变运算的顺序。例3.5算术运算符的优先级inta=10,b=4,c=20,d=6; System.out.println(a+b*c+d); System.out.println(a+c%b); System.out.println(a++*b+c*--d);运行结果:9610140精题1阅读下面的程序

Publicstaticvoidmain(Stringargs[]){System.out.println(34+56-6);System.out.println(26*2-3);System.out.println(3*4/2);System.out.println(5/2);}程序的运行结果是()。2007.9A)B)C)D)844962902562.584231226849142.5A)精题2阅读下面的程序

publicclassIncrement{publicstaticvoidmain(Stringargs[]){intc=5;System.out.println(c);System.out.println(c++);System.out.println(c);}}程序的运行结果是()。2006.9A)B)C)D)566556677666B)精题3下列关于算术运算符的说法中,不正确的一个是()A)一元加运算符只是表示某个操作数的符号,运算结果为该操作数的正值。B)增量运算表达式作为其他表达式的操作数时,++运算符在操作数的左边和右边,整个表达式的运算结果是不同的。C)增量运算表达式作为其他表达式的操作数时,++运算符在操作数的左边和右边,整个表达式的运算结果是相同的。D)二元算术运算表达式应该有两个操作数。C)精题4下列对于二元算术表达式的说法正确的一个是()A)若两个操作数都是float型,则表达式的结果为float型。B)若两个操作数都是float型,则表达式的结果为double型。C)若一个操作数是float型,另一个是int型,则表达式结果为int型。D)若一个操作数是float型,另一个是double型,则表达式结果为float型。A)3.4关系运算符和关系表达式关系运算符用来比较两个操作数的关系。关系运算符的运算结果是boolean型。当运算符对应的关系成立时,运算结果是true,否则是false。不能用0或1来代替false或true。结果为数值型的变量或表达式可以通过关系运算符形成关系表达式,例如,4>8,(x+y)>80.关系运算符运算符用法返回true的情况>op1>op2op1大于op2>=op1>=op2op1大于或等于op2<op1<op2op1小于op2<=op1<=op2op1小于或等于op2==op1==op2op1与op2相同!=op1!=op2op1与op2不等3.4关系运算符和关系表达式例如:表达式15>18的值为false表达式15<18的值为true表达式15>=18的值为false表达式15<=18的值为true表达式15==18的值为false表达式15!=18的值为true例3.6“==”运算符publicclassOperatorsAndExpressions{voidequalsMethod(){

//基本数据类型之间的比较

inti=10,j=15; System.out.println(i==j);

//复合数据类型的数据之间的比较

Strings1=newString("Howareyou"); Strings2=newString("Howareyou"); System.out.println(s1==s2);}publicstaticvoidmain(Stringargs[]){

OperatorsAndExpressionsOperAndExp=newOperatorsAndExpressions(); OperAndExp.equalsMethod(); } }对于复合数据类型数据的“==“运算,其比较的目标是两个操作数是否是同一个对象。要比较两个对象的值是否相同,则用equals()方法。equals()方法在在Java的根类Object中其功能跟“==“运算符一样,是比较两个操作数是否是一个对象。equals()方法在自己定义的类中,功能也是跟“==”运算符一样,除非自己定义的类中重写了equals()方法。Java类库中许多子类都重写了equals()方法,使其功能变为比较两个操作数的内容是否一样。如String。Object类equals()的功能是比较两个对象是否是一个对象自己定义的类(没有重写equals())自己定义的类(重写了equals()方法)String等类equals()的功能是比较两个对象是否是同一个对象equals()的功能是比较两个对象的值是否相等例

3.7

符publicclassOperatorsAndExpressions{voidequalsMethod2(){

Strings1=newString("Hello"); Strings2=newString("Hello"); System.out.println(s1==s2); System.out.println(s1.equals(s2));

classMyValue{ inti; }

MyValuev1=newMyValue(); MyValuev2=newMyValue(); v1.i=v2.i=2009; System.out.println(v1.equals(v2)); }publicstaticvoidmain(Stringargs[]){}……}1.下列关于equals()方法和==运算符的说法,不正确的是()。equals()方法可以用来比较复合数据类型的数值是否相等。==运算符可以用来比较简单数据类型的数据值是否相等。==运算符和equals()方法的功能一样,可以相互替换。==运算符和equals()方法的功能不完全一样,不可以相互替换。C)练习classA{intb=0;}publicclassex65{ publicstaticvoidmain(Stringargs[]){ ex65t=newex65(); t.method(); } voidmethod(){ AA1=newA(); AA2=newA(); A1.b=A2.b=12; booleanb=A1.equals(A2); System.out.println(b); } }运行结果为()。A)trueB)falseC)1D)0B)3.5布尔逻辑运算符和布尔逻辑表达式逻辑运算符运算符用法含义结合方向&&||!op1&&op2op1||op2!op1逻辑与逻辑或逻辑非左到右左到右右到左布尔逻辑表达式有关系表达式和布尔运算符组成。,实现对关系表达式的值进行布尔逻辑运算,运算结果也是布尔型。&&、||是二元运算符,!为一元运算符。&&,||运算采用“短路”的方式计算。先计算出左侧表达式的值。(1)运算符&&左边的表达式值若为false,则不用计算右边的表达式的值,整个表达式的值为false。(2)运算符||左边的表达式值若为true,则不用计算右边的表达式的值,整个表达式的值为true。关系运算符和布尔逻辑运算符的优先级关系!优先级最高其次是>、>=、<、<=再次是==和!=然后&&优先级最低的是||使用括号可以改变优先级次序例3.10intx=10,y=8;booleanb=true;System.out.println(x>0&&x<y||b);System.out.println(x<y||!b);System.out.println(x==10&&y!=8);精题1.阅读下面的程序:

booleana=false;booleanb=true;booleanc=(a&&b)&&(!b);程序运行的结果是()。A)c=falseB)c=true2.表达式(12==0)&&(1/0<1)的值为()。3.表达式(3!=0)||(3.0/0.0<=2.0)的值为()。A)falsetrue4.布尔逻辑表达式!((true&&false)||false)的值为()。true3.6位运算符和位运算表达式运算符表达式含义~~op按位取反&op1&op2按位与|op1|op2按位或^op1^op2按位异或>>op1>>op2op1按位右移op2位<<op1<<op2op1按位左移op2位>>>op1>>>op2op1添零右移op2位位运算表达式由操作数和位运算符组成,实现对整数类型的二进制进行位运算。1.按位取反:~

例如:10111010取反后变为010001012.按位与:&

(1)按位与可以用来屏蔽特定的位(2)可以用来取某个数中某些指定的位例如:inttheBit=i&16;

//16的二进制为100003.按位或:|

(1)按位或可以用来置某些特定的位为1例如:将整型变量i的第4位和第5位置1,可用语句

intsetBit=i|24;//24的二进制为110004.按位异或:^

两个相应位相同则为0,否则为1.(1)可以使某个整型数的特定位的值翻转。例如:对整型变量i的第4位翻转

intrevert=i^8;//8的二进制为1000(2)可以不用临时变量完成两个值的交换例如:inta=15,b=24;//a(00001111),b(00011000)

a=a^b;//a(00010111),a=23

b=b^a;//b(00001111),b=15

a=a^b;//a(00011000),a=245.不同长度的数据进行位逻辑运算例如:x|y其中x为long型,y为int型(char)则系统首先会将y的左侧32位(48位)填满。(1)若y为正数,则左侧填满0;(2)若y为负数,则左侧填满1;

位逻辑运算表达式返回两个操作数中数据长度较长的数据类型。

6.补码的概念在Java语言中,二进制数用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的规定如下:

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

(2)对于负数,把该数绝对值的补码按位取反,然后对整个数加1。如-1的补码为11111111。

计算过程:1的补码:00000001

按位取反:11111110

加1:111111117.算术右移:>>

用来将一个数的二进制序列右移若干位。规则:低位舍弃,高位补入原来高位的值。右移一位相当于除2取商,用右移实现除法比除法运算速度要快。例如:a=00110111//a=55

a>>2=00001101//a>>2=138.算术左移:<<

用来将一个数的二进制序列左移若干位。规则:高位舍弃,低位补0。不溢出情况下,左移一位相当于乘2,用左移实现乘法比乘法运算速度要快。9.逻辑右移:>>>>>>和>>的区别是:执行运算时,>>>的操作数高位补0,而>>的操作数高位移入原来高位的值。10.位运算符的优先级:从高到低依次为:~、>>、<<、>>>、&、^、|。例3.11

inta=-67,b=116,c=78;

//a=10111101,b=01110100,c=01001110

intd=~a|b&c; inte=~c>>2&(a|~b); intf=a^b&c; System.out.println("d="+d); System.out.println("e="+e); System.out.println("f="+f);解析:inta=-67,b=116,c=78;

//a=10111101,b=01110100,c=01001110

intf=a^b&c;计算过程: b01110100 c01001110b&c01000100f11111001//最高位为1,所以是一个负数负数求补码的反过程:减1:11111000

取反:00000111//十进制为7

因为是负数,所以最后结果为:-7精题1.下列运算符中,不能进行位运算的是()2007.9A)>>B)>>>C)<<D)<<<2.阅读下面的程序:

publicclassTest2005{publicstaticvoidmain(Stringargs[]){ System.out.println(~(0xa5)&0xaa);} }

程序的运行结果是()。2006.4A)0xa5B)10C)0x50D)0xaaD)B)精题3.阅读下面的程序

publicclassTest{ publicstaticvoidmain(Stringargs[]){ System.out.println(89>>1);}}程序的运行结果是()。2006.4A)44B)45C)88D)904.表达式5&2的值为()。(十进制表示)5.表达式42<<4的值为()。(十进制表示)6.-2的补码为()。(二进制表示)A)067211111110精题7.实现将二进制数10011110第3位数值翻转的表达式为()。(操作数用二进制表示)8.实现将二进制11111111第3位和第7位保留,其余位全部清零的表达式为()(操作数用二进制表示)10011110^10011111111&010001003.7赋值运算符和赋值表达式赋值运算符(=)用于把一个表达式的值赋给某个变量。<变量><赋值运算符><表达式>在赋值运算符两侧的数据类型不一致时,如果左侧变量数据类型的级别高,则右侧的数据被转化为与左侧相同的高级数据类型后赋给左侧变量;否则,应强制转换类型使之与左侧的数据类型一致。高级=低级(自动)

低级=高级(强制)允许连续赋值,如:a=b=c=10;3.7赋值运算符和赋值表达式类型转换表源类型允许自动转换的目标类型byteshort,int,long,float,doubleshortint,long,float,doublecharint,long,float,doubleintlong,float,doublelongfloat,doublefloatdoubledouble

无boolean

无3.7赋值运算符和赋值表达式例如:

byteb=121;inti=b;//”=”左边是int型,右边是byte,自动转换

inta=13;byteb=(byte)a;//”=”左边是byte型,右边是int型,需强制类型转换

intj=i+1;在赋值符“=”前加上其它运算符,即构成扩展赋值运算符。

运算符用法等价表达式+=op1+=op2op1=op1+op2-=op1-=op2op1=op1–op2*=op1*=op2op1=op1*op2/=op1/=op2op1=op1/op2%=op1%=op2op1=op1%op2&=op1&=op2op1=op1&op2|=op1|=op2op1=op1|op2^=op1^=op2op1=op1^op2>>=op1>>=op2op1=op1>>op2<<=op1<<=op2op1=op1<<op2>>>=op1>>>=op2op1=op1>>>op2精题:

1、下列代码中,将引起编译错误的行是()2005.9(1)publicclassExercise{(2)publicstaticvoidmain(Stringargs[]){(3)floatf=0.0;(4)f+=1.0;(5)}(6)}A)第2行B)第3行C)第4行D)第6行B)精题:

2、执行如下语句之后,输出的结果是()

publicclassEx11{publicstaticvoidmain(Stringargs[]){intx=5,y=3;x+=x--*--y;System.out.println(x);}}A)12B)8C)15D)16C)

x=x+(x--*--y);精题:

3、执行如下语句之后,x的值是()

publicclassEx14{publicstaticvoidmain(Stringargs[]){intx=12;intm=x%5;x>>>=m;System.out.println(x);}}A)7B)3C)1D)0B)x=(x>>>m);3.8条件运算符和条件表达式条件运算符是三元运算符,用”?”和“:”表示。一般形式为:

expression1?expression2:expression3expression1是关系或布尔逻辑表达式,计算结果为布尔值。如果expression1的值为t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论