Java程序设计.ppt_第1页
Java程序设计.ppt_第2页
Java程序设计.ppt_第3页
Java程序设计.ppt_第4页
Java程序设计.ppt_第5页
免费预览已结束,剩余547页可下载查看

下载本文档

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

文档简介

Java程序设计 Java网络程序设计 自我介绍 姓名 辛明影电话 86413213 xmy63 xmy63 助课教师 苏艳梅综合楼513 课程内容 第一章Java简介第二章Java基本程序设计第三章面向对象程序设计基础第四章图形编程第五章事件处理第六章Swing用户接口组件第七章异常第八章applet小应用程序第九章Java的多线程机制第十章流与文件第十一章网络程序设计第十二章访问数据库 主要参考书 参考书目 其他 Java编程思想JavaTutorialfromSUNJava网络高级编程 人民邮电出版社 Java2实用教程Java2图形设计卷1 AWT卷2 Swing Graphicspecialeditionjava2 Java2编程详解 Java程序设计教程 第一章JAVA简介 1 1JAVA起源1 2JAVA特点1 3JAVA基本编程环境1 4Helloworld应用程序1 5JavaApplet程序1 6安装和配置编译运行环境1 7Java的类库简介1 8Java资源 1 1JAVA产生 1990年 Sun公司开始了一个JamesGosling Java创始人 项目 尝试用C 开发用于消费电器中的软件 Gosling用了一个新语言Oak来解决这个问题 Oak保留了熟悉的C 语法当Oak成熟时 因特网也正处于戏剧性增长的时期 Sun公司的开发小组认识到Oak非常适合Internet编程 1994年 他们完成了一个用Oak编写的早期Web查看器 称为WebRunner 后被改名为HotJava 1 1JAVA产生 Java让人联想到印度尼西亚有个重要的盛产咖啡的岛屿 开发人员为这种新的语言起名为Java 其寓意是为世人端上一杯热咖啡 1995年 Oak更名为Java 并在SunWorld95中发布 1 1JAVA产生 Java2 从此 Java的知名度如日中天 甚至在1996年1月Java编译器第一版发布之前 Java已经成为Internet发行的行业标准 98年末 Sun推出Java1 2 简称Java2 目前JDK1 5 0是Java2开发平台的最新版本 1 1JAVA产生 目前常用的版本 J2EE Java2PlatformEnterpriseEdition J2SE Java2PlatformStandardEdition J2ME Java2PlatformMicroEdition 1 2JAVA特点 Sun公司在 Java白皮书 中是这样对Java进行定义的 Java Asimple object oriented distributed interpreted robust secure architecture neutral portable high performance multi threaded anddynamiclanguage 即Java是一种具有 简单的 面向对象的 分布式的 解释型的 强壮的 安全的 体系结构中立的 可移植的 高性能的 多线程的 动态的语言 预言 Java语言的出现 将会引起一场软件革命服务器端应用程序的标准不久的将来全世界90 的程序代码将用Java语言书写或改写在工业领域与C 平起平坐或替代C 1 4Java编程环境 Java软件开发工具包JDK适于WindowsXP和WindowsNT 2000工作平台 由于Java的JDK版本是免费的 因此可以从因特网上免费下载 找到我们感兴趣的信息 JDK是Java语言最基本的开发工具 javac Java编译器 java Java解释器 jdb Java调试器 javah C语言标题文件和存根文件产生器 javap Java反汇编器 javadoc Java文档管理器 appletviewer JavaApplet浏览器 Jcreator eclipse Jbuilder JDK的下载 文件名为 jdk 1 5 0 01 windows i586 exe 网址 安装 直接运行文件jdk 1 5 0 01 windows i586 exe将其安装到一个文件夹即可 如 c jdk14 1 5Java程序开发过程 源程序 程序名 java Java编译器 字节码文件 与平台无关 小应用程序 由Web浏览器执行 应用程序 由java解释器执行 1 5 1Java源程序的命名 如果源文件中有多个类 那么只能有一个类是public类 且源文件的名字必须与这个类的名字完全相同 扩展名是 java 如果源文件中没有public类 那么源文件的名字只要和某个类的名字相同 并且扩展名是 java就行了 2 类和接口类名和接口名是一个名词 采用大小写混合的方式 每个单词的首字母大写 使用完整单词 避免缩写 例 MultiThreadDemo MouseTest 命名规范 1 包包名的前缀总是全部小写的ASCII字母并且是一个顶级域名 这类命名规范可能以特定目录名的组成来区分部门 项目等 如 com sun org apache java awt Button 常量 常量的声明 应该全部用大写 单词间用下划线隔开 变量变量名均采用大小写混合的方式 第一个单词的首字母小写 其后单词的首字母大写 方法方法名是一个单词 采用大小写混合的方式 第一个单词的首字母小写 其后单词的首字母大写 getImage drawString 1 5 2Java应用程序 1 编写源程序importjava io publicclassHello publicstaticvoidmain Stringargs System out pringln 你好 源程序名一定为Hello java 2 Java应用程序的运行 javacHello java 首先要用Java的编译器对Java的源程序进行编译 产生字节码文件 Java应用程序是由独立的解释器程序来运行的 在JDK软件包中 用来解释执行Java应用程序字节码的解释器程序为 javaHello 编译后生成Hello class字节码文件 1 5 3JavaApplet程序 JavaApplet的源代码编辑与字节码的编译生成过程与JavaApplication相同 但它不是可以独立运行的程序 它的字节码文件必须嵌入到HTML程序的文件中并由WWW浏览器来解释执行JavaApplet的字节码程序 JavaApplet在WWW中引入动态交互的内容 使网络更广泛地渗入社会生活的方方面面 Java小应用程序 1 编写源程序importjava applet importjava awt publicclassMyjavaAppletextendsApplet publicvoidpaint Graphicsg g setColor Color red g drawString 我在学JavaApplet 小应用程序的执行 字节码的嵌入 运行JavaApplet时必须将其编译后生成的字节码文件嵌入到HTML文件中 即 文件名为 example html 1 2 3 4 5 6 HTML JavaApplet的运行 当WWW浏览器下载HTML文件并显示时 运行JavaApplet程序首先要把编译好的字节码文件和编写好的HTML文件保存在Web服务器的合适路径下 它会自动下载指定的JavaApplet字节码 然后调用内置在浏览器中Java解释器来解释执行下载到本机的字节码程序 appletviewerexample html 也可以用JDK提供的appletviewer来运行JavaApplet程序 具体形式 选择一种内置Java解释器的Web浏览器 打开扩展名为 html的文件就可以看到JavaApplet的运行结果 例 e gjava ch1 example html 总之 JavaApplet是由若干个类定义组成的解释型程序 其中必须有一个类是系统类Applet的子类 执行JavaApplet时 需先将编译生成的字节码文件嵌入HTML文件 并使用内置Java解释器的浏览器来解释执行这个字节码文件 1 6安装和配置编译运行环境 在WindowsXP 98 NT 2000上安装 如果正在运行WindowsXP 2000 可以按以下方式修改autoexec bat文件中的PATH SETCLASSPATH e java2006 ch1PATH PATH C JDK14 BIN Java的实际安装路径 修改在下一次启动Windows时起作用 WindowsNT用户可以在 系统属性 的 环境 中进行修改 Windows2000用户可以在 系统属性 的 高级 中修改 为了检查PATH是否修改成功 可在MS DOS命令窗口中输入以下命令 C PATH 1 7Java的类库简介 Java1 1 x包含的类库 一 Java lang在所有的JavaAPI程序类库中 Java lang是最重要的 它提供了Java语言里的诸如Object String和Thread等核心类与接口 这些类中的任何一个丢失 运行时都不会启动 这些类自动导入到每个Java程序中 没有必要显示地导入它们 Java lang中包括基本类型包装器 访问系统资源的类 数学类和安全类 错误和异常类也包含在其中 Java lang中包括基本类型包装器 访问系统资源的类 数学类和安全类 错误和异常类也包含在其中 二 Java io类库Java io类库提供一系列用来读写文件或其它输入输出源的输入输出流 其中有基本输入输出类 缓存流类 比特数组和字符串流类 文件流类 管道类 流连接类 筛选流类和异常类 三 Java util类库该类提供了数据结构类 日期类 观测器类 属性类 随机数类 分离器类 异常类和接口 四 J类库J类库包含了一些与网络相关的类和接口 以方便应用程序在网络上传输信息 支持TCP和UDP 通过统一资源定位器 URL 可以方便地访问WWW上的信息 J类库分为主机名解析类 Hostnameresolutionclasses Socket类 统一资源定位器类 URLclasses 异常类和接口 其中InterAddress类指明Internet上的一个主机地址 Socket类和ServerSocket允许应用程序分别建立客户Socket和服务器Socket URLStreamHandler类把URLConnection字符串解析成其元素 URLConnection类表示与远程对象或URL表示的数据的真正连接 ContentHandler类把URL连接返回的字节转化为一个Java对象 五 Java awt类库提供了Java语言中的图形类 组成类 容器类 排列类 几何类 事件类和工具类 六 Java awt image类库提供产生和修改图象的类 包括图象生成类 图象消耗类 图象过滤类 彩色模型类 八 Java applet类库该类包含用于产生applet的类的applet用来与applet上下文通信的类 包括applet类 声音接口 applet上下文接口等 七 Java awt peer类库包含各种对等体的接口 Java1 2新增类库 九 Java awt dnd提供支持拖放操作的类和接口 十 Java awt fond提供了与风格有关的类和接口 十一 Java awt geom提供了一些Java2D类 十二 Java awt im提供能够接收日文 中文和韩文的类和界 十三 Java awt image renderable提供产生独立于 图象增强器 的图象的类和接口 十四 Java awt print提供了与打印有关API 十五 Java beans beancontext提供了关于 Bean容器 的类和接口 一个Bean容器能容纳JavaBeans并且为它所包含的Beans定义了执行环境 十六 Java lang ref提供了一些 引用对象类 这些类提供了与无用单元收集器的有效交互 十七 Java rmi activation这个类支持 RMI对象激活 机制 十八 Java security spec提供了密匙和算法参数规格说明的类和接口 十九 Java util jar提供了创建及读写JAR文件的类和接口 二十 Java swing提供了一个 轻量 控件集 所有的swing控件均用Java写成 并且尽可能地实现了平台无关性 二十一 Java swing border这个类库的类和接口能够在swing控件周围画出多种风格的边框图 二十二 Java swing colorchooser这个类包含了被JcolorChooser所使用的类和接口 JcolorChooser类提供了一个使用户可以操纵与选择颜色的类 二十三 Java swing event这个类提供了可以被swing控件触发的各类事件 二十四 Java swing filechooser这个类包含了被JfileChooser所使用的类和接口 二十二 Java swing colorchooser这个类包含了被JcolorChooser所使用的类和接口 二十四 Java swing colorchooser这个类包含了被JcolorChooser所使用的类和接口 二十五 Java swing plaf这个类库提供了一个接口与许多抽象类使得swing控件有动态转变显示风格 如Windows Motil或metal风格 的能力 二十六 Java swing plat basic提供了 基本 的显示风格 如 包含了Windows和Motil风格 二十七 Java swing plat metal提供Metal显示风格 二十八 Java swing plat mult这个类的接口与类允许用户通过基本的Look and feel提供一些辅助的Look and feel 二十九 Java swing table提供了丰富的类和接口处理Jtable控件 三十 Java swing text这个类库的类和接口主要处理可编辑或不可编辑的文本控件 三十一 Java swing text html提供类 HTMLEditorKit 及其支持类去创建HTML编辑器 三十二 Java swing tree提供了丰富的类和接口去处理Jtreer控件 三十三 Java swing undo这个类库支持在一个应用中的undo redo操作 跟上时代脚步与网络有关的技术发展得如此之快 以至于很难掌握当今最新的技术信息和发展动态 Internet的革新速度极快 而Java也正以这种速度在发展着 跟上时代的脚步最好的办法就是经常去访问一下Web站点 以获得有关java的最新信息和Java例子 1 8Java资源 杂志 JavaWorld JavaDeveloper sJournal 国内站点 http www java 国内FTP站点 强烈推荐 Username javaPassword 练习 1 Java编译器将源代码翻译成的独立于平台的格式是 A opcodesB bytecodes 字节码 C virtualmachines 虚拟机 D applets 小应用程序 2 运行Java编译器的命令是什么 A javaB appletviewerC jdbD javac3 下面哪条命令用来运行Javaapplicaiton A javaB appletviewerC jdbD javac4 下面哪条命令用来运行Javaapplet A javaB appletviewerC jdbD javac5 可以用来创建Java程序的免费工具集被称作什么 A JREB JDKC JVMD JNI 第二章Java基本程序设计 2 1基本知识 2 1 1字符集Java语言采用unicode字符集 含有65535个字符 字母包括下面几种 A Z a z汉字 日文片假名 平假名和朝鲜文 Unicode字符格式 uddddd是一位十六进制数 例 u03c0表示希腊字母 u0030 u0039表示0 9 Unicode的网页地址 http 2 1 2标识符 标识符由字母 下划线 美元符号和数字组成 且第一个符号不能为数字 下列都是合法标识符 Hello 1234 程序名 www 123标识符可用作 类名 变量名 方法名 数组名 文件名等 2 1 3关键字 关键字就是Java语言中已经被赋予特定意义的一些单词 常见有 abstract class public try catch if float import void等 2 1 4注释 notes Java有三种注释的方式 1 注释内容由 一直到此行结束 2 和 定义一个注释块 3 开始 结束这种注释方法可用来自动产生文档 2 1 4注释 这是一个Java的小例子 publicclassHello 定义一个类 publicstaticvoidmain Stringargs System out println 你好 输出 Remember Java中数据类型分为四种 基本数据类型 primitivetype 数组类型 arraytype 类 classtype 接口类型 interfacetype 任何常量和变量都是上述四种数据类型之一 2 2基本数据类型 2 2基本数据类型 2 2 1 逻辑型常量 true false变量的定义 booleanx booleanx y tom 定义同时可赋值 booleanx true tom false 2 2 2 字符类型 常量 a A 8 变量定义 charq charc type cat 定义同时可赋值 charc a type cat 整数类型 常量 十进制 123 6000八进制 077 065十六进制 0 x234 0 xab12整形变量的定义分为四种 int byte short long Int型 变量定义intx inttom 12 jafei 年令定义同时可赋值 inttom 12 100 jafei 年令 20 对于int型变量 内存分配为4个字节 占32位 取值范围 231 231 1 2147483648 2147483647 Byte型 变量定义bytew bytex y z 定义同时可赋值 bytex 12 y 24 z 36 对于byte型变量 内存分配1个字节 占8位 取值范围 27 27 1 128 127 Short型 变量定义shorth shortm 12 aort 定义同时可赋值 shortm 12 12 20 对于short型变量 内存分配2个字节 占16位 取值范围 215 215 1 32768 32767 Long型 变量定义long长型longI j k 定义同时可赋值 long长型 对于long型变量 内存分配8个字节 占64位 取值范围 263 263 1 92233720368477808 92233720368477807 浮点类型 Float型常量 12 23f 32 00F 2e40f变量的定义 floatx floatx1 x2 x3 定义时赋初值 floatx1 12 23f x2 32 00f x3 对于float型变量 内存分配4个字节 占32位 有效位6 7位 Double型 常量 12 23d 32 00D 123 0 6e 120变量定义 doubled doubled1 d2 d3 定义时可以赋初值 doubled1 1223 f d2 32 00d d3 内存分配8个字节 占64位 有效位15位 当我们在程序中定义变量时 常常没有给定变量初值 虽然变量的初值没有必要给定 但这经常是程序运行时错误的根源 为了可靠性起见 Java会自动为没有给定初值的变量设置标准的初值 如下表 类型转换 Exchange byte short int long char float double 造型 大多数的数值转换是遵循优先级的关系自动完成的而有些转换则是通过造型来完成的语法 转换后类型 被转换的变量名 例 doublex 9 987 intnx int x 转换后nx 9强转时 当心丢失数据 造型 若要把一个浮点数转换成与其最接近的数 即进行四舍五入 需使用Math round 方法例 doublex 9 987 intnx int Math round x 结果 nx 10 2 3表达式 表达式是由变量 常量 对象 方法调用和操作符组成的式子 例 a b c 2 max x y 表达式的值就是对它运算后所得的结果 若a 4 b 5 c 6 x 7 y 9 则上述表达式的结果为 10 组成表达式的Java操作符有很多种 代表了多种的丰富的操作运算 包括赋值运算 算术运算 关系运算等 赋值运算符 赋值运算符对应了赋值运算 即赋予程序里的变量或对象一定的内容 简单的赋值运算是把一个表达式的值直接赋给一个变量或对象 使用的赋值运算符是 其格式为 变量或对象 表达式 其中赋值号右边的表达式可以是常量 另一变量或对象以及方法的返回值 简单例子 i 0 j i k i j 5 MyFirstString MyDouble toString MySecondString MyFirstString 算术运算符 关系运算符 布尔逻辑运算符 位运算符 条件运算符 条件运算符也称三目运算符 其格式为 Expression statement1 statement2 它的作用是根据第一个运算符 放在 前面 必须为布尔类型数据 的真假值 来决定整个表达式的结果值是第二个运算量 放在 后面 前面 或者是第三个运算量 放在 后面 X y 1 1 条件运算符的结合顺序是由右向左 也就是说 当我们写a b c d e f g的时候 Java会将其解释为 a b c d e f g 例 x 5 x 0 1 x 0 1 0 其它运算符 分量运算符 内存分配运算符new方法调用运算符 下标运算符 实例运算符instanceof 运算符 优先级描述运算符结合性1分隔符 2自增自减 逻辑非 右到左3算术乘除 左到右4算术加减 左到右5移位 左到右6大小关系运算 左到右7相等关系运算 左到右8按位与运算 左到右 优先级 优先级描述运算符结合性9按位异或 左到右10按位或 左到右11逻辑与 左到右12逻辑或 左到右13三目条件运算 左到右14赋值运算 右到左 运算符 这是一个用来创建对象的运算符 new Java提供一个特别的运算符 2 4语句 Java语句分为5类 1 方法调用语句System out println Hello 2 表达式语句x 23 i 语句 3 复合语句 用 把一些语句括起来就构成了一个语句 z x 23 System out println Hello 4 控制语句if do switch5 packege语句和import语句 Java的控制语句 Java语言控制语句有3种 条件语句循环语句转移语句 条件语句 Java有两种类型的条件语句ifswitch If语句 if语句一般形式 if 表达式 语句序列1 else 语句序列2 例 y 1x0 y 1 else y 1 System out println 我在学习IF语句 1x 0 if的扩充形式 if 表达式1 语句1elseif 表达式2 语句2 elseif 表达式n 语句nelse语句n 1 switch语句 switch 表达式 case常量1 语句序列1break case常量2 语句序列2break case常量n 语句序列nbreak default 语句序列n 几点注意 表达式值 常量i的值为整形常量i常量j执行 先计算表达式值若与常量i相同 则执行语句序列i若都不相同 则执行语句序列n 1 例 根据考试成绩的等级打印出百分制分数段 publicclassGradeLevel publicstaticvoidmain Stringargs System out println n firstsituation chargrade C normaluse switch grade case A System out println grade is85 100 break case B System out println grade is70 84 break case C System out println grade is60 69 break case D System out println grade is 60 break default System out println inputerror 循环语句 分为三种 forwhiledo while 格式 for 表达式1 表达式2 表达式3 若干语句 表达式1负责变量初始化表达式2称为循环条件表达式3用来改变循环条件 若干语句 称为循环体执行如右 for语句 例 1 100之和 importjava applet importjava awt publicclassForSum100extendsApplet publicvoidpaint Graphicsg intsum 0 for inti 1 i 100 i sum sum i g drawString sum sum 10 20 PerfectNum java while与do while语句 while一般格式 while 表达式 若干语句 do while一般格式 do 语句序列 while 表达式 转移语句 continue作用 结束本次循环 开始下一次循环 例 求100个数中的正数的和 publicclassForSum100 publicstaticvoidmain Stringargv intsum 0 a for inti 1 i 100 i System in read a if a 0 continue sum sum i System out println sum sum break作用 结束整个循环的执行 转到下一语句 publicclassForSum100 publicstaticvoidmain Stringargv intsum 0 a for inti 1 i 100 i System in read a if a 0 break sum sum i System out println sum sum 例 求100个数的和 遇负数结束 返回语句 Java的返回语句与Java的方法紧密相关当程序执行到此语句时 将立即返回上一级方法格式 return value Java是第一个没有goto的流行语言 package语句 用于指明源文件定义的类所在的包一般格式 package包名例 packageexam package一定是源文件的第一条语句 例 m packclassA classB classC import语句 用于引入所需要的类Java程序中可以有多个import语句 它们必须位于package语句之后 类定义语句之前 java awt抽象窗口工具集 包含了图形 文本 窗口GUI类 Java提供了60个包 常用的包如下 Java applet实现JavaApplet的类 Java常用包 java awt image抽象窗口工具集中的图象处理类java lang基本语言类java io输入输出类所有实现网络功能的类java util有用的数据类型类java awt peer平台无关的GUI工具集界面 Java常用包 从一个包中引入多个类 则可用 表示 importjava awt 引入一个类 则需指出具体类名 importjava awt Button Java lang包是Java语言的核心类库 它包含了运行Java程序必不可少的系统类 系统自动引入Java lang包 第三章面向对象程序设计基础 OOP compaq 学习导读 掌握面向对象的程序设计的方法和Java作为面向对象序设计语言的特点 掌握构造一个类和如何创建一个对象 了解类和对象之间的关系 掌握接口的特点 结构 调用和继承 掌握Java的继承机制和实现多态的方法 掌握修饰符和构造方法的使用规则 类是Javar的核心 由于类定义了一个对象的功能和属性 因此整个Java语言建立在这个逻辑结构之上 同样 类构成了Java面向对象的基础 任何希望在Java程序中实现的想法都必须封装在类中 在一个类中程序的作用体现在方法中 方法是Java创建一个有名字的子程序的方法 在Java中 没有类不能做任何事 创建类有两种途径 1 使用已有类2 创建自己的类 3 1类和方法 3 1 1类 人 姓名 name 身份证号 id 性别 sex 身高 height 体重 weight 说话走路思维吃饭 状态描述表明了对象的状态特征 方法描述确定了对象具有的能力 类是一类对象的共性描述 3 1类和方法 extends父类 implements接口名 一 类 类是模板或蓝图 是用来创建对象的 它包含被创建对象的状态描述和方法定义 类体 类的定义包括两部分 1 声明和类体 其格式如下 class类名 修饰符 类的修饰符用来说明类的特殊性质 分为三种 访问控制符 public公共类抽象类说明符 abstract最终类说明符 final 接口名跟在implements关键字后面 用来说明当前类中实现了哪个接口定义的功能和方法 接口是Java语言用来实现多重继承的一种特殊机制 我们将在后面详细介绍它的使用方法 class关键字 在它的后面 应跟随新数据类型的名称 注意不要把class写成Class 父类名跟在extends关键字后面 用来说明当前类是哪个已经存在类的子类 存在继承关系 继承是类与类之间的一种非常重要的关系 classHuman floathight weight Stringname sex id voidspeak Stringx Stringy Stringz name x sex y id z System out println name sex id floatwalk floatx floaty floatz weight x hight y z weight hight returnz voidthink voideat 2 类体由两部分构成 floatarea intcolor floatx y voiddraw voiderase voidmove intgetColor ClassShape 一为变量定义 域 二为方法定义 类头 为变量定义 域 方法定义 成员变量 类定义时 变量定义部分所定义的变量上例 floathight weight Stringname sex id 其中的hight weight name sex id为成员变量 局部变量 方法体中定义的变量和方法的参数上例方法定义中的floatf floatx floaty floatz 中的x y z为局部变量 有效区域 成员变量在整个类内都有效 局部变量只在定义它的方法内有效 例 classEx2 intx intf inta x a X为全局变量intg inty y a a为局部变量 成员变量的隐藏性 局部变量与成员变量名字相同时 则成员变量被隐藏 即在这个方法内暂时失效 例 局部变量起作用classtom intx 98 y voidf intx 3 y x y 3 成员变量起作用classtom intx 98 y voidf intx 3 y this x y 98 这是this第一种用法 实例变量 类变量 成员变量又分为实例 成员 变量和类 成员 变量 用static修饰的成员变量为类变量 也叫静态变量 否则为实例变量 例 calssexample floatx staticinty 3 类之间的关系类之间最常见的关系 依赖 uses a 如果一个类中的方法操作了另一个类的对象 那么这个类就依赖于另一个类例 发动机类与汽车类关联 has a 类A的对象包含类B的对象例 汽车类与制造商类继承 is a 表示一个特定的类和一个一般的类之间的关系 一般来说 如果类A扩展了类B 那么类A不仅继承类B的方法和状态 而且还有属于自己的方法和状态 汽车与交通工具类 3 1 2方法定义 类中定义的方法通常起到两种作用 一是围绕着类的属性进行各种操作 二是与其他的类或对象进行数据交流 消息传递等操作 1 Java中声明方法的语法如下 修饰符 返回值类型方法名 参数列表 throws例外名1 例外名2 方法体 局部变量声明 语句序列 2 方法的声明 名字 类型和参数等属性的说明 例 voidnatural stringx stringy stringz floatf floatx floaty 注 方法的类型描述的是返回值类型无返回值时类型为void 3 方法体 由局部变量定义和java语句组成例1 intf intx inty intz z x x y y 1 returnz 例2 voidnatural stringx stringy stringz name xsex y id z system out println name sex id Java语言中定义的方法有两类 一类是需要程序书写专门的调用命令来调用的方法 称为程序调用方法 例如 isPfime 另一类是运行过程中系统自动调用的方法 称为系统方法 例如我们前面程序中的action paint init 等 这两类方法的定义和使用原则有很大差异 4 Static静态方法用static修饰的方法叫静态方法或类方法 静态方法和静态变量可通过对象或类名来调用 实例方法和类方法的区别 实例方法只能通过对象来调用类方法还可以直接由类名来调用classA intx y staticfloatf inta floatg intx1 x2 classB publicstaticvoidmain Stringargs Aa1 newA a1 f 2 3 oka1 g 2 5 okA f 4 6 okA g 8 9 Error System out println 3 1 3方法的重载 overloading washtheshirtwashthecarwashthedog我们通过判断被wash的物体知道该用哪种方法来wash早期语言 比如C语言 不同的函数不能通明 导致shirtWash shirt carWash car dogWash dog 参数的不同体现在类型和个数上的不同 例 classWash wash Clothshirt 一个类中可以有多个方法具有 相同的名字 相同的类型 不同的参数 这种情况叫 wash Autocar wash Animaldog intn 重载 动态绑定 1 编译器检查对象的声明和方法名 例 调用wash方法 所有名字为wash的方法都会被找出来 wash Clothshirt wash Autocar wash Animaldog intn 2 编译器根据调用时的实参值 选择所调用的方法 例 wash benz 3 1 4构造方法也叫构造器 是一种特殊的方法 其作用是用来构造并初始化对象 它的名字必须与它所在的类名字相同 且类型为void 例1 classStudent publicStudent Stringn doubles name n score s publicstringgetName returnname privatedoublescore privateStringname 构造方法也常常用来为成员变量赋初值 例2 classRock Rock ThisistheconstructorSystem out println CreatingRock publicclassSimpleConstructor publicstaticvoidmain String args newRock 当用某一个类创建一个对象时 这个类的构造方法将自动被执行 调用另一个构造器当成员变量与局部变量同名时 可用关键字this指向隐式参数 完成对成员变量的引用如果构造器第一个语句为this 此处表示调用此类中的另一个构造器 例 classStudent publicStudent stringn doubles name n score s publicStudent doubles this no 4 wanghong s 当调用newStudent 628 时 Student doubles 构造器首先调用Student strings doublen 构造器 publicclassb b this 12 System out println bbb 使用关键字this很有用 只需对公共的构造方法定义一次 例 thisEx java b intx System out println ccc x publicstaticvoidmain String args newb 结果 ccc12bbb 执行 main b b 12 b 剩余部分 3 2对象 1 对象的定义当使用一个类创建了一个对象时 就说给出了这个类的一个实例 只有通过对象才可以访问该类中的变量 调用该类中的方法 static变量 static方法除外 定义对象包括对象的声明和创建对象两部分对象的声明 类的名字对象名字例 classStudent publicStudent System out println 我是学生 publicStudent stringn doubles name n score s publicstringgetName returnname privatedoublescore privateStringname 声明后内存情况 wanghong 0 x367da liwei 0 x746ff 声明对象 Studentwanghong liwei 创建对象即是为声明的对象分配内存用new运算符和构造方法为对象分配内存 声明和创建也可一次完成Studentwanghong newStudent Studentliwei newStudent liwei 640 例 wanghong newStudent liwei newStudent liwei 640 创建后内存情况 wanghong liwei liwei 640 初始化 name score 为成员变量赋初值 classStudent publicStudent Stringn doubles Stringc name n score s classno c privatedoublescore privateStringname PrivateStaticStringclassno Studentwanghong newStudent Studentliwei newStudent liwei 640 0209 类定义的变量中含有静态变量时 该类中的所有对象的静态变量共享同一存贮单元 创建后内存情况 wanghong name score liwei liwei 640 classno static 0209 例 StaticEx java classFamily staticStringfamilyname Stringname father newFamily son1 newFamily son2 newFamily father familyname 我是 father name 父亲 son1 name 大儿子 son2 name 小儿子 publicvoidpaint Graphicsg g drawString father father familyname father name 50 50 g drawString son1 son1 familyname son1 name 50 100 g drawString son2 son2 familyname son2 name 50 150 father familyname 我真的不是 g setColor Color green g drawString father father familyname father name 50 200 g drawString son1 son1 familyname son1 name 50 250 g drawString son2 son2 familyname son2 name 50 300 Father 我是父亲Son1 我是大儿子Son2 我是小儿子 Father 我真的不是父亲Son1 我真的不是大儿子Son2 我真的不是小儿子 如果在构造方法中没有明确地给某个字段赋值 那么此字段会被自动赋以一个默认值 数值型 0布尔型 false对象引用 null 例 在上例中 wanghong的name应为 nullscore为 0 2 默认字段初始化 3默认构造器 如果编写了一个没有构造器的类 则系统会自动为该类提供一个默认的构造器 其名字为类名 无参 方法体为空 用该类创建对象时 实例变量将被初始化为默认值 为成员变量初始化可用如下方法 在构造器中赋初值 声明的同时赋值 用初始化块 初始化块就是用 括起的Java语句 例 intx 0 floatpi 3 1459 4 初始化块 classStudent privatedoublescore privateStringname objectinitializationblock score 0 name 初始化块分为 普通初始化 静态初始化 放在所有函数之外 执行顺序 b intx 初始化块 Main b 剩余部分 b intx System out println ccc x System out println init publicstaticvoidmain String args System out println main newb publicclassb b this 12 System out println bbb 调用重载的构造 初始化 结果 InitMainCcc12bbb b 例 staticintnextid static Randomgen newRandom nextid gen nextInt 1000 不管是哪个构造器构造了一个对象 不管创建几个对象 静态初始化块只被执行一次 静态初始化块常用来初始化静态值 首先运行静态初始化块 然后运行初始化块 最后构造器的主体部分被执行 每创建一个对象 初始化块就执行一次 publicclassConstructerTest ConstructerTest this 12 System out println noparameterconstruct ConstructerTest intx System out println oneparameterconstruct System out println init static System out println staticinit publicstaticvoidmain String args newConstruct

温馨提示

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

评论

0/150

提交评论