




免费预览已结束,剩余617页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计 课程框图 Java编程语言基础 入门 面向对象编程 标示符 关键字和数据类型 表达式和流程控制 数组 课程框图 续 开发图形用户界面 基于GUI的应用程序 GUI事件处理 建立JavaGUI 课程框图 续 高级Java编程 多线程 高级I O流 JavaApplet 第一章Java语言入门 4 java开发过程 1 java的历史 2 java的特点 3 配置开发工具SDK 5 java应用程序示例 6 javaApplet小应用程序示例 7 什么是JSP 第一节Java的历史 91年 sun公司的 Green 项目 开发一种面向家用电器市场的软件产品 由于对平台独立性和安全性的要求 产生了一种语言 oak 94年 随着Internet和WWW的迅猛发展 需要一种简练 小巧 与平台无关的语言 oak正好适合这个要求 oak的第一个应用 WebRunner浏览器95年 Molecule 注册oak失败 更名为java java和咖啡 HotJava浏览器 96年到现在 从jdk1 0 jdk1 5 发展异常迅速 遍布从企业应用到个人终端的各个方面 Java的历史 Java的应用 对众多Java追随者而言 Java无处不在 的理念在最近的一年中已经不仅仅是一句口号了 我们惊喜地看到 基于Java技术的内容已呈现在700多万Web网页上 可以在6 5亿多台桌面系统上观看这些内容 全球已有93家运营商采用Java技术配置移动通信应用 有3 5亿部Java电话 全球60 的PC桌面采用了最新Java版本 而Java技术也已一跃成为全球第一大领先开发平台 Java技术广泛用于各类器件 从智能卡和手持器件 到工作站和服务器 Java已成为网络计算的统一平台 这一全球性的发展趋势已成为不容纷争的事实 来自第七届中国Java技术及应用学术交流会 Java的应用 现在 第一个火星探测器已经成功登陆 国家宇航局的科学家们开始采用他们在地球上的控制系统 JamesGosling说 这显然是迄今为止Java应用中最酷的一举 Java之父JamesGosling说 现在Java已经帮助我们到达了火星 谁知道 JavaEverywhere 在将来会意味着什么呢 Java的应用 J2SE Java的应用 J2EE Java的应用 J2EE Java的应用 J2EE Java的应用 J2ME MobilePhone PDAJavaCard 第二节 java的特点 1 简单Java比C 简单 C 中许多容易混淆的概念 或者被Java弃之不用 或者更清楚更容易理解的方式实现 例如没有指针 2 面向对象Java语言的设计集中于对象及其接口 它提供了简单的类机制以及动态的接口模型 对象中封装了它的状态变量以及相应的方法 实现了模块化和信息隐藏 而类则提供了一类对象的原型 并且通过继承机制 子类可以使用父类所提供的方法 实现了代码的复用 3 与平台无关严格的语言定义 没有 依据机器的不同而不同 或 由编译器决定 等字眼 最后的目标码都是一致的 4 解释型Java编译器生成与体系结构无关的字节码指令 只要安装了Java运行时系统 Java程序就可在任意的处理器上运行 这些字节码指令对应于Java虚拟机中的表示 Java解释器得到字节码后 对它进行转换 使之能够在不同的平台运行 5 多线程Java提供现成的类Thread 只要继承这个类就可以编写多线程的程序 多线程机制使应用程序能够并行执行 而且同步机制保证了对共享数据的正确操作 通过使用多线程 程序设计者可以分别用不同的线程完成特定的行为 而不需要采用全局的事件循环机制 这样就很容易地实现网络上的实时交互行为 6 安全Java小应用程序被限制在java运行环境中 不允许它访问计算机的其他部分 第三节配置开发工具SDK 安装JDK直接运行 j2sdk 1 4 2 08 windows i586 p exe 按照安装向导进行安装 安装JDK后产生如下目录结构 bin目录 Java开发工具 包括Java编译器 解释器等 demo目录 一些实例程序 lib目录 Java开发类库 jre目录 Java运行环境 包括Java虚拟机 运行类库等 Javabin目录中包括 Javac Java编译器 用来将java程序编译成Bytecode Java Java解释器 执行已经转换成Bytecode的java应用程序 Jdb Java调试器 用来调试java程序 Javap 反编译 将类文件还原回方法和变量 javadoc 文档生成器 创建HTML文件 Appletviewer Applet解释器 用来解释已经转换成Bytecode的java小应用程序 设置环境变量 PATHC j2sdk1 4 2 08 bin SetCLASSPATH C j2sdk1 4 2 08 jre lib rt jar 第四节java开发过程 Java是一种解释型的 面向对象的编程语言 javac exejava exe或浏览器 运行Java程序的基本过程 1 利用编辑器编写Java源程序源文件名 主类名 java2 利用编译器将源程序编译成字节码字节码文件名 源文件名 class3 利用虚拟机 解释器 运行工作过程 载入 代码校验 解释执行例如 javacHello javajavaHello JavaApplet 小应用程序 不是一个完整的应用程序 而是框架程序中的一个模块 所以只能在WWW浏览器环境下运行 JavaApplication Java应用程序 是一个完整的应用程序 可以独立地运行 Java程序的分类 第五节java应用程序示例 Java应用程序基本结构 Java应用程序示例 publicclassHello publicstaticvoidmain Stringargs System out println 你好 很高兴学习Java 假设保存Hello java在C 1000下 编译源文件C 1000 javacHello java如果编译成功 你的目录1000下就会有Hello class字节码文件了 执行C 1000 javaHello 类的个数 至少一个类 最多只能有一个public类源文件命名 若有public类 源文件必须按该类命名标识符 区分大小写声明一个类 类名中第一个单词的首字母大写 其后各单词首字母小写 声明一个方法 方法名中第一个单词的首字母小写 其后各单词首字母大写 javac exe编译含有public的类java exe解释含有main 的类 publicclassPeople floathight weight Stringhead ear mouth voidspeak Strings System out println s classA publicstaticvoidmain Stringargs peoplezhubajie zhubajie newPeople zhubajie weight 200f zhubajie hight 1 70F zhubajie head 大头 zhubajie ear 两只大耳朵 zhubajie mouth 一只大嘴 System out println 重量 zhubajie weight 身高 zhubajie hight System out println zhubajie head zhubajie mouth zhubajie ear zhubajie speak 师傅 咱们别去西天了 改去月宫吧 第六节javaapplet小应用程序示例 Javaapplet小应用程序基本结构 importjava applet importjava awt publicclassBoyextendsApplet publicvoidpaint Graphicsg g setColor Color red g drawString 我一边喝着咖啡 一边学java呢 5 30 g setColor Color blue g drawString 我学得很认真 10 50 Javaapplet小应用程序示例 注 继承Applet的类是主类 且没有main方法 编译 C 1000 javacBoy javaJavaApplet必须由浏览器来运行 编写一个html文件 通知浏览器运行我们的JavaApplet 我们使用记事本编辑如下 使用浏览器打开文件Boy html来运行小程序 Javaapplet工作原理 HTML文件嵌入Applet www服务器 www服务器 www浏览器 请求HTML文件 下载HTML文件 请求Applet字节码 下载Applet字节码 解释执行Applet字节码 第七节什么是JSP JSP是JavaServerPages的缩写 是由Sun公司1999于年推出的一种动态网页技术标准 JSP是基于JavaServlet以及整个Java体系的Web开发技术 利用这一技术可以建立安全 跨平台的先进动态网站 要想真正地掌握JSP技术 必须有较好的Java基础 但学习Java的目的并不只是为了掌握JSP SDK结构 第二章标识符 关键字和数据类型 2 1标识符和关键字2 2Java语言的基本数据类型2 3Java的数组 第一节java的标识符 Java标识符命名规范 由字母 数字 和 组成 长度不限 其中字母可以是大写或小写的英文字母 数字为0到9 标识符的第一个字符不能是数字 标识符区分大小写 标识符用来命名变量 符号常量 数组 方法 类 对象 接口 包等 为了提高程序的可读性 标识符最好 见名知义 而且规范大小写的使用方式 例如 合法的标识符identifieruserNameUser Name sys val change非法的标识符2mailroom class 第二节java的关键字 关键字又称保留字 是Java语言规定了特定含义的标识符 用户只能按照系统规定的方式使用 不能自行定义 关键字一律用小写字母表示 Java中的关键字有50个 按用途划分为 数据类型 语句 修饰 方法 类 接口 包 保留关键字 abstractbreakbytebooleancatchcaseclasscharcontinuedefaultdoubledoelseextendsfalsefinalfloatforfinallyifimportimplementsintinterfaceinstanceoflonglengthnativenewnullpackageprivateprotectedpublicreturnswitchsynchronizedshortstaticsupertrytruethisthrowthrowsthreadsafetransientvoidwhile 第三节java的数据类型 1 逻辑类型常量 true false 变量的定义 使用关键字boolean来定义逻辑变量例 booleanx booleantom 12 2 整数类型常量 123 6000十进制 077 八进制 0 x3ABC 十六进制 整型变量的定义分为4种 1 int型使用关键字int来定义int型整型变量例 intx 2 字节型使用关键字byte来定义byte型整型变量例 bytex bytetom 12 3 短整型使用关键字short来定义short型整型变量例 shortx shorttom 12 4 长整型使用关键字long来定义long型整型变量例 longx longtom 123 字符类型常量 A b 9 好 t 14 Java使用unicode字符集 所以常量共有65535个 变量的定义 使用关键字char来定义字符变量例 charx chartom 12 例子2 1 publicclassExample2 1 publicstaticvoidmain Stringargs charchinaWord 你 japanWord intp1 36328 p2 38358 System out println 汉字 你 在unicode表中的顺序位置 int chinaWord System out println 日语 在unicode表中的顺序位置 int japanWord System out println unicode表中第20328位置上的字符是 char p1 System out println unicode表中第12358位置上的字符是 char p2 4 浮点类型 实型 浮点型分两种 1 float型常量 123 5439f 12389 987F 123 0f 2e40f f不可省略 变量的定义 使用关键字float来定义float型变量例 floatx floattom 12 2 double型常量 12389 5439d d可以省略 12389908 987 123 0 6e 140 6乘10的 140次方 科学计数法 变量的定义 使用关键字double来定义double型变量例 doublex doubletom 12 Java是强类型语言 当将占位数少的类型赋值给占位数多的类型时 Java自动使用隐式类型转换 低 高byte short char int long float double当把在级别低的变量的值赋给级别高的变量时 系统自动完成数据类型的转换 例如 floatx 100 如果输出x的值 结果将是100 0例如 intx 50 floaty y x 如果输出y的值 结果将是50 0 当把在级别高的变量的值赋给级别底变量时 必须使用显示类型转换运算 显示转换的格式 类型名 要转换的值例如 intx int 23 89 longy long 34 98F 如果输出x y的值将是23和34 强制转换运算可能导致精度的损失 例2 publicclassExample2 2 publicstaticvoidmain Stringargs bytea 120 shortb 255 intc 2200 longd 8000 floatf doubleg 123456789 123456789 b a c int d f float g 导致精度的损失 System out print a a System out println b b System out print c c System out println d d System out println f f System out println g g 2 3 1声明数组声明一维数组有下列两种格式 数组元素类型数组名字 数组元素类型 数组名字 声明二维数组有下列两种格式数组元素类型数组名字 数组元素类型 数组名字 例如 floatboy double girl charcat floata double b chard 2 3 2创建数组为数组分配内存空间的格式如下 数组名字 new数组元素的类型 数组元素的个数 例如 boy newfloat 7 声明数组和创建数组可以一起完成 例如 floatboy newfloat 7 二维数组和一维数组一样 在定义之后必须用new运算符分配内存空间 例如 intmytwo mytwo newint 3 5 或intmytwo newint 3 4 注 和C语言不同的是 Java允许使用int型变量指定数组的大小 2 3 3数组元素的使用一维数组通过下标符访问自己的元素 如 boy 0 boy 1 等 二维数组也通过下标符访问自己的元素 如 a 0 1 a 1 2 等 注 1 需要注意的是下标从0开始 2 表示数组长度的格式 数名 length 2 3 4 数组的初始化创建数组后 系统会给每个数组元素一个默认的值 如 float型是0 0 我们在声明数组时同时也还可以给数组的元素一个初始值 如 floatboy 12 3f 23 89f 2 0f 23f 578 98f 上述语句相当于 floatboy newfloat 5 boy 0 12 3f boy 1 23 89f boy 2 2 0f boy 3 23f boy 4 578 98f 例如 Strings we are hello 123 who publicclassExample2 3 publicstaticvoidmain Stringargs inta 100 200 300 intb 10 11 12 13 14 15 16 b a b 0 123456 System out println 数组a a 0 a 1 a 2 System out println 数组b b 0 b 1 b 2 System out println 数组b的长度 b length 第三章运算符 表达式和语句 1 运算符与表达式2 语句2 1java语言的控制语句2 2循环语句 第一节运算符与表达式 1 算术运算符与算术表达式 1 加减运算符 例如 2 39 908 98 23等 2 乘 除和求余运算符 例如 2 39 908 98 23等 2 自增 自减运算符 3关系运算符与关系表达式 4逻辑运算符与逻辑表达式 5 赋值运算符与赋值表达式6 位运算符 1 按位与 运算符例如 a00000000000000000000000000000111b10000001101001011111001110101011 c00000000000000000000000000000011 2 按位或 运算符 3 按位非 运算符 4 按位异或 运算符 例子1 classExample3 1 publicstaticvoidmain Stringargs chara1 十 a2 点 a3 进 a4 攻 charsecret 8 a1 char a1 secret a2 char a2 secret a3 char a3 secret a4 char a4 secret System out println 密文 a1 a2 a3 a4 a1 char a1 secret a2 char a2 secret a3 char a3 secret a4 char a4 secret System out println 原文 a1 a2 a3 a4 例子2 classExample3 2 publicstaticvoidmain Stringargs intx y 10 if x 0 0 y 20 20 System out println 现在y的值是 y inta b 10 if a 0 0 b 20 20 System out println 现在b的值是 b 7instanceof运算符8运算符综述 第二节语句1 语句概述 1 方法调用语句 如 System out println Hello 2 表达式语句 如 x 23 3 复合语句 z 23 x System out println hello 4 控制语句 5 package语句和import语句 2 Java语言的控制语句 1 条件语句a if语句if语句的一般形式 if 表达式 若干语句 例子3 publicclassExample3 3 publicstaticvoidmain Stringargs inta 9 b 5 c 7 t if a b t a a b b t if a c t a a c c t if b c t b b c c t System out println a a b b c c b if else语句if else语句的一般格式 if 表达式 若干语句 else 若干语句 注 if和else后面的复合句里如果只有一个语句 可以省略不写 但为了增强程序的可读性最好不要省略 有时为了编程的需要 else或if后面的大括号里可以没有语句 例子4 publicclassExample3 4 publicstaticvoidmain Stringargs intmath 65 english 85 if math 60 System out println 数学及格了 else System out println 数学不及格 if english 90 System out println 英语是优 else System out println 英语不是优 if math 60 c if语句的扩充形式if 表达式1 语句1elseif 表达式2 语句2 elseif 表达式n 语句n 2 switch开关语句switch语句是多分支的开关语句 它的一般格式定义如下 switch 表达式 case常量值1 若干个语句break case常量值2 若干个语句break case常量值n 若干个语句break default 若干语句 例子5 importjava applet importjava awt publicclassExample3 5extendsApplet publicvoidpaint Graphicsg intx 2 y 1 switch x y case1 g setColor Color red g drawString iam1 5 10 break case2 g setColor Color blue g drawString iam2 5 10 break case3 g setColor Color green g drawString iam3 5 10 break default g drawString 没有般配的 5 10 3 循环语句 1 for循环语句for 表达式1 表达式2 表达式3 若干语句 例子6 求从1加到100的和importjava applet importjava awt publicclassExample3 6extendsApplet publicvoidpaint Graphicsg intsum 0 for inti 1 i 100 i sum sum i g drawString sum sum 10 20 例子7 求10的阶乘importjava applet importjava awt publicclassExample3 7extendsApplet publicvoidpaint Graphicsg longjiecheng 1 for inti 10 i 1 i jiecheng jiecheng i g drawString 10的阶乘是 jiecheng 10 20 2 while循环一般格式 while 表达式 若干语句 3 do while循环一般格式 do 若干语句 while 表达式 例子8 classExample3 8 publicstaticvoidmain Stringargs doublesum 0 a 1 inti 1 while i 20 a a 1 0 i sum sum a i i 1 System out println sum sum 4 在循环体中使用语句break和语句continue 例子9 classExample3 9 publicstaticvoidmain Stringargs intsum 0 i j for i 1 ij 2 System out println j 是素数 break与continue练习 classExample1 publicstaticvoidmain Stringargs intsum o for inti 0 i 10 i sum I if i 5 break System out println sum sum classExample2 publicstaticvoidmain Stringargs for inti 0 i0 continue 第四章面向对象程序设计 4 1编程语言的几个发展阶段4 2类4 3对象4 4static关键字4 5this关键字4 6包4 7访问权限4 8类的继承4 9对象的上转型对象4 10多态性 4 11abstract类和abstract方法4 12super关键字4 13接口4 14内部类4 15匿名类4 16异常类4 17Class类4 18基本类型的类包装4 19反编译和文档生成器4 20jar文件 4 1编程语言的几个发展阶段 机器语言 如汇编语言 计算机处理信息的早期语言是所谓的机器语言 这种语言中的指令都是由0 1组成的序列 称这样的序列为一条机器指令 过程语言语言把代码组成叫做过程或函数的块 每个块的目标是完成某个任务 例如 一个C的源程序就是由若干个书写形式互相独立的函数组成 面向对象编程面向对象编程主要体现下列三个特性 1 封装性2 继承3 多态Java语言是面向对象语言 它的源程序是由若干个类组成 源文件是扩展名为 java的文本文件 4 2类 类是组成Java程序的基本要素 类封装了一类对象的状态和方法 类是用来定义对象的模板 类的实现包括两部分 类声明和类体 4 2 1 类的声明使用class关键字classPeople classZhiwu 4 2 2类体写类的目的是为了描述一类事物共有的属性和功能 描述过程由类体来实现 类声明之后的一对大括号 以及它们之间的内容称做类体 大括号之间的内容称做类体的内容 类体的内容由两部分构成 一部分是变量的定义 用来刻画属性 另一部分是方法的定义 用来刻画功能 例如 class梯形 float上底 下底 高 ladderArea 变量定义部分 float计算面积 方法定义ladderArea 上底 下底 高 2 0f returnladderArea void修改高 floath 方法定义高 h 4 2 3成员变量和局部变量成员变量 在类体当中 在方法体之外所定义的变量被称为类的成员变量 局部变量 在方法体中定义的变量和方法的参数被称为局部变量 成员变量在整个类内都有效 局部变量只在定义它的方法内有效 classSum intdistance intfind inta 12 distance a 合法 distance在整个类内有效 returndistance voidg inty y a 非法 因为a以失效 而方法g内又没有定义变量a 如果局部变量的名字与成员变量的名字相同 则成员变量被隐藏 即这个成员变量在这个方法内暂时失效 classTom intx 98 y voidf intx 3 y x 我们已经知道 如果局部变量的名字与成员变量的名字相同 则成员变量被隐藏 这时如果想在该方法内使用成员变量 必须使用关键字this class三角形 floatsideA sideB sideC lengthSum voidsetSide floatsideA floatsideB floatsideC this sideA sideA this sideB sideB this sideC sideC 成员变量又分为实例成员变量和类成员变量 实例成员变量 对象所拥有的变量 类成员变量 类所拥有的变量 由static关键字修饰 例 classdog floatx staticinty 4 2 4方法 我们已经知道一个类的类体由两部分组成 变量的定义和方法的定义 方法的定义包括两部分 方法声明和方法体 方法参数在整个方法内有效 方法内定义的局部变量从它定义的位置之后开始有效 如果局部变量的定义是在一个复合语句中 那么该局部变量的有效范围是该复合语句 即仅在该复合语句中有效 如果局部变量的定义是在一个循环语句中 那么该局部变量的有效范围是该循环语句 即仅在该循环语句中有效 写一个方法和C语言中写一个函数类似 只不过在这里称做方法 方法定义返回类型方法名 参数 方法体 与C语言中的函数极其类似 方法返回的数据的类型可以是任意的Java数据类型 当一个方法不需要返回数据时 返回类型必须是void classTrangle doublesizdA siddB siddC voidsetSide doublea doubleb doublec sideA a sideB b sideC c doublegetSideA returnsideA doublegetSideB returnsideB doublegetSideC returnsideC 4 2 5方法重载方法重载的意思是 一个类中可以有多个方法具有相同的名字 但这些方法的参数必须不同 即或者是参数的个数不同 或者是参数的类型不同 classArea floatgetArea floatr return3 14f r r doublegetArea floatx inty returnx y floatgetArea intx floaty returnx y doublegetArea floatx floaty floatz return x x y y z z 2 0 4 2 6构造方法构造方法是一种特殊方法 它的名字必须与它所在的类的名字完全相同 并且不返回任何数据类型 即它是void型 void可以省略不写 class梯形 float上底 下底 高 梯形 上底 60 下底 100 高 20 梯形 floatx inty floath 上底 x 下底 y 高 h 4 2 7类方法和实例方法我们已经知道 成员变量可分为实例变量和类变量 同样 类中的方法也可分为实例方法和类方法 声明类方法就是在方法声明前加static关键字 4 2 8注意 对成员变量的操作只能放在方法中 方法可以对成员变量和方法体中自己定义的局部变量进行操作 在定义类的成员变量时可以同时赋予初值 classA inta 12 floatb 12 56f 但是不可以这样做classA inta floatb a 12 非法b 12 56f 非法 因为类体的内容由成员变量的定义和方法的定义两部分组成 如classA inta floatb voidf intx y x 34 y 23 a 12 b 12 56f 实例方法既能对类变量操作也能对实例变量操作 而类方法只能对类变量进行操作 classA inta staticintb voidf intx inty a x 合法 b y 合法 staticvoidg intz b 23 合法 a z 非法 一个类中的方法可以互相调用 实例方法可以调用该类中的其它方法 类中的类方法只能调用该类的类方法 不能调用实例方法 4 3 对象对象 类是创建对象的模板 对象是类的实例化表现 当使用一个类创建了一个对象时 我们也说我们给出了这个类的一个实例 4 3 1创建对象创建一个对象包括对象的声明和为对象分配内存两个步骤 1 声明对象类的名字对象名字 如 PeoplezhangPing 2 为对象分配内存使用new运算符和类的构造方法为声明的对象分配内存 如果类中没有构造方法 系统会调用默认的构造方法 默认的构造方法是无参数的 如 zhangPing newPeople 例子4 1classXiyoujiRenwu floatheight weight Stringhead ear hand foot mouth voidspeak Strings System out println s classA publicstaticvoidmain Stringargs XiyoujiRenwuzhubajie zhubajie newXiyoujiRenwu 例子4 2classPoint intx y Point inta intb x a y b publicclassA publicstaticvoidmain Stringargs Pointp1 p2 p1 newPoint 10 10 p2 newPoint 23 35 3 对象的内存模型使用例子1来说明对象的内存模型classXiyoujiRenwu floatheight weight Stringhead ear hand foot mouth voidspeak Strings System out println s classA publicstaticvoidmain Stringargs XiyoujiRenwuzhubajie 声明对象zhubajie newXiyoujiRenwu 为对象分配内存 使用new运算符和默认的构造方法 声明对象时的内存模型 当用XiyoujiRenwu类声明一个变量 即对象zhubajie时 如例子1中的对象zhubajie XiyoujiRenwuzhubajie 内存模型如左图所示 对象分配内存后的内存模型 当系统见到 zhubajie newXiyoujiRenwu 时 就会做两件事 为height weight head ear mouth hand foot各个变量分配内存 即XiyoujiRenwu类的成员变量被分配内存空间 然后执行构造方法中的语句 new运算符在为变量height weight head ear mouth hand foot分配内存后 将返回一个引用给对象变量zhubajie 3 创建多个不同的对象一个类通过使用new运算符可以创建多个不同的对象 这些对象将被分配不同的内存空间 因此 改变其中一个对象的状态不会影响其他对象的状态 4 3 2使用对象对象创建之后 就有了自己的变量 即对象的实体 通过使用运算符 对象可以实现对自己的变量的访问 对象创建之后 可以使用运算符 调用创建它的类中的方法 从而产生一定的行为功能 当对象调用类中的一个方法时 方法中的局部变量被分配内存空间 方法执行完毕 局部变量即刻释放内存 例子4 3classXiyoujiRenwu floatheight weight Stringhead ear hand foot mouth voidspeak Strings head 歪着头 System out println s classExample4 3 publicstaticvoidmain Stringargs XiyoujiRenwuzhubajie sunwukong 声明对象 zhubajie newXiyoujiRenwu 为对象分配内存 使用new运算符和默认的构造方法 sunwukong newXiyoujiRenwu zhubajie height 1 80f 对象给自己的变量赋值 zhubajie weight 160f zhubajie hand 两只黑手 zhubajie foot 两只大脚 zhubajie head 大头 zhubajie ear 一双大耳朵 zhubajie mouth 一只大嘴 sunwukong height 1 62f 对象给自己的变量赋值 sunwukong weight 1000f sunwukong hand 白嫩小手 sunwukong foot 两只绣脚 sunwukong head 绣发飘飘 sunwukong ear 一对小耳 sunwukong mouth 樱头小嘴 System out println zhubajie的身高 zhubajie height System out println zhubajie的头 zhubajie head System out println sunwukong的重量 sunwukong weight System out println sunwukong的头 sunwukong head zhubajie speak 俺老猪我想娶媳妇 对象调用方法 System out println zhubajie现在的头 zhubajie head sunwukong speak 老孙我重1000斤 我想骗八戒背我 对象调用方法 System out println sunwukong现在的头 sunwukong head 例子4 4class梯形 float上底 下底 高 梯形 上底 60 下底 40 高 20 梯形 floatx floaty floath 上底 x 下底 y 高 h float计算面积 float面积 面积 上底 下底 高 2 0f return面积 void修改高 floatheight 高 height float获取高 return高 classExample4 4 publicstaticvoidmain Stringargs 梯形laderOne new梯形 laderTwo new梯形 2 0f 3 0f 10 System out println laderOne的高是 laderOne 获取高 System out println laderTwo的高是 laderTwo 获取高 System out println laderOne的面积是 laderOne 计算面积 System out println laderTwo的面积是 laderTwo 计算面积 laderOne 修改高 10 floath laderOne 获取高 laderTwo 修改高 h 2 System out println laderOne现在的高是 laderOne 获取高 System out println laderTwo现在的高是 laderTwo 获取高 System out println laderOne现在的面积是 laderOne 计算面积 System out println laderTwo现在的面积是 laderTwo 计算面积 4 3 3对象的引用和实体当用类创建一个对象时 类中的成员变量被分配内存空间 这些内存空间称做该对象的实体 而对象中存放着引用 以确保实体由该对象操作使用 一个类创建的两个对象 如果具有相同的引用 那么就具有完全相同的实体 没有实体的对象称作空对象 空对象不能使用 即不能让一个空对象去调用方法产生行为 例 Pointp1 newPoint 12 16 Pointp2 newPoint 6 18 p1 p2 4 3 4参数传值 当方法被调用时 如果方法有参数 参数必须要实例化 即参数变量必须有具体的值 在Java中 方法的所有参数都是 传值 的 也就是说 方法中参数变量的值是调用者指定的值的拷贝 例如 如果向方法的int型参数x传递一个int值 那么参数x得到的值是传递值的拷贝 方法如果改变参数的值 不会影响向参数 传值 的变量的值 基本数据类型参数的传值 对于基本数据类型的参数 向该参数传递的值的级别不可以高于该参数的级别 比如 不可以向int型参数传递一个float值 但可以向double型参数传递一个float值 引用类型参数的传值 Java的引用型数据包括对象 数组和接口 当参数是引用类型时 传值 传递的是变量的引用而不是变量所引用的实体 如果改变参数变量所引用的实体 就会导致原变量的实体发生同样的变化 但是 改变参数的引用不会影响向其传值的变量的引用 例子5classPeople Stringface voidsetFace Strings face s classA voidf intx doubley Peoplep x x 1 y y 1 p setFace 笑脸 System out println 参数x和y的值分别是 x y System out println 参数对象p的face是 p face publicclassExample4 5 publicstaticvoidmain Stringargs intx 100 doubley 100 88 Peoplezhang newPeople zhang setFace 很严肃的样子 Aa newA a f x y zhang System out println main方法中x和y的值仍然分别是 x y System out println main方法中对象zhang的face是 zhang face 例子4 6class圆 double半径 圆 doubler 半径 r double计算面积 return3 14 半径 半径 void修改半径 double新半径 半径 新半径 double获取半径 return半径 class圆锥 圆底圆 double高 圆锥 圆circle doubleh this 底圆 circle this 高 h double计算体积 doublevolume volume 底圆 计算面积 高 3 0 returnvolume void修改底圆半径 doubler 底圆 修改半径 r double获取底圆半径 return底圆 获取半径 classExample4 6 publicstaticvoidmain Stringargs 圆circle new圆 10 圆锥circular new圆锥 circle 20 System out println 圆锥底圆半径 circular 获取底圆半径 System out println 圆锥的体积 circular 计算体积 circular 修改底圆半径 100 System out println 圆锥底圆半径 circular 获取底圆半径 System out println 圆锥的体积 circular 计算体积 4 4static关键字4 4 1实例变量和类变量的区别一个类通过使用new运算符可以创建多个不同的对象 这些对象将被分配不同的内存空间 现在再说得准确些就是 不同的对象的实例变量将被分配不同的内存空间 如果类中的成员变量有类变量 那么所有的对象的这个类变量都分配给相同的一处内存 改变其中一个对象的这个类变量会影响其它对象的这个类变量 也就是说对象共享类变量 classTakecare staticintx inty classA TakecareA1 newTakecare TakecareA2 newTakecare 如果程序中使用了A1 x 18这时如果输出A1 x A2 x的值 结果相同都是18 例子4 7class梯形 float上底 高 staticfloat下底 梯形 floatx floaty floath 上底 x 下底 y 高 h float获取下底 return下底 void修改下底 floatb 下底 b classExample4 7 publicstaticvoidmain Stringargs 梯形laderOne new梯形 3 0f 10 0f 20 laderTwo new梯形 2 0f 3 0f 10 System out println laderOne的下底 laderOne 获取下底 System out println laderTwo的下底 laderTwo 获取下底 laderTwo 修改下底 60 System out println laderOne的下底 laderOne 获取下底 System out println laderTwo的下底 laderTwo 获取下底 2 实例方法和类方法的区别当类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《拿来主义》课件 统编版高中语文必修上册
- 北京素描三级考试题目及答案
- WJM664-生命科学试剂-MCE
- DL-Cytarabine-13C3-生命科学试剂-MCE
- 北京安全员证考试试题及答案
- 2-3-Oxidosqualene-d6-Squalene-oxide-d-sub-6-sub-生命科学试剂-MCE
- 美容的考试题及答案
- 电焊培训知识大全课件
- 高校消防知识培训课件新闻稿
- 保安职业体能考试题库及答案
- 2024-2030年中国白银境外融资报告
- 韦莱韬悦-东方明珠新媒体职位职级体系咨询项目建议书-2017
- DB43T 2558-2023 城镇低效用地识别技术指南
- 八上外研版英语书单词表
- 高标准农田建设项目施工合同
- 腹内高压综合征
- 识别界限 拒绝性骚扰 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- 2024年秋季新人教版八年级上册物理全册教案(2024年新教材)
- 压疮护理质量改进一等奖(有稿)
- 2024养老院房屋租赁合同
- 输血指南的循证医学更新
评论
0/150
提交评论