




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 Java语言基础 第2章Java语言基础 2 1认识Java语言2 2Java的词符集 TokenSet 2 3Java的基本数据类型2 4常量 变量 表达式2 5控制结构2 6数组2 7方法 2 6数组 数组类型属于复合数据类型 它是由类型相同的元素组成的有顺序的数据集合 特点 元素有顺序 所有元素共用一个名称 元素类型相同 灵活运用数组可以适当弥补因Java语言不支持指针而带来的麻烦 2 6 1数组的声明 格式 数组元素类型数组名 数组元素类型 数组名 举例 intarray int doublearray double String str Point P 注 在定义数组时不能指定它的长度 而是用new关键字来为数组分配内存 即创建数组 2 6 1数组的创建 在声明数组时不能指定其长度 而是利用new来为数组型变量分配内存空间 称之为创建数组 1 简单类型的数组intarray int array int newint 10 intarray int newint 10 intString str newString 10 数组创建后 系统自动为数组元素赋初值 P46 2 复合类型的数组分两步为数组元素分配空间 例如 定义一个Date类型的数组 Datemydate mydate newDate 10 为mydate分配10个引用空间 现在mydate 0 mydate 9 的值都是null接下来要为数组的每个元素分别分配空间mydate 0 newDate mydate 1 newDate 2 6 2数组的创建 2 6 3数组初值 数组元素的默认初值 整型 0实型 0 0f或0 0d字符 0 类对象 nullJava中可在定义数组的同时进行初始化 如 intarray int 1 2 3 4 5 6 7 String str Fortran QBasic C 2 6 3元素的引用 引用方式为 arrayName index 其中index为数组下标 它可以为整型常数或表达式 如 a 3 b 3 a i i为整型 c 6 i 等 2 6 4简单类型和引用类型 简单类型的特点 声明时自动分配空间 赋值操作将拷贝数值 引用类型的特点 声明时不分配空间 需要利用new完成空间分配 String隐含分配 赋值操作是地址的拷贝 publicclassReference publicstaticvoidmain Stringargs intbasic newint 5 intby ref by copy basic 1 100 basic 3 1000 printArray basic basic by ref basic printArray by ref by ref by ref 1 128 by ref 4 1024 printArray basic basic by copy newint 5 System arraycopy basic 0 by copy 0 basic length printArray by copy by copy publicstaticvoidprintArray Stringstr intdata System out print str for inti 0 i data length i System out print t data i System out println 2 6 5二维数组 1 二维数组的定义格式 typearrayName 例如 intArray 2 二多维数组分配内存空间的方法方法一 直接为每一维分配空间 如 inta newint 2 3 方法二 从最高维开始 分别为每一维分配空间 如 inta newint 2 3 a 0 newint 3 a 1 newint 5 注意 Java语言中 多维数组中每维数组的长度可以不同 对于复合类型的数组 还需要分别为每个元素分配空间 2 6 5二维数组 3 二维数组元素的引用格式 arrayName index1 index2 其中index1 index2可为整型常数或表达式 如a 2 3 等 同样 每一维的下标都从0开始 4 二维数组的初始化 1 直接对每个元素进行赋值 2 在定义数组的同时进行初始化 例如 inta 2 3 1 5 3 4 2 6 5数组应用示例 数组排序矩阵运算 publicclassWeatherFan public temperature newfloat 10 365 for inti 0 i temperature length i for intj 0 j temperature 0 length j temperature i j float 45 0 Math random 10 0 for inti 0 i temperature length i floataverage 0 0f for intj 0 j temperature 0 length j average temperature i j System out println Averagetemperatureatlocation i 1 average flaot temperature 0 length 2 7方法 2 7 1方法的定义 说明 2 7 2方法的调用2 7 3方法的参数2 7 4方法的返回值2 7 5方法体的局部变量2 7 6方法的递归2 7 7方法的重载2 7 8main 方法 方法 函数 过程方法 method 与函数 function 过程 procedure 有何不同 在C及C 语言里 函数与过程有点类似 这二者的写法都相同 都是一段程序代码 当程序调用函数或过程时 程序主权便会交给它们 等到其内的程序代码执行完毕 又将主权交回过程本身 但二者的不同在于 过程的回传值类型为void 意思是不回传任何值 而函数有回传值 类型并不为void 因着Java是完全对象化的语言 不允许单独的过程与函数存在 因而在Java中并没有使用函数与过程而是使用方法 方法必须存在一类 对象 中 2 7方法 2 7 1方法的定义 说明 修饰符 返回值类型方法名称 参数表 方法体 局部变量声明 语句系列 return 返回值 方法的定义是指描述一个方法所进行的操作过程 与其它高级语言的函数类似 它由方法头和方法体两部分组成 一般定义形式如下 在类中 属性是通过数据成员 变量 体现的 而操作是用成员函数 又称为方法 实现的 2 7 1方法的定义 说明 publicintarea intlength inewidth ints s length width 计算面积returns 面积值 方法定义示例 方法定义前面的修饰符用关键字表示 修饰符是可选的 用来说明方法的某些特性 方法修饰符包括以下几种 public修饰的方法可以由其他类访问 protected修饰的方法只能由继承关系的类访问 private修饰的方法只能由说明该方法的类访问 static修饰的方法为静态方法 又叫类方法 无static修饰的方法为对象方法 类方法是该类的所有对象共享的方法 abstract修饰的方法为抽象方法 尤其方法体 final修饰的方法为最终方法 不能由子类改变 synchronized修饰的方法执行之前给方法设置同步机制 实现线程同步 native修饰的方法为本地方法 即方法实现与本机系统有关 修饰符用关键字 2 7 1方法的定义 说明 2 7 2方法的调用 方法调用有两种基本形式 返回类型为void以独立的表达式语句调用System out println HelloWorld 返回类型不是void在表达式中作为一项因子出现s area 3 5 4 0 方法调用示例 例 定义一个类方法square 返回双精度数的平方 在主方法main 中调用这个方法 计算并输出0 0 0 1 0 2 1 0共11个数的平方值 2 7 2方法的调用 publicclassSquare 输出0 0到1 0共11个数的平方publicstaticvoidmain Stringargs doublea for intx 0 x 10 x a x 10 0 System out println a a a a square a 平方函数定义publicstaticdoublesquare doubley returny y 2 7 2方法的调用 2 7 3方法的参数形式 方法的参数可以是基本数据类型 数组和类对象 基本数据类型 值参传递数组 地址传递类对象 地址传递 方法的参数是基本类型 见前例 2 方法的参数是数组 方法参数是数组时 调用方法向被调用方法传递了数组的地址 实际参数的数组名称与方法定义中的形式参数的数组名称虽然不同 但指向内存同一处连续存储区 所以被调用的方法 通过传递过来的数组地址 可以改变调用方法开辟的数组内的元素值 2 7 3方法的参数形式 求最大数publicclassNoname1 publicvoidmain Stringargs doublemax doublea 0 2 5 6 7 88 20 3 24 1 67 2 max Arraymax a System out println Max max publicstaticdoubleArraymax doubleb doublemax b 0 for inti 1 i b length i if max b i max b i returnmax 2 7 3方法的参数形式 例题 数组排序 classArraySort publicstaticvoidmain Stringargs 主函数doublea 9 2 45 2 35 72 0 56 7 arrayPrint a arraySort a arrayPrint a 数组输出staticvoidarrayPrint doubleb for inti 0 i b length i System out print b i System out println 数组排序staticvoidarraySort doubleb for inti 0 ib j doublet b i b i b j b j t 2 7 3方法的参数形式 3 方法的参数是对象方法参数是类对象时 在方法体内可通过类的成员运算符 使用类的成员变量及成员方法 如 我们以的paint 方法为例 它的方法参数是Graphics类的类对象g 对象名称由调用者用标识符命名 publicvoidpaint Graphicsg 在方法体内使用类成员方法 如输出字符串的方法 g drawString HellloJava 10 30 2 7 4方法的返回值 方法的返回值是基本数据类型时 调用函数可用类型相同的一个变量接受返回值 方法的返回值是数组时 调用方法应该利用一个与方法返回值类型相同的数组名 接收方法的返回结果 方法的返回值是对象时 返回值是类的实例化对象 importjava awt Graphics publicclassReturnArrayextendsjava applet Applet publicvoidpaint Graphicsg intn 25 longFib newlong n Fib Fibonacci n paintArray g Fib 20 long Fibonacci intN longfibonacci newlong N fibonacci 0 0L fibonacci 1 1L for intf 2 f N f fibonacci f fibonacci f 1 fibonacci f 2 returnfibonacci voidpaintArray Graphicsg longdata intyPosition intxPos 20 for inti 0 i data length i g drawString data i xPos yPosition xPos 50 if i 1 7 0 xPos 20 yPosition 15 2 7 5方法的递归调用 递归方法有直接递归方法与间接递归方法 一个方法体中又调用自身 这种方法叫递归方法 更准确他说叫直接递归方法 如果方法体中调用的虽然不是自身 但是它间接地调用自身 这叫间接递归方法 递归的方式可以便问题的求解过程变得容易 用递归方式求解问题是将复杂问题分解为两部分 一部分是可以解决的 另一部分是不能解决的 分解出的不能解决的部分与原始问题类似 是原始问题的规模更小的一个 翻版 可以用解决原始问题的方式去解决这个分解出来的 部分 N N 1 Nlongfact intn if n 1 return1 elsereturnn fact n 1 例 用递归方法求N 1 2 3 4 n 求N的阶乘 递归法 importjava io classfact3 publicstaticvoidmain String args intn 0 bytech newbyte 20 try System out print 请输入N的值 System in read ch Strings newString ch n Integer parseInt s trim catch IOExceptione System out println n 的阶乘为 fact n staticlongfact intm longt 1 if m 1 t 1 elset m fact m 1 returnt 2 7 6方法体的局部变量 方法体内定义的变量称之为局部变量 仅在本方法内有效 如果某一局部变量与类的实例变量名称相同 则该实例变量在方法体内被暂时 屏蔽 起来 只有退出这个方法后 实例变量才起作用 每调用一次方法 都要动态地为方法的局部变量分配内存并初始化 方法体内不能定义静态变量 方法体内的任何语句块内都可以声明新的变量 这些变量仅在定义它的语句块内起作用 当语句块有嵌套时 内层语句块声明的变量不能与外层语句块的变量同名 否则会出现编译错误 方法体的局部变量 2 7 6方法体的局部变量 classScoping staticintx 1 实例变量publicstaticvoidmain Stringargs intx 5 主方法中的局部变量System out println 主方法中的局部变量x x a method 动态的局部变xb method 使用实例变量xa method 重新初始化动态的局部变量xb method 实例变量x保持它的值System out println n主方法中的局部变量x x 例题 变量作用域程序实例 2 7 6方法体的局部变量 staticvoida method intx 25 每次调用a method 都初始化动态的局部变量xSystem out println n进入a method 时的局部变量x x x System out println 退出a method 时的局部变量x x staticvoidb method System out println n进入b method 时的实例变量x x x 10 System out println 退出b method 时的实例变量x x 2 7 7方法的重载 在Java中 同一个方法名可以被定义多次 但要求参数表不能完全一样 调用方法时 系统是通过方法名和参数确定所调用的具体方法 这种现象叫做方法或函数的重载 例如 要打印不同类型的数据 int float String 需要定义不同名的方法 printInt int printFloat float printString String 利用方法重载 只需要定义一个方法名 println 接收不同的参数 println int println float println String 方法的重载 多态性 在同一个类中至少有两个方法用同一个名字 但有不同的参数 形式 同名方法 赋值于不同参数集合 调用机理 根据不同的参数状况 数量 类型 位置 系统自动调用相应的方法处理之 Application程序中 语法规定一个类有且仅有一个主方法main Stringargs 作为程序的起点入口 2 7 7方法的重载 Java方法设计原则 2 7 7方法的重载 方法设计的原则 高内聚低偶合 体现相对独立的功能 功能聚合度高 仅包括完成某一功能所需的成分 减少模块之间的交叉 保障完整性的体现 具有灵活的 可靠的数据参数结构 实现数据的输入输出能力 数据偶合性低 保证消息传递规范渠道 体现RE USE的概念 软件复用 例如 用4个重载方法area 计算不同的面积 圆 area double r 2矩形 area float float a b三角形 area int int c h 2梯形 area double double double dl d2 h 2上述各式中的符号为 r表示圆半径 a b表示矩形长和宽 c h表示三角形底和高 d1 d2 h表示梯形的上底 下底和高 classarea staticdoublearea doubler 求圆面积returnMath PI r r staticfloatarea floata floatb 求矩形面积returna b staticdoublearea intc inth 求三角
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安徽省辅警考试题库(附答案)
- 2025年《中华人民共和国行政处罚法》知识测试题库(附答案)
- 难点解析公务员考试《常识》专项测评练习题(含答案详解)
- 2025年中国计量大学单招《语文》过关检测试卷附参考答案详解(夺分金卷)
- 荆州理工职业学院妇产护理期末考试历年机考真题集附答案详解【巩固】
- 2025年辅警招聘考试考试综合练习含完整答案详解【易错题】
- 2025计算机三级通关考试题库附答案详解【培优B卷】
- 2025-2026学年度导游资格考试能力检测试卷附完整答案详解【历年真题】
- 2023年度公务员考试《常识》模拟试题附答案详解【突破训练】
- 2024年执法资格通关考试题库附参考答案详解【预热题】
- 九一八警钟长鸣强国有我+课件-2025-2026学年高一上学期爱国主义主题班会教育+-
- 反洗钱可疑交易识别课件
- 人教部编版小学三年级语文上册课后习题参考答案
- 光伏运维安全培训总结课件
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 体育原理课件
- 商务英语综合教程第一册ppt课件(完整版)
- DB23∕T 1019-2020 黑龙江省建筑工程资料管理标准
- fy13及on动手实验中文版factorytalk historian基础mi
- 电弧跟踪介绍
- 豆制品创新集聚产业园生产、加工、销售建设项目建议书写作模板-定制
评论
0/150
提交评论