收藏 分销(赏)

Java语言2 Java运算符与表达式.ppt

上传人:xrp****65 文档编号:13187579 上传时间:2026-02-01 格式:PPT 页数:35 大小:771.50KB 下载积分:10 金币
下载 相关 举报
Java语言2 Java运算符与表达式.ppt_第1页
第1页 / 共35页
Java语言2 Java运算符与表达式.ppt_第2页
第2页 / 共35页


点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Java,语言程序设计,资源与环境科学学院,第二章,Java,语言基础,Java,的,基础语法(1),Java,程序必须放在一个类中,J,ava,是严格区分大小写的,J,ava,是一种自由格式的语言,一条语句可以分成多行来书写。但是在换行时不能将一个单词分隔,一个字符串也不能分隔,如果一定要分隔字符串,那就要用号相连。,J,ava,程序有三种注释方式,/*/多行注释,/单行注释,/*/,文件注释,,这表明此后正文内容可以由自动文档生成器,javadoc,读取,它可以为,Java API,生成,HTML,文件。,Java,的,基础语法(2),java,中的标识符,java,中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是关键字。,合法的标识符:,indentifier,username,user_name,_userName,$username,非法的标识符:,class,98.3,Hello World,Java,的,关键字,abstract,do,implement,private,this,boolean,double,import,protected,throw,break,else,instanceof,public,throws,byte,extend,int,return,transient,case,false,interface,short,true,catch,final,long,static,try,char,fianlly,native,strictfp,void,class,float,new,super,volatile,continue,for,null,switch,while,default,if,package,synchronized,注:,java,留做将来使用的,goto,const,关键字,不能用作变量名,Java,的,常量(1),整型常量,十进制(12),八进制(012),十六进制(0,x12),长整型常量,13,L,单精度浮点数,5.1,f,.4f,0f,双精度浮点数,5.1,.4,,0d,布尔常量,true,和,false,Java,的,常量(2),字符常量,a,8,u0027,r,表示接受键盘输入,相当于按下了回车键;,n,是换行;,t,是制表符,相当于,table,键;,b,是退格键,相当于,Back Space;,是单引号,而“是双引号;,是一个斜杠“”。,字符串常量,“,Hello World“,”123”,Welcome nXXX,null,常量,null,常量只有一个值,用,null,表示,表示对象的引用为空,Java,的,常量(3),要声明常量,可在变量声明前加上关键字,final,,,并给变量指定一个初值。如,final,double PI=3.141592,final,boolean DEBUG=false,final,int PENALTY=25,实例程序:书,P21,Java,的变量(1),变量:,是系统为程序分配的一块内存单元,用来 存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据。,Java,的变量(2),数据类型,基本数据类型,引用数据类型,数值型,字符型(,char),布尔型(,boolean),整数类型,(,int,short,long),浮点类型(,float,double),类(,class),接口(,interface),数组,字节类型(,byte),Java,的变量(3),字节类型,byte,占用一个字节(8位),数字大小为-2,7,2,7,-1,短整数类型,short,占用两个字节(16位),数字大小为-2,15,2,15,-1,整数类型,int,占用四个字节(32位),数字大小为-2,31,2,31,-1,长整数类型,long,占用八个字节(64位),数字大小为-2,63,2,63,-1,Java,的变量(4),单精度浮点类型,float,占用四个字节(32位),数字大小为1.4,E-45,3.4E38F,,,有效数位约为6,7,位。,双精度浮点类型,double,占用八个字节(64位),数字大小为4.9,E-324 1.7E308,,有效数位约为14,15,位。,字符类型,char,占用两个字节(16位),数字大小为0,2,16,-1,,,是,unicode,编码。字符类型是一种基于整数的类型,可以直接算术运算,布尔类型,boolean,取值只有两个,,true,和,false,Java,类型转换,编译程序将会,检查数据类型,,防止两个不兼容的数据类型之间随意进行赋值,类型转换分两类:,自动类型转换(也叫隐式类型转换),某些数值的转换不需要强制进行,,Java,允许把一个较小的数据类型的值直接赋给一个具有较大范围的数据类型的变量。例,把整数类型的值赋给长整数类型的值。,强制类型转换(也叫显式类型转换),通过在表达式前面的圆括号中写入新的类型名,即可以把一个表达式强制转换成另一个数据类型。例:,float f=3.142F;,int t=(int)f;,变量的生命周期,变量要先定义,后使用,但不是在变量定义后的语句一直都能使用前面定义的变量。我们可以用大括号将多个语句包起来形成一个复合语句,变量只能在定义它的复合语句中使用。,public class TestScope,public static void main(String args),int x=12;,int q=96;,/x,和,q,都可用,int x=3;,System.out.println(x is+x);,System.out.println(q is+q);,q=x;,System.out.println(x is+x);,/,错误的定义,,Java,中不允许有这种嵌套定义,/,错误的行,只有,x,可用,,q,超出了作用域范围,Java,的类型系统,Java type system,primitive,reference,null,char,numeric,boolean,class,interface,array,integral,floating-point,byte,short,int,long,float,double,Java,中的运算符,运算符的定义,运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成。运算符共分以下几种:,算术运算符,赋值运算符,比较运算符,逻辑运算符,移位运算符,算术运算符,算术运算符中注意问题,“,+,”,除字符串相加功能外,,还能把非字符串转换成字符串,,如:,“,x,”,+123;,的结果是,“,x123,”,。,如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了,如:-7%2=-1,对于除号,“,/,”,,它的整数除和小数除是有区别的:,整数之间做除法时,只保留整数部分而舍弃小数部分,。,int x=3510;x=x/1000*1000;,等于,?,实际运行结果是3000,算术运算符的应用技巧,思考题1:,某个培训中心要为新到的学员安排房间,假设共有,x,个学员,每个房间可以住6人,让你用一个公式来计算他们要住的房间数?,思考题2:,假设你要让,x,的值在0至9之间循环变化,请写出相应的程序代码。,答案:(,x+5)/6。,这种算法还可用在查看留言板的分页显示上:其中,x,是总共的留言数,6是每页显示的留言数,结果就是总共有多少页。,答案:,int x=0;,while(true),x=(x+1)%10;,另一个编程实例,:,书,P25,赋值运算符,注1:,在,JAVA,里可以把赋值语句连在一起,如:,x=y=z=5;,在这个语句中,所有三个变量都得到同样的值5。,注2:,x+=3,等效于,x=x+3,,*=,-=,/=依此类推。,比较运算符,5,注1:,比较运算符的结果都是,boolean,型,也就是要么是,true,,要么是,false。,注2:,比较运算符,“=”,不能误写成,“=”,,切记!切记!,逻辑运算符,注1:,逻辑运算符用于对,boolean,型结果的表达式进行运算,运算的结果都是,boolean,型。,注2:,“,&,”,和,“,&,”,。,“,&,”,可作用于两个布尔操作数或两个整数操作数。作用于布尔操作数时,无论任何情况,,“,&,”,两边的表达式都会参与计算。如果使用,“,&,”,,当,“,&,”,的左边为,false,,则将不会计算其右边的表达式。,“,|,”,和,“,|,”,的区别与,“,&,”,和,“,&,”,的区别一样。,(位逻辑与),(位逻辑或),(位逻辑异或),(条件与),(条件或),见书:,P28,“&”和“&”的区别分析,public class TestAnd,public static void main(String args),int x=0;,int y=3;,if(x!=0&y=y/x),System.out.println(y=+y);,上面例子中,由于,if,语句的判断条件中的第一个布尔表达式是不成立的,程序就不会判断第二个布尔表达式的值,这就是,“,短路,”,。如果两个表达式之间用,“,&,”,来连接,如果正好碰到上面所示的特殊情况,就会出错。,位运算符,任何信息在计算机中都是以二进制的形式保存的,&,|,除了可以作为逻辑运算符,也可以做为位算符,它们对两个操作数中的每一个二进制位都进行运算。,只有参加运算的两位都为1,&运算的结果才为1,否则就为0。,只有参加运算的两位都为0,|运算的结果才为0,否则就为1。,只有参加运算的两位不同,运算的结果才为1,否则就为0。,位运算符,我们可以对数据按二进制位进行移位操作,,java,的移位运算符有三种:,右移,(带符号右移),带符号右移,空出高位改成最高位值。,无符号右移,(右移零填充),无符号位移,空出高位补,0.,“”和“”区别分析,public class ShiftTest,public static void main(String args),int x=0 x80000000;,/x,十进制为:-231=-2147483648,int y=0 x80000000;,x=x1;,y=y1;,System.out.println(,“,0 x800000001=,”,+Integer.toHexString(x);,System.out.println(,“,0 x800000001=,”,+Integer.toHexString(y);,运行结果如下:0,x800000001 =,0,xc0000000 /,十进制为:,-1073741824,0 x800000001=0 x40000000 /,十进制为:,1073741824,十六进制与二进的对比,0,x80000000,16,=1000,0000,0000,0000,0000,0000,0000,0000,0 xc0000000,16,=1100,0000,0000,0000,0000,0000,0000,0000,0 x40000000,16,=0100,0000,0000,0000,0000,0000,0000,0000,位运算注意问题(1),移位运算符适用类型有,byte、short、char、int、long,对低于,int,型的操作数将先自动转换为,int,型再移位,对于,int,型整数移位,ab,,系统先将,b,对32取模,得到的结果才是真正移位的位数。例如:,a33,和,a1,结果是一样的,,a32,的结果还是,a,原来的数字,对于,long,型整数移位时,ab,,则是先将移位位数,b,对64取模。,位运算注意问题(2),移位不会改变变量本身的值。如,a1;,在一行语句中单独存在,毫无意义。,x1,的结果和,x/2,的结果是一样的,,x2,和,x*4,的结果也是一样的。总之,一个数左移,n,位,就是等于这个数乘以2的,n,次方,一个数右移,n,位,就是等于这个数除以2的,n,次方。,请思考:,如何用程序实现求2的,x,次方?,答案:,y=1 x;,运算符号的优先级,我们可以使用括号改变运算赋的优先级,分析,int a=2;int b=a+3*a;,语句的执行过程 与,int a=2;int b=(a+3)*a;,语句的执行过程的区别。,多个运算符的注意问题,对于,int a=2;int b=a+3*a+;,这样的语句,,b,最终等于多少呢?,对于,int a=2;int b=(3*a+)+a;,这样的语句,,b,最终等于多少呢?,对于,int a=2;int b=(a+)+3*a;,这样的语句,,b,最终等于多少呢?,Java,的计算顺序规定,对于所有,二元运算符,(带两个操作数),,在计算右边的操作数之前,,总是应当,先全部计算出左边的操作数,。因此,,b+c*d,b,必须在指向乘法操作之前先行计算(因为对加法运算来说,乘法是它右边的操作数),试验得到的结果是,a=3,b=8。,试验得到的结果是,a=3,b=9。,试验得到的结果是,a=3,b=11。,多个运算符的注意问题,public class MathTest,/Java,应用程序由,main,方法开始执行,public static void main(String args),int a=2;,int b=a+3*a+;,System.out.println(a=+a);,System.out.println(b=+b);,多个运算符的注意问题,与其去思考其中的原因,我们还不如将上面的第二句改为几条语句来实现我们想要的结果。,不要在一行中编写太复杂的表达式,也就是不要在一行中进行太多的运算,在一行中进行太多的运算并不能为你带来什么好处,相反只能带来坏处,它并不比改成几条语句的运行速度快,它除可读性差外,还极容易出错。,对于优先级顺序,不用刻意去记,有个印象就行。如果你实在弄不清这些运算先后关系的话,就用括号或是分成多条语句来完成你想要的功能,因为括号的优先级是最高的。,本章总结,掌握,Java,的基础语法。,程序编写位置,大小写,注释方式,标识符,关键字。,掌握,Java,的常量和变量数据类型。,各数据类型所占字节数,数据表达范围,类型转换,变量的生命周期问题。,掌握,Java,的运算符。,算术运算符及注意问题,赋值运算符号,比较运算符,逻辑运算符,位运算符及注意问题。运算符的优先级及多个运算符的注意问题。,思考题,Java,有哪些数据类型,各数据类型所占字节数是多少?类型转换分为几类?,Java,有哪些运算符类型?使用时分别需要注意哪些问题?,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服