从零开始学JAVA-编程经典.ppt

上传人:xt****7 文档编号:5170550 上传时间:2020-01-22 格式:PPT 页数:967 大小:6.81MB
返回 下载 相关 举报
从零开始学JAVA-编程经典.ppt_第1页
第1页 / 共967页
从零开始学JAVA-编程经典.ppt_第2页
第2页 / 共967页
从零开始学JAVA-编程经典.ppt_第3页
第3页 / 共967页
点击查看更多>>
资源描述
目录 第1章Java环境及配置第2章Java基本语法第3章类和接口第4章JavaApplet第5章Java图形处理第6章Java用户界面技术第7章异常 事件和多线程机制第8章输入输出技术第9章Java数据库技术第10章Java安全技术第11章Java网络技术 一 第12章Java网络技术 二 第13章Servlet技术第14章Java读写XML技术 第1章Java环境及配置 1 1Java概述1 2Java语言的特点1 3Java应用分类1 4JDK包的下载与安装1 5Java环境配置1 6例子程序习题 1 1Java概述 Java是一种编程语言 它提供了一个同时用于程序开发 应用和部署的环境 Java语言主要定位于网络编程 使得程序可以最大限度地利用网络资源 1 2Java语言的特点 1 跨平台性所谓的跨平台性 是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行 这是软件发展的趋势和编程人员追求的目标 之所以这样说 是因为计算机硬件的种类繁多 操作系统也各不相同 不同的用户和公司有自己不同的计算机环境偏好 而软件为了能在这些不同的环境里正常运行 就需要独立于这些平台 而在Java语言中 Java自带的虚拟机很好地实现了跨平台性 Java源程序代码经过编译后生成二进制的字节码是与平台无关的 但是可被Java虚拟机识别的一种机器码指令 Java虚拟机提供了一个字节码到底层硬件平台及操作系统的屏障 使得Java语言具备跨平台性 2 面向对象面向对象是指以对象为基本粒度 其下包含属性和方法 对象的说明用属性表达 而通过使用方法来操作这个对象 面向对象技术使得应用程序的开发变得简单易用 节省代码 Java是一种面向对象的语言 也继承了面向对象的诸多好处 如代码扩展 代码复用等 3 安全性安全性可以分为四个层面 即语言级安全性 编译时安全性 运行时安全性 可执行代码安全性 语言级安全性指Java的数据结构是完整的对象 这些封装过的数据类型具有安全性 编译时要进行Java语言和语义的检查 保证每个变量对应一个相应的值 编译后生成Java类 运行时Java类需要类加载器载入 并经由字节码校验器校验之后才可以运行 Java类在网络上使用时 对它的权限进行了设置 保证了被访问用户的安全性 4 多线程多线程在操作系统中已得到了最成功的应用 多线程是指允许一个应用程序同时存在两个或两个以上的线程 用于支持事务并发和多任务处理 Java除了内置的多线程技术之外 还定义了一些类 方法等来建立和管理用户定义的多线程 5 简单易用Java源代码的书写不拘泥于特定的环境 可以用记事本 文本编辑器等编辑软件来实现 然后将源文件进行编译 编译通过后可直接运行 通过调试则可得到想要的结果 1 3Java应用分类 1 应用程序典型的通用程序可以在具备Java运行环境的设备中独立运行 它又分为 GUI应用程序 即图形用户界面程序 可实现丰富的输入界面和输出显示 命令行程序 无需界面 只需在命令行下运行 运行结果只在后台发生变化 可以将输出存放到文件中 嵌入式应用程序 Java语言的平台独立性决定了它可以嵌入到不同的设备中 且只需具备必要的运行环境即可 2 Servlets服务器端应用程序服务器端的应用程序用来收集客户端的数据输入 对数据进行处理之后 返回相应的响应给客户 它主要用来实现与客户端的交互 3 Applets小应用程序Applets应用于网络上 嵌入在HTML网页中 支持Java的浏览器都可以对它进行解释并运行 通常通过一个HTML标签来识别并运行Applets 小应用程序的类在服务器端 当浏览器显示网页时 它随之下载到本地 由本地的浏览器载入运行 1 4JDK包的下载与安装 JavaDevelopKit简称为JDK 是Sun公司免费发行的软件包 可以从Sun网站免费下载 也可以从其它国内地址下载 JDK版本从1 02开始 目前版本发展到1 4 其中高级版本对低级版本实现向下兼容 运用这个软件包 就可以对Java源程序进行编译和运行 本书中下载使用的JDK包为j2sdk 1 4 0 012 windows i586 exe 下载后双击图标 即可进行安装 默认的安装目录为C j2sdk1 4 0 01 本书作者将安装目录改为D j2sdk1 4 0 01 1 5Java环境配置 JDK包安装完成后 需要设置环境变量 用鼠标右键单击桌面上的图标 我的电脑 选择 属性 项 出现标题为 系统特性 的对话框 点击 高级 标签 可以看见有一个 环境变量 按钮 如图1 1所示 图1 1 系统特性 对话框 单击 环境变量 按钮 可以看见本机环境变量 如图1 2所示 上面为用户变量 下面为系统变量 随着操作系统或用户环境的不同 变量名 值有所不同 这里需要修改三个用户变量 include lib和path 分别将JDK包安装之后的相应路径包含到这三个用户变量中 图1 2 环境变量 对话框 选中include变量 单击 编辑 按钮 弹出标题为 编辑用户变量 的对话框 如图1 3所示 在变量值一栏的最后添加 D j2sdk1 4 0 01 include 表示与前面的各项隔开 后面的路径是JDK包的安装路径下的include目录 图1 3为作者修改include变量的情况 注意你的安装路径可能与作者的有所不同 要以你的安装路径为基准进行修改 图1 3编辑include变量 选中lib变量 单击 编辑 按钮 弹出标题为 编辑用户变量 的对话框 如图1 4所示 在变量值一栏的最后添加 D j2sdk1 4 0 01 lib 表示与前面的各项隔开 后面的路径是JDK包的安装路径下的lib目录 图1 4为作者修改lib变量的情况 注意你的安装路径可能与作者的有所不同 要以你的安装路径为基准进行修改 图1 4编辑lib变量 选中path变量 单击 编辑 按钮 弹出标题为 编辑用户变量 的对话框 如图1 5所示 在变量值一栏的最后添加 D j2sdk1 4 0 01 bin 表示与前面的各项隔开 后面的路径是JDK包的安装路径下的bin目录 图1 5为作者修改path变量的情况 注意你的安装路径可能与作者的有所不同 同样要以你的安装路径为基准进行修改 图1 5编辑path变量 1 6例子程序 例1 1 源程序名称为HelloWorld java 命令行提示符下输出字符串 HelloWorld 源代码如下 程序文件名称为HelloWorld javapublicclassHelloWorld publicstaticvoidmain Stringargs System out println HelloWorld 用记事本或者专用的编辑工具如EditPlus等进行编辑 并将文件存为HelloWorld java 建议使用像EditPlus这样的编辑软件 可使得代码更加清晰且风格良好 运行 开始 菜单 程序 附件 命令提示符 载入命令行程序 在命令行状态下 进入源程序所在的目录 图1 6所示的例子程序的目录在 E Work Java sample 下 然后键入命令 javacHelloWorld java 若编译不通过 会产生错误提示 若编译通过 则没有任何提示 同时进入命令行等待状态 如图1 6所示 这时 命令行虽然没有提示 但在源程序的路径下生成一个新的文件为HelloWorld class 这个 class文件就是编译后生成的类文件 运行此文件 需在命令行状态中键入命令 javaHelloWorld 然后按回车键 此时程序就会运行并输出 HelloWorld 输出完毕 立即退出程序 进入命令行等待状态 如图1 7所示 图1 6编译源程序HelloWorld 图1 7运行HelloWorld应用程序 这里用到的命令Javac和Java都是JDK软件包自带的 从JDK安装路径的bin目录下可以看到javac exe 这是编译程序 源程序编译通过后就生成 class文件 而Java exe就是载入类的运行程序 运行时根据源程序的指令要求产生正确的输出或结果 如果没有进行环境配置 直接编译或者运行Java源程序 系统会提示找不到这些命令 所以必须进行环境配置后再使用 例1 2 小应用程序的例子 输出 HelloWorld 如图1 8所示 源程序代码如下 程序文件名称为HelloApplet javaimportjava awt Graphics importjava applet Applet publicclassHelloAppletextendsApplet publicvoidpaint Graphicsg g drawString HelloWorld 50 25 小应用程序代码书写和编译完成后 无法独立运行 需要一个载体或者容器 下面的HTML网页代码就是小应用程序载入的容器 HTMLTestPage HelloAppletwillappearbelowinaJavaenabledbrowser 图1 8Applet显示 HelloWorld 习题 1 简述Java的特点 2 简述Java的分类情况 3 进行Java环境的安装和配置 4 编写应用程序 屏幕上输出 欢迎来到Java世界 5 编写Applet 输出 欢迎来到Java世界 第2章Java基本语法 2 1Java程序的构成2 2数据类型 变量和常量2 3运算符和表达式2 4流程控制2 5数组的使用习题 2 1Java程序的构成 2 1 1逻辑构成Java源程序逻辑构成分为两大部分 程序头包的引用和类的定义 1 程序头包的引用主要是指引用JDK软件包自带的包 也可以是自己定义的类 引用之后程序体中就可以自由应用包中的类的方法和属性等 2 类的定义Java源程序中可以有多个类的定义 但必须有一个主类 这个主类是Java程序运行的入口点 在应用程序中 主类为包含main方法的类 在Applet中 主类为用户自定义的系统Applet类的扩展类 在Java源程序中 主类的名字同文件名一致 类的定义又包括类头声明和类体定义 类体中包括属性声明和方法描述 下面来看一个例子 其中斜体表示的语句行为主类类头 主类类头下面从大括号 开始到 结束的部分称为主类类体 例2 1 下面是一个应用程序 也是一个Applet 既可以在命令行下运行 也可以嵌入到HTML网页中用appletviewer命令运行 运行时在界面上的第一个文本框中输入你的名字 按回车键后 在第二个文本框中会显示 XXX 欢迎你来到Java世界 运行结果如图2 1所示 actionPerformed方法 main主方法 图2 1程序界面 2 1 2物理构成Java源程序物理上由三部分构成 分别为语句 块和空白 1 语句指一行以分号 结束的语句 2 块指用括号对 界定的语句序列 块可以嵌套使用 3 空白指语句之间 块内部或者块之间的空白行 空白不影响Java源程序的编译和运行 适当地运用空白 可以形成良好的代码风格 在例1 1中 LabellblName TextFieldtxtName TextFieldtxtDisp 都是语句 而 lblName newLabel 请输入您的名字 txtName newTextField 8 txtDisp newTextField 20 add lblName add txtName add txtDisp txtName addActionListener this 是块 语句之间 块之间或块内部的空行都为空白 2 1 3注释语句注释语句主要用来进行一些说明 或者标记一些无用的程序语句 有两种注释方法 行注释为以 开始的行 块注释以 开始和 结束 Java编译器忽略注释后的程序语句或说明 例如 下面的语句就是注释语句用来说明程序文件名称的 程序文件名称为WelcomeApplet java上述的语句注释可以更改为 程序文件名称为WelcomeApplet java 或 程序文件名称为WelcomeApplet java 2 1 4标识符 关键字和转义符在Java语言中 标识符是赋予变量 类和方法等的名称 标识符由编程者自己指定 但需要遵循一定的语法规范 1 标识符由字母 数字 下划线 美元符号 组成 但美元符号用得较少 2 标识符从一个字母 下划线或美元符号开始 3 Java语言中 标识符大小写敏感 必须区别对待 4 标识符没有最大长度的限制 但最好表达特定的意思 5 标识符定义不能是关键字 关键字又称保留字 是指Java语言中自带的用于标志数据类型名或者程序构造名等的标识符 如public double等 转义符是指一些有特殊含义的 很难用一般方式表达的字符 如回车 换行等 所有的转义符以反斜线 开头 后面跟着一个字符来表示某个特定的转义符 如表2 1所示 表2 1转义符 2 2数据类型 变量和常量 2 2 1数据类型Java编程语言定义了八种基本的数据类型 见表2 2 共分为四类 整数类 byte short int long 文本类 char 浮点类 double float 和逻辑类 boolean 表2 2Java的数据类型 1 整数类 1 采用三种进制 十进制 八进制和十六进制 2 十进制值是2 077 首位的0表示这是一个八进制的数值 0 xBAAC 首位的0 x表示这是一个十六进制的数值 2 具有缺省int 3 用字母 L 和 l 定义long 4 所有Java编程语言中的整数类型都是带符号的数字 2 文本类 1 代表一个16bitUnicode字符 2 必须包含用单引号 引用的文字 3 使用下列符号 a 一个字符 t 一个制表符 u 一个特殊的Unicode字符 应严格使用四个十六进制数进行替换 3 浮点类默认为double类型 如果一个数字包括小数点或指数部分 或者在数字后带有字母F或f float D或d double 则该数字为浮点数 4 逻辑类boolean数据类型有两种值 true和false 例如 booleanflag true 上述语句声明变量flag为boolean类型 它被赋予的值为true 2 2 2变量与常量常量是指整个运行过程中不再发生变化的量 例如数学中的 3 1415 在程序中需要设置成常量 而变量是指程序的运行过程中发生变化的量 通常用来存储中间结果 或者输出临时值 变量的声明也指变量的创建 执行变量声明语句时 系统根据变量的数据类型在内存中开辟相应的存储空间并赋予初始值 变量有一个作用范围 超出它声明语句所在的块就无效 下面看一个使用各种类型变量声明并改变的示例 程序中pi为常量 s1 i1 l1 ch1 f1 d1 b1为全局变量 可以在方法change中发生改变 然后在方法main中输出 而s2 i2 l2 ch2 f2 d2 b2是方法main的局部变量 它们的作用范围只局限于方法main中 例2 2 测试不同数据类型的变量 程序输出如图2 2所示 源程序代码如下 程序文件名称为SetVariable javapublicclassSetVariable 全局变量 staticdoublepi 3 141592654 数学常量staticshorts1 staticinti1 staticlongl1 staticcharch1 staticfloatf1 staticdoubled1 staticbooleanb1 publicstaticvoidmain Stringargs 局部变量shorts2 35 inti2 32 longl2 34555L charch2 A floatf2 897 89F doubled2 34 345 booleanb2 false 输出常量System out println 数学常量pi pi 输出局部变量 System out println 局部变量 System out println 短整型变量s2 s2 System out println 整型变量i2 i2 System out println 长整型变量l2 l2 System out println 字符变量ch2 ch2 System out println 浮点数类型f2 f2 System out println 双精度型变量d2 d2 System out println 布尔型变量b2 b2 调用方法修改全局变量的值 change 输出全局变量的值System out println 全局变量 System out println 短整型变量s1 s1 System out println 整型变量i1 i1 System out println 长整型变量l1 l1 System out println 字符变量ch1 ch1 System out println 浮点数类型f1 f1 System out println 双精度型变量d1 d1 System out println 布尔型变量b1 b1 方法 修改全局变量的值publicstaticvoidchange s1 125 i1 88 l1 987654321L ch1 B f1 3 2590F d1 1 04E 5 b1 true 图2 2变量输出结果 2 3运算符和表达式 Java常用的运算符分为五类 算术运算符 赋值运算符 关系运算符 布尔逻辑运算符 位运算符 位运算符除了简单的按位操作外 还有移位操作 按位操作返回布尔值 表达式是由常量 变量 对象 方法调用和操作符组成的式子 表达式必须符合一定的规范 才可被系统理解 编译和运行 表达式的值就是对表达式自身运算后得到的结果 根据运算符的不同 表达式相应地分为以下几类 算术表达式 关系表达式 逻辑表达式 赋值表达式 这些都属于数值表达式 2 3 1算术运算符及算术表达式Java中常用的算术运算符如下 加运算符 减运算符 乘运算符 除运算符 取模运算 除运算的余数 增量运算符 减量运算符 例2 3 测试运算符及表达式 程序输出如图2 3所示 源程序代码如下 程序文件名称为NumberOper javapublicclassNumberOper publicstaticvoidmain Stringargs 变量初始化inta 30 intb 20 定义结果变量intr1 r2 r3 r4 r5 r6 r7 r8 r9 计算结果r1 a b r2 a b r3 a b r4 a b r5 a b r6 a r7 b r8 a r9 b 输出结果System out println a a b b a b的值System out println a b r1 System out println a b r2 System out println a b r3 System out println a b r4 System out println a b r5 System out println a r6 System out println b r7 System out println a r8 System out println b r9 图2 3程序输出结果 2 3 2关系运算符关系运算符用于比较两个数据之间的大小关系 关系运算表达式返回布尔值 即 真 或 假 Java中的常用关系运算符如下 等于 不等于 大于 大于等于 小于等于 例2 4 编写程序 测试关系运算符及其表达式 程序输出如图2 4所示 源程序代码如下 程序文件名称为TestRelation javapublicclassTestRelation publicstaticvoidmain Stringargs 变量初始化inta 30 intb 20 定义结果变量booleanr1 r2 r3 r4 r5 r6 计算结果 r1 a b r2 a b r3 a b r4 a b r6 ab r3 System out println a b r5 System out println a b r6 图2 4程序输出结果 2 3 3布尔逻辑运算符 表2 3布尔运算符及规则 图2 3为布尔逻辑运算符及其规则示例等 其中简洁与和简洁或的执行结果分别与非简洁与和非简洁或的执行结果是一致的 不同在于简洁与检测出符号左端的值为假时 不再判断符号右端的值 直接将运算结果置为假 而简洁或与非简洁或的不同在于简洁或检测出符号左端为真时 不再判断符号右端的值 直接将运算结果置为真 例如 Booleana false Booleanb true a b检测到a为假 则无需判断b的值 直接将值置为假 而b a时检测到b为真 则无需判断a的值 直接将值置为真 例2 5 测试布尔表达式 程序输出结果如图2 5所示 源程序代码如下 程序文件名称为TestLogic javapublicclassTestLogic publicstaticvoidmain Stringargs 变量初始化booleana false booleanb true 定义结果变量booleanr1 r2 r3 r4 r5 r6 计算结果 r1 a r2 a 图2 5程序输出结果 2 3 4位运算符Java中的常用位运算符如下 位求反 按位与 按位或 按位异或 右移 不带符号右移右移运算符对应的表达式为x a 运算的结果是操作数x被2的a次方来除 左移运算符对应的表达式为x a 运算的结果是操作数x乘以2的a次方 例2 6 测试位运算符 程序输出结果如图2 6所示 源程序代码如下 程序文件名称为TestBit javapublicclassTestBit publicstaticvoidmain Stringargs 变量初始化inta 36 intb 2 定义结果变量intr1 r2 计算结果r1 a b r2 a b r1 System out println a b r2 图2 6程序输出结果 2 3 5赋值运算符赋值运算符分为简单运算符和复杂运算符 简单运算符指 而复杂运算符是指算术运算符 逻辑运算符 位运算符中的双目运算符后面再加上 表2 4列出Java常用的赋值运算符及其等价表达式 表2 4赋值运算符及其等价表达式 2 3 6其它操作符及其表达式三目运算符 相当于条件判断 表达式x y z用于判断x是否为真 如果为真 表达式的值为y 否则表达式的值为z 例如 intx 5 inta x 3 5 3 则a的值为5 如果x 2 则a的值为3 对象运算符 instanceof 用来判断一个对象是否属于某个指定的类或其子类的实例 如果是 返回真 true 否则返回假 false 例如 booleanb userObjectinstanceofApplet用来判断userObject类是否是Applet类的实例 2 3 7优先级 表2 5运算符优先级 2 4流程控制 流程控制分为三种基本结构 顺序结构 分支结构和循环结构 顺序结构是指命令行顺序执行 这是最常见的一个格式 分支结构是一种选择结构 根据条件的值选择不同的执行流程 可以得到不同的结果 分支结构包括单分支语句 if else语句 和多分支语句 switch语句 循环结构是指对于一些重复执行的语句 用户指定条件或次数 由机器自动识别执行 循环结构包括次数循环语句 for语句 和条件循环语句 while语句 2 4 1分支语句分支语句分为两类 单分支语句和多选语句 1 if else语句if else语句的基本格式为 if 布尔表达式 语句或块1 else 语句或块2 其中 1 布尔表达式返回值为true或false 2 如果为true 则执行语句或块1 执行完毕跳出if else语句 3 如果为false 则跳过语句或块1 然后执行else下的语句或块2 例2 7 测试if else语句 如果x 10 则输出x的值 并提示结果正确 否则输出x 10 提示结果不正确 程序输出结果如图2 7所示 源程序代码如下 程序文件名称为TestIf javapublicclassTestIf 声明全局变量xstaticintx publicstaticvoidmain Stringargs x 12 if x 10 System out println x x 结果正确 elseSystem out println x 10 结果不正确 change System out println 修改x的值之后 if x 10 System out println x x 结果正确 elseSystem out println x 10 结果不正确 change方法 修改x的值publicstaticvoidchange x 5 图2 7程序输出结果 2 switch语句switch语句的基本格式为 switch 表达式1 case表达式2 语句或块2 break case表达式3 语句或块3 break case表达式4 语句或块4 break default 语句或块5 break 其中 1 表达式1的值必须与整型兼容 2 case分支要执行的程序语句 3 表达式2 3 4是可能出现的值 4 不同的case分支对应着不同的语句或块序列 5 break表示跳出这一分支 例2 8 测试switch语句 当x 1 2 3时 分别打印1 2 3 x不为这三个值时 打印x的值 程序输出结果如图2 8所示 源程序代码如下 程序文件名称为TestSwitch javapublicclassTestSwitch publicstaticvoidmain Stringargs 声明变量xintx x 12 System out println x 12时打印的值 choose x x 3 System out println x 3时打印的值 choose x choose方法 switch语句结构publicstaticvoidchoose intx switch x case1 System out println 1 break case2 System out println 2 break case3 System out println 3 break default System out println x 图2 8程序输出结果 2 4 2for循环语句for循环语句实现已知次数的循环 其基本格式为 for 初始化表达式 测试表达式 步长 语句或块 其执行顺序如下 1 首先运行初始化表达式 2 然后计算测试表达式 如果表达式为true 执行语句或块 如果表达式为false 退出for循环 3 最后执行步长 例2 9 用for循环统计1 100 包括100 之间数的总和 程序输出结果如图2 9所示 源程序代码如下 程序文件名称为TestFor javapublicclassTestFor publicstaticvoidmain Stringargs intsum 0 for inti 1 i 100 i sum i System out println 1到100 包括100 的数的总和为 sum 图2 9程序输出结果 2 4 3while循环语句while循环语句实现受条件控制的循环 其基本格式为 while 布尔表达式 语句或块 当布尔表达式为true时 执行语句或块 否则跳出while循环 上面for循环语句的例子改为while语句后如下所示 intsum 0 inti 1 while i 100 sum i i System out println 1到100 包括100 的数的总和为 sum 2 4 4do语句do语句实现受条件控制的循环 其基本格式为 do 语句或块 while 布尔表达式 先执行语句或块 然后再判断布尔表达式 与while语句不同 当布尔表达式一次都不为true时 while语句一开始判断就跳出循环 不执行语句或块 而在do语句中则要执行一次 上面那个例子改为do循环为 intsum 0 inti 1 do sum i i while i 100 System out println 1到100 包括100 的数的总和为 sum 2 5数组的使用 2 5 1数组声明数组的定义如下 1 首先是一个对象 2 存放相同的数据类型 可以是原始数据类型或类类型 3 所有的数组下标默认从0开始 而且访问时不可超出定义的上限 否则会产生越界错误 数组声明时实际是创建一个引用 通过代表引用的这个名字来引用数组 数组声明格式如下 数据类型标识符 例如 inta 声明一个数据类型为整型的数组apencilb 声明一个数据类型为pencil类的数组b 2 5 2创建数组由于数组是一个对象 所以可以使用关键字new来创建一个数组 例如 a newint 10 创建存储10个整型数据的数组ab newpencil 20 创建存储20个pencil类数据的数组b数组创建时 每个元素都按它所存放数据类型的缺省值被初始化 如上面数组a的值被初始化为0 也可以进行显式初始化 在Java编程语言中 为了保证系统的安全 所有的变量在使用之前必须是初始化的 如果未初始化 编译时会提示出错 有两种初始化数组的方式 分别如下 1 创建数组后 对每个元素进行赋值 a 0 5 a 1 4 a 9 10 2 直接在声明的时候就说明其值 例如 inta 4 5 1 3 4 20 2 说明了一个长度为7的一维数组 例2 10 编写程序测试数组 程序输出结果如图2 10所示 源程序代码如下 程序文件名称为TestArray javapublicclassTestArray publicstaticvoidmain Stringargs 声明数组inta charb 创建数组 a newint 3 b newchar 2 数组初始化for inti 0 i 3 i a i i 3 b 0 a b 1 b 快速初始化数组intc 0 1 3 2 3 输出结果System out print 数组a n for inti 0 i 2 i System out print b i System out print n数组c n for inti 0 i 3 i System out print c i 图2 10程序输出结果 习题 1 给出下列表达式的值 1 3 4 2 4 48 8 4 2 4 2 4 0 2 4 22 编写程序 统计课程编号为1001 1002 2001和3001的平均成绩并输出 学生成绩表如图2 11所示 每个课程编号的成绩用数组存储 读取时循环操作 图2 11习题2 2的成绩表 3 根据上题得出的考生平均成绩进行判断 如果在90分以上 屏幕上输出 课程编号为XXXX的考生平均成绩为优 在80 90分之间输出 课程编号为XXXX的考生平均成绩为良 在70 80分之间输出 课程编号为XXXX的考生平均成绩为中 在60 70分之间输出 课程编号为XXXX的考生平均成绩为及格 60分以下输出 课程编号为XXXX的考生平均成绩为不及格 4 编写程序 用数组实现乘法小九九的存储和输出 提示 采用多个一维数组 第3章类和接口 3 1类3 2接口3 3常用数据结构及类习题 3 1类 3 1 1类的定义和声明Java编程语言是面向对象的 处理的最小的完整单元为对象 而现实生活中具有共同特性的对象的抽象就称之为类 类由类声明和类体构成 类体又由变量和方法构成 下面给出一个例子来看一下类的构成 例3 1 自定义一个apple类 在主类SetApple中创建实例并调用方法 输出结果如图3 1所示 源程序代码如下 程序文件名为SetApple javapublicclassSetApple publicstaticvoidmain String args applea newapple 创建apple类a appleweight 0 5 实例变量赋值System out println 苹果的重量为1两 System out println a bite 调用实例方法a appleweight 5 System out println 苹果的重量为5两 System out println a bite 自定义类classapple 属性longapplecolor 对应苹果的颜色doubleappleweight 苹果的重量booleaneatup 是否吃完 类方法publicbooleanbite if appleweight 1 System out println 苹果已经吃完了 哈哈 eatup true else System out println 苹果吃不下了 eatup false returneatup 图3 1自定义类的应用 1 类声明的基本格式访问说明符class类名extends超类名implements接口名其中 1 访问说明符为public或者缺省 public用来声明该类为公有类 可以被别的对象访问 声明为公有的类存储的文件名为类名 2 类名 用户自定义的标识符 用来标志这个类的引用 3 超类名 是指已经存在的类 可以是用户已经定义的 也可以是系统类 4 接口名 即后面讲到的接口 例如 publicclassHelloAppletextendsApplet访问说明符为public 类名HelloApplet 扩展类为JDK包自带的java applet Applet类 由于public的存在 所以文件名必须存为HelloApplet java 同类名保持一致 2 类体类体包括成员变量和方法 1 成员变量 指类的一些属性定义 标志类的静态特征 它的基本格式如下 访问说明符数据类型变量名其中 访问说明符有public private和protected三种 public 省略时默认为公有类型 可以由外部对象进行访问 private 私有类型 只允许在类内部的方法中使用 若从外部访问 必须通过构造函数间接进行 Protected 受保护类型 子类访问受到限制 数据类型包括基本类型以及用户自定义的扩展类型 2 方法 是类的操作定义 标志类的动态特征 它的基本格式如下 访问说明符数据类型方法名 数据类型1变量名1 数据类型2变量名2 其中 访问说明符为public private和protected 其使用方法与成员变量访问说明符的使用方法一致 数据类型 包括基本数据类型和用户自定义的扩展类型 数据类型为参数 3 创建类的实例使用关键字new进行创建 例如 HelloApplethp newHelloApplet 例3 1中 自定义类apple 访问标识符缺省 定义三个属性 longapplecolor 对应苹果的颜色doubleappleweight 苹果的重量booleaneatup 是否吃完 一个方法为 publicbooleanbite 类方法 公有类SetApplet中引用自定义类 首先创建类的实例 applea newapple 其次赋初值 a appleweight 0 5 实例变量赋值最后调用它的方法 System out println a bite 调用实例方法 3 1 2类的单继承性Java编程语言中允许用extends关键字从一个类扩展出一个新类 新类继承超类的成员变量和方法 并可以覆盖方法 例3 2 测试类的单继承性 程序输出结果如图3 2所示 源程序代码如下 程序文件名TestExtend javapublicclassTestExtendextendsEmployee publicstaticvoidmain String args System out println 覆盖的方法调用 getSalary 王一 500 System out println 继承的方法调用 getSalary2 王一 500 System out println 覆盖的方法调用 getSalary 王飞 10000 System out println 继承的方法调用 getSalary2 王飞 10000 publicstaticStringgetSalary Stringname intsalary Stringstr if salary 5000 str 名字 name Salary salary elsestr 名字 name Salary 低于5000 returnstr classEmployee publicStringname 名字publicintsalary 薪水publicstaticStringgetSalary Stringname intsalary Stringstr str 名字 name Salary salary returnstr publicstaticStringgetSalary2 Stringname intsalary Stringstr str 名字 name Salary salary returnstr 程序中定义了父类Employee类 它有两个方法getSalary和getSalary2 方法体的实现都是一致的 都为输出名字和薪水的值 在TextExtend主类中覆盖了getSalary方法 方法体重新定义为薪水低于5000时并不输出薪水的值而是输出 低于5000 用于和继承的getSalary2方法进行比较 由图3 2可以看出覆盖的方法按主程序中重定义的方法调用 而继承的方法直接调用父类中的方法 图3 2测试单继承性程序的输出结果 3 1 3特殊变量类中有两个特殊变量super和this 1 super类声明中用关键字extends扩展了其超类之后 super用在扩展类中引用其超类中的成员变量 例3 3 使用super变量 输出结果如图3 3所示 源程序代码如下 程序文件名为UseSuper javapublicclassUseSuper publicstaticvoidmain String args Managerm newManager m name 王飞 m salary 10000 m department 业务部 System out println m getSalary classEmployee publicStringname 名字publicintsalary 薪水 方法publicStringgetSalary Stringstr str 名字 name nSalary salary returnstr classManagerextendsEmployee publicStringdepartment 部门 方法publicStringgetSalary 使用super变量调用超类的方法returnsuper getSalary nDepartment department 图3 3测试super变量的输出 2 thisthis变量指向当前对象或实例 str 名字 name nSalary salary 上例中的语句可以换成下面的语句 str 名字 this name nSalary this salary 这两者是等同的 因为在Java编程语言中 系统自动将this关键字与当前对象的变量相关联 但有一种情况例外 就是当在某些完全分离的类中调用一个方法并将当前对象的一个引用作为参数传递时 例如 Dayd newDay this 3 1 4构造函数类中的构造函数用来初始化一个类 构造函数为公有类型 无返回值 用来从类实例中访问类时初始化此类的私有变量 例3 4 基于例3 3将公有变量改成私有变量之后 增加两个构造函数 访问通过外部调用构造函数实现初始化赋值 得到如图3 3所示的结果 程序文件名为UseConstruct javapublicclassUseConstruct publicstaticvoidmain String args Managerm newManager 王飞 10000 业务部 初始化赋值System out println m getSalary classEmployee privateStringname 名字privateintsalary 薪水 构造函数publicEmployee String name int salary name name salary salary publicStringgetSalary Stringstr str 名字 name nSalary salary returnstr classManagerextendsEmployee privateStringdepartment 构造函数publicManager String name int salary String department super name salary department department publicStringgetSalary returnsuper getSalary nDepartment department 3 1 5包计算机操作系统使用文件夹或者目录来存放相关或者同类的文档 在Java编程语言中 提供了一个包的概念来组织相关的类 包在物理上就是一个文件夹 逻辑上代表一个分类概念 包就是指一组类 例如一个名叫Company的包 可以包含一组类 如Employee 雇员 Manager 管理者 和Department 部门 等 声明包的基本格式如下 Package包名 其中 Package为关键字 包名为标识符 使用包时的注意事项如下 1 Package语句要作为程序非注释语句的第一行语句 2 包内的类名惟一 3 引用包中的类时 使用import语句 import语句的基本格式为import包名 类名 其中import为关键字 包名和类名之间用圆点 隔开 例3 5 编写程序测试包 先建立一个Company文件夹 然后建立名为Manager java的类文件 源程序代码如下 程序文件名为Manager javapackageCompany 声明包名CompanyclassEmployee publicStringname 名字publicintsalary 薪水publicStringgetSalary Stringstr str 名字 name nSalary salary returnstr publicclassManagerextendsEmployee publicStringdepartment 部门publicStringgetSalary returnsuper getSalary nDepartment department 对此文件进行编译 生成类文件Manager class 在原目录建立源程序文件UsePackage java 源程序代码如下 程序文件名UsePackage javaimportCompany Manager 引入包中的类publicclassUsePackage publicstaticvoidmain String args Managerm newManager m name 王飞 m salary 10000 m department 业务部 System out println m getSalary 编译后 在命令提示符状态下运行 输出结果如图3 4所示 从图3 4中可以看出首先进入Company目录 编译Manager java文件 然后返回上层目录 编译UsePackage java文件 最后执行UsePackage类文件 输出正确的结果 图3 4测试包的输出结果 3 2接口 Java编程语言中禁止多继承属性 但可以通过接口来帮助类扩展方法 接口中可以定义大量的常量和方法 但其中的方法只是一种声明 没有具体的实现 使用接口的类自己实现这些方法 接口与类的不同在于 1 没有变量的声明 但可以定义常量 2 只有方法的声明 没有方法的实现 接口声明的基本格式如下 publicinterface接口名extends接口列表 例3 6 测试接口 定义接口文件Product java 定义了两个常量 声明了一个方法 接口文件如下 程序文件名Product javapublicinterfaceProduct staticfinalStringMAKER 计算机制造厂 staticfinalStringADDRESS 上海 publicintgetPrice 使用接口的源文件代码如下 程序文件名UseInterface javapublicclassUseInterface publicstaticvoidmain String args Computerp newComputer System out print p ADDRESS p MAKER System out println 计算机的价格 p getPrice 万元 classComputerimplementsProduct publicintgetPrice return1 首先编译接口文件 javacProduct java 然后编译使用这个接口的类文件 javac UseInterface java 最后执行类 javaUseInterface 输出结果如图3 5所示 图3 5测试接口的输出结果 3 3常用数据结构及类 3 3 1Vector类Vector类似于一个数组 但与数组相比在使用上有以下两个优点 1 使用的时候无需声明上限 随着元素的增加 Vector的长度会自动增加 2 Vector提供额外的方法来增加 删除元素 比数组操作高效 Vector类有三个构造函数 分别如下 publicVector 该方法创建一个空的Vector publicVector intinitialCapacity 该方法创建一个初始长度为initialCapacity的Vector publicVector intinitialCapacity intcapacityIncrement 该方法创建一个初始长度为initialCapacity的Vector 当向量需要增长时 增加capacityIncrement个元素 1 Vector类中添加 删除对象的方法如下 publicvoidadd intindex Objectelement 在index位置添加对象element publicbooleanadd Objecto 在Vector的末尾添加对象o publicObjectremove intindex 删除index位置的对象 后面的对象依次前提 2 Vector类中访问 修改对象的方法如下 publicObjectget intindex 返回index位置对象 publicObjectset intindex Objectelement 修改index位置的对象为element 3 其它方法 publicStringtoString 将元素转换成字符串 publicintsize 返回对象的长度 例3 7 操作Vector对象 进行元素的添加 插入 修改和删除 程序输出结果如图3 6所示 源程序代码如下 程序文件名为UseVector javaimportjava util Vector 引入JDK的Vector类publicclassUseVector publicstaticvoidmain String args VectorvScore newVector vScore add 86 添加元素vScore add 98 添加元素vScore add 1 99 插入元素 输出结果for intI 0 I vScore size I System out print vScore get i vScore set 1 77 修改第二个元素vScore remove 0 删除第一个元素 System out println n修改并删除之后 for intI 0 I vScore size I System out pri
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!