Java语言2Java运算符与表达式.ppt_第1页
Java语言2Java运算符与表达式.ppt_第2页
Java语言2Java运算符与表达式.ppt_第3页
Java语言2Java运算符与表达式.ppt_第4页
Java语言2Java运算符与表达式.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

Java语言程序设计,资源与环境科学学院,第二章Java语言基础,Java的基础语法(1),Java程序必须放在一个类中Java是严格区分大小写的Java是一种自由格式的语言一条语句可以分成多行来书写。但是在换行时不能将一个单词分隔,一个字符串也不能分隔,如果一定要分隔字符串,那就要用号相连。Java程序有三种注释方式/*/多行注释/单行注释/*/文件注释,这表明此后正文内容可以由自动文档生成器javadoc读取,它可以为JavaAPI生成HTML文件。,Java的基础语法(2),java中的标识符java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是关键字。,合法的标识符:indentifierusernameuser_name_userName$username,非法的标识符:class98.3HelloWorld,Java的关键字,注:java留做将来使用的goto,const关键字,不能用作变量名,Java的常量(1),整型常量十进制(12),八进制(012),十六进制(0 x12)长整型常量13L单精度浮点数5.1f,.4f,0f双精度浮点数5.1,.4,0d布尔常量true和false,Java的常量(2),字符常量a,8,u0027r表示接受键盘输入,相当于按下了回车键;n是换行;t是制表符,相当于table键;b是退格键,相当于BackSpace;是单引号,而“是双引号;是一个斜杠“”。字符串常量“HelloWorld“,”123”,WelcomenXXXnull常量null常量只有一个值,用null表示,表示对象的引用为空,Java的常量(3),要声明常量,可在变量声明前加上关键字final,并给变量指定一个初值。如finaldoublePI=3.141592finalbooleanDEBUG=falsefinalintPENALTY=25实例程序:书P21,Java的变量(1),变量:是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存中的数据。,Java的变量(2),Java的变量(3),字节类型byte占用一个字节(8位),数字大小为-2727-1短整数类型short占用两个字节(16位),数字大小为-215215-1整数类型int占用四个字节(32位),数字大小为-231231-1长整数类型long占用八个字节(64位),数字大小为-263263-1,Java的变量(4),单精度浮点类型float占用四个字节(32位),数字大小为1.4E-453.4E38F,有效数位约为67位。双精度浮点类型double占用八个字节(64位),数字大小为4.9E-3241.7E308,有效数位约为1415位。字符类型char占用两个字节(16位),数字大小为0216-1,是unicode编码。字符类型是一种基于整数的类型,可以直接算术运算布尔类型boolean取值只有两个,true和false,Java类型转换,编译程序将会检查数据类型,防止两个不兼容的数据类型之间随意进行赋值类型转换分两类:自动类型转换(也叫隐式类型转换)某些数值的转换不需要强制进行,Java允许把一个较小的数据类型的值直接赋给一个具有较大范围的数据类型的变量。例,把整数类型的值赋给长整数类型的值。强制类型转换(也叫显式类型转换)通过在表达式前面的圆括号中写入新的类型名,即可以把一个表达式强制转换成另一个数据类型。例:floatf=3.142F;intt=(int)f;,变量的生命周期,变量要先定义,后使用,但不是在变量定义后的语句一直都能使用前面定义的变量。我们可以用大括号将多个语句包起来形成一个复合语句,变量只能在定义它的复合语句中使用。,publicclassTestScopepublicstaticvoidmain(Stringargs)intx=12;intq=96;/x和q都可用intx=3;System.out.println(xis+x);System.out.println(qis+q);q=x;System.out.println(xis+x);,/错误的定义,Java中不允许有这种嵌套定义,/错误的行,只有x可用,q超出了作用域范围,Java的类型系统,Java中的运算符,运算符的定义,运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成。运算符共分以下几种:算术运算符赋值运算符比较运算符逻辑运算符移位运算符,算术运算符,算术运算符中注意问题,“+”除字符串相加功能外,还能把非字符串转换成字符串,如:“x”+123;的结果是“x123”。如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了,如:-7%2=-1对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。intx=3510;x=x/1000*1000;等于?,实际运行结果是3000,算术运算符的应用技巧,思考题1:某个培训中心要为新到的学员安排房间,假设共有x个学员,每个房间可以住6人,让你用一个公式来计算他们要住的房间数?思考题2:假设你要让x的值在0至9之间循环变化,请写出相应的程序代码。,答案:(x+5)/6。这种算法还可用在查看留言板的分页显示上:其中x是总共的留言数,6是每页显示的留言数,结果就是总共有多少页。,答案:intx=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:“inty=3;if(x!=0上面例子中,由于if语句的判断条件中的第一个布尔表达式是不成立的,程序就不会判断第二个布尔表达式的值,这就是“短路”。如果两个表达式之间用“/x十进制为:-231=-2147483648inty=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/十进制为:-10737418240 x800000001=0 x40000000/十进制为:1073741824十六进制与二进的对比0 x8000000016=1000,0000,0000,0000,0000,0000,0000,00000 xc000000016=1100,0000,0000,0000,0000,0000,0000,00000 x4000000016=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=1x;,运算符号的优先级,我们可以使用括号改变运算赋的优先级,分析inta=2;intb=a+3*a;语句的执行过程与inta=2;intb=(a+3)*a;语句的执行过程的区别。,多个运算符的注意问题,对于inta=2;intb=a+3*a+;这样的语句,b最终等于多少呢?对于inta=2;intb=(3*a+)+a;这样的语句,b最终等于多少呢?对于inta=2;intb=(a+)+3*a;这样的语句,b最终等于多少呢?,Java的计算顺序规定,对于所有二元运算符(带两个操作数),在计算右边的操作数之前,总是应当先全部计算出左边的操作数。因此,b+c*d,b必须在指向乘法操作之前先行计算(因为对加法运算来说,乘法是它右边的操作数),试验得到的结果是a=3,b=8。,试验得到的结果是a=3,b=9。,试验得到的结果是a=3,b=11。,多个运算符的注意问题,publicclassMathTest/Java应用程序由main方法开始执行publicstaticvoidmain(Stringargs)inta=2;intb=a+3*a+;System.out.println(a=+a);System.out.println(b=+b);,多个运算符的注意问题,与其去思考其中的原因,我们还不如将上面的第二句改为几条语句来实现我们想要的结果。不要在一行中编写太复杂的表达式,也就是不要在一行中进行太多的运算在一行中进行太多的运算并不能为你带来什么好处,相反只能带来坏处,它并不比改成几条语句的运行速度快,它除可读性差外,还极容易出错。对于优先级顺序,不用刻意去记,有个印象就行。如果你实在弄不清这些运算先后关系的话,就用括号或是分成多条语句来完成你想要的功能,因为括号的优先级是最高的。,本章总结,掌握Jav

温馨提示

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

最新文档

评论

0/150

提交评论