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读取,它可以为Java API生成HTML文件。 Java的基础语法(2) java中的标识符 java中的包、类、方法、参数和变量的名字,可由任意顺 序的大小写字母、数字、下划线(_)和美元符号($)组成, 但标识符不能以数字开头,不能是关键字。 合法的标识符: indentifier username user_name _userName $username 非法的标识符: class 98.3 Hello World Java的关键字 abstractdoimplementprivatethis booleandoubleimportprotectedthrow breakelseinstanceof publicthrows byteextendintreturntransient casefalseinterfaceshorttrue catchfinallongstatictry charfianllynativestrictfpvoid classfloatnewsupervolatile continuefornullswitchwhile defaultif package synchronized 注:java 留做将来使用的goto, const 关键字,不能用作变量名 Java的常量(1) 整型常量 十进制(12),八进制(012),十六进制 (0x12) 长整型常量 13L 单精度浮点数 5.1f,.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位),数字大小为 -27 27-1 短整数类型 short 占用两个字节(16位),数字大小为 -215 215-1 整数类型 int 占用四个字节(32位),数字大小为 -231 231-1 长整数类型 long 占用八个字节(64位),数字大小为 -263 263-1 Java的变量(4) 单精度浮点类型 float 占用四个字节(32位),数字大小为1.4E-45 3.4E38F , 有效数位约为6 7位。 双精度浮点类型 double 占用八个字节(64位),数字大小为4.9E-324 1.7E308 , 有效数位约为14 15位。 字符类型 char 占用两个字节(16位),数字大小为0 216-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 primitivereferencenull charnumericbooleanclassinterface array integral floating-point byteshortintlongfloatdouble Java中的运算符 运算符的定义 运算符是一种特殊符号,用以表示数据的运 算、赋值和比较,一般由一至三个字符组成 。运算符共分以下几种: 算术运算符 赋值运算符 比较运算符 逻辑运算符 移位运算符 算术运算符 算术运算符中注意问题 “+”除字符串相加功能外,还能把非字符串转 换成字符串 ,如: “x”+123;的结果是“x123” 。 如果对负数取模,可以把模数负号忽略不记, 如:5%-2=1。但被模数是负数就另当别论了, 如:-7%2 = -1 对于除号“/”,它的整数除和小数除是有区别 的:整数之间做除法时,只保留整数部分而舍 弃小数部分。int x=3510;x=x/1000*1000;等于? 实际运行结果是3000 算术运算符的应用技巧 n思考题1:某个培训中心要为新到的学员安排房间,假设共 有x个学员,每个房间可以住6人,让你用一个公式来计算 他们要住的房间数? n思考题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:“ int y=3; if(x!=0 上面例子中,由于if语句的判断条件中的第一个布尔表达式是不成 立的,程序就不会判断第二个布尔表达式的值,这就是“短路”。如果 两个表达式之间用“ /x十进制为:-231 = -2147483648 int y=0x80000000; x=x1; y=y1; System.out.println(“0x800000001 = ” + Integer.toHexString(x); System.out.println(“0x800000001 = ” + Integer.toHexString(y); 运行结果如下:0x800000001 = 0xc0000000 /十进制为:-1073741824 0x800000001 = 0x40000000 /十进制为:1073741824 十六进制与二进的对比 0x8000000016 = 1000,0000, 0000, 0000, 0000, 0000, 0000, 0000 0xc000000016 = 1100,0000, 0000, 0000, 0000, 0000, 0000, 0000 0x4000000016 = 0100,0000, 0000, 0000, 0000, 0000, 0000, 0000 位运算注意问题(1) n 移位运算符适用类型有byte、short、char、int 、long n 对低于int型的操作数将先自动转换为int型再移 位 n 对于int型整数移位ab,系统先将b对32取模, 得到的结果才是真正移位的位数。例如:a33和 a1结果是一样的,a32的结果还是a原来的数字 n 对于long型整数移位时ab ,则是先将移位位 数b对64取模。 位运算注意问题(2) n 移位不会改变变量本身的值。如a1;在一行语 句中单独存在,毫无意义。 n 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; 语句的执行过程的区别 。 多个运算符的注意问题 n 对于int a =2; int b= a + 3 * a+;这样的语句 ,b最终等于多少呢? n 对于int a =2; int b= (3 * a+) + a;这样的语 句,b最终等于多少呢? n 对于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); 多个运算符的注意问题 与其去思考其中的原因,我们还不如将上面的第二句改为 几条语句来实现我们想要的结果。 不要在一行中编写太复杂的表达式,也就是不要在一行中 进行太多的运算 在一行中进行太多的运算并不能为你带来什么好处,相反 只能带来坏处,它并不比改成几条语句的运行速度快,它除 可读性差外,还极容易出错。 对于优先级顺序,不用刻意去记,有个印象就行。如果你 实在弄不清这些运算先后关系的话,就用括号或是分成

温馨提示

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

评论

0/150

提交评论