




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计,第二章数值计算与数组,学习目标,掌握八个原始类型理解标识符、变量和常量掌握声明变量和常量辨认、描述并使用Java运算符;确认boolean表达式和它们在控制构造中的要求;辨认赋值兼容性和在基本类型中的必要计算;掌握数组的声明及基本操作,2.1数据和变量声明,在程序中表示数据有两种方法,一种是在表达式中直接用原始值来表示,如表示数值5、-6、7.86等另外一种是用一个特定的名字来间接表示间接表示的最大优点在于可以重复使用一个名字来表达某种类型的数值。也就是说,为了使用名字来进行计算,必须事先为这个名字规定它可以表达的数值类型,例如整数、单精度实数、字符等.在Java语言中,所有的变量必须要首先声明,然后才能使用。,2.1.1标识符,在Java编程语言中,标识符是赋予变量、类或方法的名称。标识符可从一个字母、下划线(_)或美元符号($)开始,随后可跟除了在Java中作为运算符之外的任何可见字符所构成的连续字符串,但不能被空格或制表符隔开。标识符是大小写区别对待的并且未规定最大长度标识符不能是关键字,练习题,下面哪些是合法的标识符:$personsTwoUsers*pointthisendline,2.1.2Java关键字,2.1.3基本Java类型,Java的基本数据类型,2.1.4变量声明,Java属于强类型的程序设计语言。所有变量和表达式在编译时都有明确的类型修饰符类型变量名=初值,变量名=初值例如:intx0,y1,z=1;floata0f,b=0.1f;charc1,c2,c3=c;doubled1=1.0d;booleanmycom=true;,逻辑类型booleantruth=true;/声明一个布尔类型的变量,并初始化其值为truth字符类型使用char类型可表示单个字符。一个char代表一个16-bit无符号的(不分正负的)Unicode字符。一个char文字必须包含在单引号内()。at一个制表符u?一个特殊的Unicode字符。?应严格按照四个16进制数字进行替换,小测验,指出下面的错误声明,说明原因charch=AB;/单引号内只能包含一个字符charch1=“A”;/双引号表示界定的是一个字符串常量,整数类byte,short,int,long2十进制值是2077首位的0表示这是一个八进制的数值0 xBAAC首位的0 x表示这是一个16进制的数值默认整数类文字属int类型,除非在其后直接跟着一个字母“L”或者“l”,L表示一个long值。bytesmallOne=7;shortcount=10000;intscore=100;longbigone=999999999L,largeOne;,浮点float和double,如果一个数字文字包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数字文字为浮点。3.14一个简单的浮点值(adouble)4.02E23一个大浮点值2.718F一个简单的float长度值123.4E+306D一个大的带冗余D的double值以下是一个有关整数类型变量的声明和初始化:floatpi=3.1415926,score;doubleweight=123.4E+36D;,练习题,下面的哪些答案可以用以表示八进制值8。0100 x10080 x8,2.1.5变量初始化,八种基本数据类型变量的默认值如下:booleanfalsebyte0charu0000,空,Unicode码的0000short0int0long0Lfloat0.0fdouble0.0从JDK1.2(即Java2)起,变量只有在赋初始值以后才能使用。,进行下列变量说明初始值为0的int变量a初始值为1000的long变量b初始值为3.4的float变量c初始值为4的char变量ch初始值为true的boolean变量e,2.1.6转义字符,2.1.7常量,常量用法通常用在开发中用标识符来表示一个固定值,便于在程序中通过名称来引用。声明同时初始化finalintMAX_SPEED=200;先声明,随后初始化finalintMAX_SPEED;.MAX_SPEED=200;作为一种良好的编码习惯,常量名的定义一般均用大写来表示。,2.2运算符和表达式,表达式就是由变量、对象、运算符和方法调用构成的式子,表达式应该按照Java语法来构造,才可以被编译系统理解、执行,每个表达式都有一个某种类型的结果。,2.2.1运算符,一元运算符即支持前缀形式,也支持后缀形式。如:operatorop/前缀形式opoperator/后缀形式所有的二元运算符都采用中缀表示,运算符在两个操作数中间。op1operatorop2/中缀表示Java语言中只有一个三元运算符,也采用中缀表示。op1?op2:op3/中缀表示instanceof是Java编程语言特有的运算符,2.2.2算术表达式,程序:ArithmeticDemo.java根据Java语言规范,在进行算术运算中需要注意以下几个问题:只有整数类型的数据才可以进行取余运算,浮点数取余无法得出准确的结果。如10.1%3.3的结果可能为0.20000052。两个整数做除法运算时,结果是截取商数的整数部分,小数部分被丢弃。如果需要保留,应该对算术表达式进行强制类型转换。如1/2的结果是0,而(float)1/2)的结果是0.5,要注意(float)(1/2)的结果则是0,请读者考虑为什么。,强制类型转换在赋值的信息可能丢失的地方,编译器需要程序员用类型转换(typecast)的方法确认赋值。例如,它可以“挤压”一个long值到一个int变量中。显式转型做法如下:longbigValue=99L;intsquashed=(int)(bigValue);在上述程序中,期待的目标类型被放置在圆括号中,并被当作表达式的前缀,该表达式必须被更改。一般来讲,建议用圆括号将需要转型的全部表达式封闭。否则,转型操作的优先级可能引起问题。,算术表达式的结果类型,练习题,longbigval=6;intsmallval=99L;doublez=12.414Ffloatz1=12.414;,/6是一个int类型,允许/99L是long类型,不合法/12.414F是float类型,允许/12.414是double类型,不合法,设inta=1和doubled=1.0,写出下列表达式的结果a=46/9a=46%9+4*4-2a=45+43%5*(23*3%2)a=45+1+45*50%(-a)d=1.5*3+(+d)d=1.5*3+d+;a%=3/a+3,下列类型转换合法吗?charc=A;i=(int)c;booleanb=true;i=(int)b;floatf=1000.34f;inti=(int)f;,doubled=1000.34;i=(int)d;inti=1000;charc=(char)i;inti=1000;booleanb=(boolean)i,2.2.3关系和条件表达式,程序:RelationalDemo.java,条件运算符,x=1,则下列表达式的值(x1).System.out.println(a=+(+ch);/输出结果是a=bSystem.out.println(a=+(int)(+ch);/输出结果是a=99,2.3数组,数组的作用在于提供了一种用来处理一组同类型数据的存储和访问机制,因为在实际编程中,你无法为每一个这样的数据声明一个变量。在Java语言中,数组元素可以是基本类型,也可是对象。实际上,Java认为数组本身也是一个对象。,目标要求,数组的声明、创建、初始化数组元素的访问二维数组及多维数组不规则数组,2.3.1数组的声明,传统方式chars;Pointp,q;/Point是一个类类型,此处声明了两个数组现代方式chars;Pointp,q;,23.2创建数组,数组声明后并不是就可以直接使用了,要想使用必须要实际创建数组,为它分配实际的存储空间,然后才能存储元素。s=newchar20;p=newPoint100;也可在运行时,用变量表示数组的大小。inta;intlen=10;a=newintlen;注意:数组的大小一旦指定,就不可更改。,2.3.3初始化数组,初始化解决了当数组空间被分配时,如何填充空间的问题,而且预防了没有赋值就访问数组元素导致意外的情况。1.当创建一个数组时,每个元素都将被默认初始化。在上述char数组s的例子中,每个值都被初始化为0(u0000-null)字符;数值类型的数组元素默认值为0boolean类型的数组元素默认值为false对象类型的数组元素默认值为null在数组p的例子中,每个值都被初始化为null,表明它还未引用一个Point对象。在经过赋值p0=newPoint()之后,数组的第一个元素引用为实际Point对象。,2.Java编程语言允许使用下列形式快速创建数组,并完成初始化任务:Stringnames=“Georgianna”,“Jen”,“Simon”;其结果与下列代码等同:Stringnames;names=newString3;names0=“Georgianna”;names1=“Jen”;names2=“Simon”;,2.3.4访问数组,publicclassArrayAccessDemopublicstaticvoidmain(Stringargs)inta=1,3,7,2,6,5;for(inti=0;ia.length;i+)System.out.println(第+i+个元素值为+ai);,2.3.4访问数组cont.,注意:1.在Java编程语言中,所有数组的下标都从0开始。访问数组元素可以通过下标进行,如a5或者ai.2.一个数组中元素的数量被作为具有length属性的部分而被数组对象存储;这个值被用来检查所有运行时访问的界限。如果发生了一个越出界限的访问,那么运行时的报错(异常)也就出现了.,2.3.4访问数组cont.,存储元素到数组inta=newint10;a0=10;a5=2;a7=8;,小结:,数组就是一个具有固定长度的包容多个相同类型对象的数据结构。它的元素类型甚至可以是数组。数组的声明、创建和初始化可以分别完成,也可以一次完成。用来指示单个数组元素的下标必须总是从0开始。数组一旦创建后,其大小不可调整。可以用数组对象的length属性来获得该数组可以容纳的元素个数。可以通过下标(整数数值或整型变量)来引用数组内的指定位置的元素,下标不能超出数组元素个数。可使用相同的引用变量来引用一个全新的数组。,课堂练习,写出下面程序的运行结果classHappypublicstaticvoidmain(Stringargs)intindex=1;inta=newint3;intbas=aindex;intbaz=bas+indexSystem.out.println(abaz);,课堂练习(cont.),判断正确数组中的每个元素都是同样的类型数组的大小在声明之后就是固定的了数组的大小在创建后确定数组的元素必须是基本类型的,课堂练习(cont.),下面哪一个语句是有效的数组声明?inti=newint(30);doubled=newdouble30;Pointp=newPoint(1.30);inti=(3,4,5,7);charc=newchar();floatf=1.0f,1.5f,4.6f;doubled=newfloat30;,说出下面数组第3个元素的值inta=1,3,6,7,8;booleanb=newboolean10;floatf=1.4f,5.6f,7.0f,2.5f,3.6f;doubled=newdouble10;longl;,2.3.5多维数组,1多维数组Java编程语言没有像其它语言那样提供多维数组,因为一个数组可被声明为具有任何基础类型,所以你可以创建数组的数组(和数组的数组的数组,等等)。inttwoDim=newint4;twoDim0=newint5;twoDim1=newint5;twoDim2=newint5;twoDim3=newint5;上述数组的声明也可以修改为:inttwoDim=newint45;,2.不规则的多维数组inttwoDim=newint4;twoDim0=newint2;twoDim1=newint4;twoDim2=newint6;twoDim3=newint8;,3.一种非法的声明尽管多维数组的声明格式,允许方括号在变量名左边或者右边,但此种灵活性不适用于数组句法的其它方面。例如:newint4是非法的,因为这样的声明,编译器无法预先为之分配空间。4.多维数组的初始化类似一维数组的初始化,多维数组的初始化即可以在声明时直接初始化,也可以在创建时初始化。下面的例子演示了在声明时直接对数组进行初始化:intfactors=2,3,2,4,5,2,3,6,7;,课堂练习,声明并创建一个如下数组。包含3行,每行分别包含不同数目元素,元素数依次为5,4,6编写一个程序,逐个输出该数组的每个元素的默认初始值。,2.3.6操作数组复制、排序和查找,复制:在数组内查找一个具体的值,或者将一个数组复制到另一个数组等。System类提供的方法arraycopy(),程序排序和查找Arrays类提供的主要方法sort(.)升序排列bin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版石材原料采购与分销服务合同范本
- 2025二手印刷设备采购及后期维护保养合同
- 2025党支部与文化单位共建文化活动合作协议书范本
- 2025法院版离婚协议书标准文本与婚姻家庭法律援助手册
- 2025年个人住宅产权转让合同文本
- 2025年度电机产品在线监测与故障诊断服务合同
- 2025补充协议书格式:房地产租赁补充协议范本
- 2025年度户外广告设施维修简易施工合同
- 2025版限购政策下商品房预售合同模板下载
- 2025年度家庭用车租赁合作协议书
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人笔试备考试题及答案解析
- VTE的预防及护理
- 2025年济南市中考英语试题含答案
- Unit1单元复习课件人教版八年级英语上册
- 2025年青海省中考英语试卷真题(含答案及解析)
- 法官培训人民调解员讲稿
- 茶叶施肥技术课件
- 中文版儿童睡眠习惯问卷CSHQ 含评分维度
- 风电叶片修复技术方案和措施
- 互联网公司财务管理制度
- 2025至2030年中国电子级磷酸行业市场发展态势及未来趋势研判报告
评论
0/150
提交评论