实验1——Java程序设计基础

Size: px
Start display at page:

Download "实验1——Java程序设计基础"

Transcription

1 Java 语言知识要点回顾 一.Java 程序设计基础 1.Java 程序文件 Java 程序可以划分为 Java Application 和 Java Applet 两大类, 其开发原理相同, 运行环境不同 Java 源程序 : 是扩展名为.java 的简单文本文件 Java 字节码 : 是扩展名为.class 的可解释执行的二进制文件 Java 源程序经由 Java 编译器 javac.exe 生成字节码文件 2.Java Application 程序的构成 Java Application 即 Java 应用程序, 是用 Java 语言编写的通过独立的 Java 解释器来解释运行的完整的桌面应用程序 字符界面的结构如下 : public class 类名 // 含 main 方法的主类 public static void main(string args[]) // 必须的 main 方法, 程序运行入口 图形界面的结构如下 : import java.awt.*; // 加载图形界面设计要用的抽象窗口工具包 import java.awt.event.*; // 加载图形界面下响应事件的包 1

2 public class 类名 extends Frame implements ActionListener // 继承于 Frame 的类, 并实现动作事件监听器 ActionListener 接口 组件类 xx ; // xx 组件定义类名 () // 与类名同名的构造方法 xx=new 组件类名 ( 实参 ); //xx 组件初始化 setlayout(new FlowLayout()); // 设置窗体上各控件的布局为流式布局 add(xx);// 将组件加入窗体 xx.addactionlistener(this); // 为 xx 组件注册监听器对象 setsize(w,h); // 设置窗体宽度 w 高度 h setvisible(true); // 让窗体可见 public void actionperformed(actionevent e) // 实现接口的方法 if(e.getsource()==xx) // 判断事件源 处理语句 1 else 处理语句 2 public static void main(string args[]) new 类名 (); // 构造一个新窗体对象 3.Java Applet 的构成 Java Applet 即 Java 小程序, 是用 Java 语言编写的 嵌入在 HTML 编写的 Web 页面中的非独立程序, 由 Web 浏览器内部包含的 Java 解释器来解释运行 通过 <applet> 标记把 XXX.class 嵌入到页面中 结构如下 : 2

3 import java.applet.applet; // 必须引入 Applet 类 public class 类名 extends Applet // 该类必须继承 Applet 类 相应的 HTML 文件如下 : <html> <body > <applet code=" 类名.class" height=400 width=500> </applet> </body> </html> 三种形式 java 程序的主要构成对比 4. 开发 Java 程序的基本步骤编辑源程序 编译生成字节码 解释运行字节码 Java 源程序的编辑 : 编辑环境 : 用 TextPad Edit 记事本或其它 IDE 均可 编辑方法 : 按 Java 编程规范, 按行录入源程序即可 3

4 保存方法 : 录入完毕, 从文件菜单选保存, 注意文件后缀为.java 编译和运行步骤参考第一部分工具的使用 5. Java 中对于标识符的规定命名规则 : 标识符可以由字母 数字和两个特殊字符 ( 下划线 美元符号 ) 组合而成 ; 标识符必须以字母 下划线或美元符号开头 ; Java 是区分大小写的语言 ; 应该使标识符能一定程度上反映它所表示的变量 常量 对象或类的意义 Java 中的命名规范 : 包名 : 包名是全小写的名词 类名 : 首字母大写, 由多个单词合成一个类名时每个单词的首字母也要大写 例如 :class HelloWorldApp 接口名 : 命名规则与类名相同 方法名 : 往往由多个单词合成, 第一个单词通常为动词, 首字母小写, 中间的每个 单词的首字母都要大写 例如 :balanceaccount,isbuttonpressed 变量名 : 全小写, 一般为名词, 例如 :length 常量名 : 基本数据类型的常量名为全部大写 6. Java 语言基础 Java 的数据类型 : 4

5 Java 常量 : Java 中可以用关键字 final 来表示一个常数, 如 : final double CM_PER_INCH=2.54; 还可以用 static final 定义适用于某个类内多个方法的类常数 Java 变量 : Java 的数组 : 声明数组 : 作用 : 声明数组的名称和数组所包含的元素的数据类型 语法 : 格式 1: 数组元素类型数组名 [ ]; 格式 2: 数组元素类型 [ ] 数组名 ; 方括号 [ ] 是数组的标志, 推荐采用格式 2 如 : 一维数组 :int[] MyArray; Car[ ] mycar; 二维数组 : int[][] MyArray; 5

6 创建数组空间 : 定义好的数组必须创建数组空间后才可以使用 Java 不支持变长的数组, 所以在创建数组空间时必须指明数组的长度, 以确定所开辟内存空间的大小 数组长度属性 length 取第一维的长度值 语法格式 : 数组名 = new 数组元素类型 [ 数组元素的个数 ] 例 :MyArray=new int[10]; mycar=new Car[15]; 数组声明可以和创建数组空间同时完成, 如 : int[ ] MyArray=new int[10]; Car[ ] mycar=new Car[15]; 如果数组元素类型是基本数据类型, 可以在创建数组空间的同时赋初值, 如 : int[ ] MyArray=13,21,3,40,25,16,71,48,59,10 创建数组元素并初始化 : 若数组元素类型为基本数据类型, 本步骤可以省略. 对于以某一类对象为数组元素的数组, 则必须创建并利用构造函数来初始化每个数组元素, 一般用循环结构来完成 例 :for ( int i=0; i<mycar.length;i++) mycar [i]= new Car( 奥迪,1000+i);// 出厂流水号 i Java 中数组使用注意事项 : (1) 数组元素的下标从 0 开始, 至数组元素个数 -1 个为止 ; 下标必须是整型数或是可以转化成整型的量 (2) 所有数组都有一个属性 length, 存储的是数组元素的个数 ; (3)Java 系统能自动检查数组下标是否越界 利用 length-1 作为下标的上界可以避免越界 (4)Java 中的数组实际上是一种隐含的 数组类 的实例, 每个数组名是对该实例的一个引用, 而数组的每个元素是对数组元素类实例的引用, 所以新建数组时要有创建数组和创建数组元素两个步骤 Java 运算符 : 6

7 7

8 Java 的运算符及优先级一览表 优先级 描述 运算符 结合性 1 最高优先级. [ ] () 左 / 右 2 单目运算 - ~!++ -- 强制类型转换符 右 3 算术乘除运算 * / % 左 4 算术加减运算 + - 左 5 位移运算 >> << >>> 左 6 大小关系运算 < <= > >= 左 7 相等关系运算 = =!= 左 8 按位与, 非简洁与 & 左 9 按位异或运算 ^ 左 10 按位或, 非简洁或 左 11 简洁与 && 左 12 简洁或 左 13 三目条件运算? : 右 14 简单 复杂赋值 = 运算符 = 右 7. if 语句 if 语句的基本格式 : if ( 条件表达式 ) 语句块 ; // if 分支, 条件表达式为真时执行 else 语句块 ; //else 分支, 条件表达式为假时执行 if 语句的扩展格式 : if ( 条件表达式 1 ) 语句块 1; // 条件表达式 1 为真时执行 else if( 条件表达式 2 ) 语句块 2; // 条件表达式 2 为真时执行 8

9 else if( 条件表达式 n ) 语句块 n; // 条件表达式 n 为真时执行 if 语句的简化格式 : if ( 条件表达式 ) 语句块 ; // if 分支, 条件表达式为真时执行 其他语句块 ; 另外 if 语句可以嵌套 : 例如 :if(x>y) if(x>z) max=x; else max=z; else if(y>z) max=y; else max=z; 8. switch 语句在处理多个分支时, 也可以选择 switch 语句 switch 语句结构如下 : switch( 表达式 ) case 判断值 1: 语句块 1;// 分支 1 case 判断值 2: 语句块 2;// 分支 2 case 判断值 n: 语句块 n;// 分支 n default: 语句块 n+1; // 分支 n+1 对 switch 语句的说明如下 : (1) 表达式只能返回这几种类型的值 :int short 和 char 多分支语句把表达式返回的值依次与每个 case 子句中的值相比较 如果遇到匹配的值, 则执行该 case 语句块 (2)case 子句中的判断值 1~ n 必须是常量 (3) 当表达式的值与任一 case 子句中的值都不匹配时, 程序执行 default 后面的语句, 9

10 default 子句可选 (4)case 分支中包含多条语句时, 可以不用大括号 括起 (5) 与 if-else if 结构相比,switch 语句在数据类型上受限制 注意 : 一般情况下需要用 break 语句让流程跳转出来, 否则可能达不到希望的结果 如果没有 break 语句, 当程序执行完匹配的 case 语句序列后, 还会继续执行后面的 case 语句序列 9. while 语句该语句的功能是实现条件循环, 当条件为真时, 重复循环, 否则退出循环 while 语句的两种格式 : (1) while ( 条件表达式 ) 循环体 ; // 若循环体有多行, 则必须使用花括号将其括起来 (2) do 循环体 ; while ( 条件表达式 ) ; 第一种格式先判断再执行, 第二种格式先执行在判断, 第二种格式不管条件是否成立, 至少会执行一次 10. for 语句该语句的功能是实现条件循环, 当条件成立时, 执行语句集, 否则跳出循环体 for ( 表达式 1; 表达式 2; 表达式 3) 循环体 ; 说明 : 表达式 1 : 初始化参数告诉循环的开始位置, 必须赋予变量初值 ; 表达式 2 : 是用于判别循环停止时的条件 若条件满足, 则执行循环体, 否则跳出 ; 表达式 3 : 增量, 主要定义循环控制变量在每次循环时按什么方式变化 三个主要语句之间, 必须使用英文的封号 ; 分隔 若执行的语句有多行, 则必须用花括号将循环体括起来 10

11 二.Java 面向对象编程初步 1. 类的定义定义类就是定义类的属性和服务 类的属性即静态属性, 指类内的各项数据 ; 类的服务即成员函数或方法 语法结构 : [ 修饰符 ] class 类名 [extends 父类 ] [implements 接口名 ] // 声明类头 // 类体的内容 : 类成员变量的定义类方法的定义 2. 方法的定义方法即成员函数, 它规定类属性上的操作, 实现类的内部功能, 是类与外部交互的窗口 语法结构 : [ 修饰符 ] 返回值类型方法名 ( 参数列表 )throws 例外名 1, 例外名 2, // 声明方法头 // 方法体的内容 : 局部变量声明语句序列 方法的形式参数 : 11

12 定义方法头时所带的参数称为形参, 它规定了方法的输入数据, 调用时所带的参数称为实参 ; 带多个参数时, 要指明各参数的类型, 并用逗号把各参数分隔开来 ; 形实结合 时是按位置顺序一一对应的, 否则会引发编译错误 ; 多个同名方法通过所带参数不同 ( 包括 : 顺序 类型 个数 ) 而实现多态 方法的返回值 : 方法的返回值是方法的输出数据 ; 定义方法头时, 通过定义方法返回值类型说明该方法的输出数据类型, 用 return 语句返回确定的数值 ; 方法无返回值时, 返回值类型应为 void; 格式 : return 表达式 ; 3. 构造方法 ( 也称构造函数 ) 的定义构造方法是用来初始化对象 ( 为其所有静态属性赋初值 ) 的一个特殊方法, 构造方法名与类名相同, 构造方法可以有 0 个或多个参数 构造方法的特点 : 构造方法始终和 new 关键字一起调用 构造方法没有返回值 构造方法一般不能由编程人员显示地直接调用 在创建一个类的新对象时, 系统自动调用构造方法对其进行初始化 构造方法格式 : 构造方法名 ( 参数列表 ) 用来初始化对象的语句 ; 注意 : 构造方法定义了几个形式参数, 创建对象的语句在调用构造方法时, 就需要提供几个类型 顺序一致的实际参数, 指明新建对象各域的初始值 例 2: 定义一个小汽车类 12

13 4. 访问控制符访问控制符用来限定类 属性和方法被程序里的其他部分访问和调用 访问控制符分四类 : 公共访问控制符 public: 修饰类 属性和方法, 可以被所有其他类所访问和引用, 但对类而言, 其中包含的域和方法能否被访问看自身的访问控制符是否也为 public, 缺省访问控制符 : 修饰类 属性和方法, 规定该类只能被同一包中的类访问和引用, 称之为包访问性 ; 类中的域和方法若也没有访问控制符来限定, 则同样具备包访问性 私有访问控制符 private: 修饰属性和方法, 只能被该类自身所访问和修改, 不能被任何其他类 ( 包括子类 ) 获取和引用 保护访问控制符 protected: 修饰属性和方法, 只能被该类自身与它在同一个包中的其他类 在其他包中该类的子类引用, 其主要作用是允许其他包中的它的子类来 13

14 访问父类的特定属性 5. 静态修饰符 static static 是静态修饰符, 可修饰属性和方法, 包括静态属性 静态方法与静态初始化器 (1) 静态属性被 static 修饰的属性不属于任何一个类的具体对象, 是公共的存储单元 任何对象访问它时, 取到的都是相同的数值 静态属性是类属性, 当需要引用或修改一个 static 限定的类属性时, 可以使用类名, 也可以使用某一个对象名, 效果相同 (2) 静态方法用 static 修饰符修饰的方法静态方法是属于整个类的方法 调用这个方法时可以直接使用类名做前缀, 也可以用某个具体的对象名 ; 该方法属于整个类, 它在内存中的代码段随着类的定义而分配和装载 ; 该方法不能操纵属于某个对象的成员变量, 即 static 方法只能处理 static 属性 (3) 静态初始化器直接用 static 当名字 用 包起来的一段特殊代码 与构造方法类似, 完成初始化工作, 但两者的区别是 : 静态初始化器对该类进行初始化, 构造方法对每个新创建的对象初始化 ; 静态初始化器在所属的类加载入内存时由系统调用, 构造方法则在产生新对象时由系统自动执行 ; 14

15 静态初始化器不是方法, 没有方法名 返回值和参数列表 6. 抽象修饰符 abstract abstract 修饰符用来修饰类或方法 (1) 抽象类用 abstract 修饰的抽象类是没有具体实例对象的类, 主要用来实现类之间的继承关系 使用抽象类的优点就是可以充分利用公共属性来提高开发和维护程序的效率 (2) 抽象方法用 abstract 声明的抽象方法仅有方法头而没有具体的方法体, 方法体的实现由当前类的不同子类在各自的类定义中完成 抽象方法只能存在于抽象类中 例 : 7. 最终修饰符 final final 可用来修饰类 属性和方法 (1) 最终类用 final 修饰的最终类不能有子类 (2) 最终属性用 final 修饰的最终属性在整个执行过程中都不会变, 一般用来修饰常量 修饰常量时需要说明常量的数据类型和常量的具体取值 为了节省空间, 常量通常还同时被声明为 static (3) 最终方法用 final 修饰的最终方法其功能和语句都不能再被修改, 即不能被当前类的子类重载 目的是为了预防不必要的重复定义 例 : 15

16 8. 修饰符的混合使用大多数情况下, 修饰符是可以混合使用的 例如 :public abstract class transportmeans... 但有以下例外 : abstract 不能与 final 并列修饰同一个类 ; abstract 不能与 private static final native 并列修饰同一个方法 ; abstract 类中不能有 private 的成员 ( 包括属性和方法 ); abstract 方法必须在 abstract 类中 ; static 方法中不能处理非 static 的属性 9. 几个难点问题辨析 16

17 17

18 三. 深入面向对象编程 1.Java 的包 18

19 在 Java 中, 包以目录形式存在 定义包的目的是把各种类组织在一起, 使得程序功能清楚 结构分明, 有利于实现不同程序间类的复用 缺省情况下, 系统会创建一个无名包, 无名包中的类不能被其他包中的类引用和复用, 为此需要创建有名字的包 创建包的语法 : package 包名 ; // 必须是整个 Java 文件的第一个语句通常一个类只能引用与它在同一包中的类, 若要引用其他包的 public 类, 可使用下列方法 : (1) 使用包名 类名前缀使用同一个包中的类, 只须加上类名作为前缀 ; 若使用其他包中的类, 则还须在类名前缀前加上包名前缀 例 :javax.swing.jtextfield jtxtuserid = new javax.swing.jtextfield(); (2) 加载需要使用的类例 : import card.x1; // 程序开始加载其他包的类 public class Pack public static void main(string args[]) X1 aa=new X1(4,5); // 因类已加载, 不需要再使用包名做前缀 aa.show(); (3) 加载整个包例 : import PhoneCard.*; import java.awt.*; 加载整个包后, 使用这个包中的类不须再使用包前缀 (4)Java 中常用的包 19

20 1) java.lang 包这是 Java 语言的核心类库, 包含了运行 Java 程序必不可少的系统类, 如 : 基本数据类型 基本数学函数 字符串处理 线程 异常处理等, 这个包系统自动加载 2) java.io 包是 Java 语言的标准输入 / 输出类库, 包含了实现 Java 程序与操作系统 用户界面以及其他 Java 程序做数据交换所使用的类 3) java.util 包包含了 Java 语言中的一些低级的实用工具, 如处理时间的 Date 类 处理变长数组的 Vector 类, 栈 Stack 类 散列表 HashTable 类等 4)java.awt 包是 Java 语言用来构建图形用户界面 (GUI) 的类库 低级绘图操作 Graphics 类等 java.awt 图形控件和布局 Container 类 Checkbox 类 LayoutManager 接口等 界面用户控制和事件响应 Event 类 5)java.applet 包是用来实现在 Internet 浏览器中运行 Java Applet 的工具类, 其中包含一个非常有用的类 java.applet. Applet 6) java.awt.event 包是对 Event 类的一个扩充, 可以用不同方式来处理不同类型的事件, 并使每个图形界面元素本身可以拥有处理它上面事件的能力 (5) 使用 Java 包中系统类库的方式 1) 继承系统类, 在用户程序里创建系统类的子类如 : public class SjApplet extends Applet 2) 创建系统类的对象如 :TextField input= new TextField(6) 3) 直接使用系统类如 :System.out.println() 注意 : 使用系统类之前, 用户程序需要用 import 语句引入所用到的系统类或系统类所在的包 如 :import java.awt.*; import java.awt.event.*; 20

21 2. 属性的继承与隐藏 (1) 属性的继承 : 子类从父类继承属性而不是把父类属性的定义部分复制一遍, 可以减少程序维护的工作量 (2) 属性的隐藏 : 对子类从父类继承来的属性变量重新加以定义 即 : 子类定义了与父类同名的属性变量, 即出现了子类变量对同名父类变量的隐藏 区别 : 子类执行继承自父类的操作时, 处理的是继承自父类的变量 子类执行它自己定义的方法时, 操作的是自己定义的变量, 而把继承自父类的变量 隐藏 起来 3. 方法的继承和重写 (1) 方法的继承父类的非私有方法作为类的非私有成员, 可以被子类所继承 (2) 方法的覆盖即子类定义与父类同名的方法, 除非使用 super 关键字或父类名为前缀, 否则调用的都是自己定义的方法 注意 : 子类在重新定义父类已有的方法时, 应保持与父类完全相同的方法头声明 (3) 方法的重载即类对自身已有的同名方法重新定义 方法的重载是同类中同名方法共存的情况, 需通过参数列表 ( 包括类型 顺序和数目 ) 来区分不同的方法 注意 : 不能通过方法的返回值来区分同名的不同方法 4. 构造方法的重载 (1) 构造方法重载的概念 指同一个类中存在着若干个具有不同参数列表的构造方法 出现重载情况时, 创建该类对象的语句会自动根据给出的实际参数的数目 类型和顺序来确定调用哪个构造方法来完成新对象的初始化工作 一个类的若干构造方法之间可以通过关键字 this 来互相调用, 目的是最大限度地利用已有程序, 提高程序的抽象 封装程度, 减少程序维护工作量 注意 :this 语句必须是整个构造方法的第一个可执行语句 (2) 构造方法继承应遵循的原则 21

22 子类无条件地继续父类的不含参数的构造方法 ; 如果子类自己没有构造方法, 则将继承父类的无参构造方法作为自己的构造方法 ; 如果子类自己定义了构造方法, 则在创建新对象时, 先执行从父类继承来的无参构造方法, 然后再执行自己的构造方法 ; 对于父类的含参构造方法, 子类可以通过在自己构造方法中使用 super 关键字来调 用它, 但这个调用语句必须是子类构造方法的第一个可执行语句 5.this 和 super 的使用 super 和 this 是用来指代父类对象和子类对象的关键字 Java 系统默认每个类都缺省地具有 null this 和 super 三个量,null 代表 空 (1)this this 表示的是当前对象本身, 代表当前对象的一个引用 (2)super 代表当前对象的直接父类对象, 是当前对象的直接父类对象的引用 6. 异常处理 异常是特殊的错误运行对象, 又称例外, 对应着 Java 语言特定的运行错误处理机制 22

23 为了能够及时有效地处理程序中的运行错误,Java 引入了异常和异常类, 异常是异常类的对象 异常分为 : 系统定义异常和用户自定义异常 创建用户自定义异常时, 一般需要完成如下工作 : (1) 声明一个新的异常类, 使之以 Exception 类或其他某个已经存在的系统异常类或用户异常类为父类 ; (2) 为新的异常类定义属性和方法, 或重载父类的属性和方法, 使这些属性和方法能够体现该类所对应的错误的信息异常的抛出 : Java 程序在运行时如果由于可识别的错误, 系统就产生一个与该错误相对应的异常类的对象, 这个过程就是异常的抛出 (1) 系统自动抛出的异常所有系统定义的运行异常都可以由系统自动抛出 (2) 语句抛出的异常用户程序定义的异常不可能靠系统自动抛出, 必须借助 throw 语句定义何种情况才算产生了此种异常对应的错误, 并抛出这个异常类的新对象 语法 : 修饰符返回类型方法名 ( 参数列表 ) throws 异常类名列表... throw 异常对象 ;... 捕捉异常 : 异常被抛出时, 用专门的语句来接收异常对象, 格式如下 : catch( 异常类名异常形式参数名 ) 异常处理语句 ; 7. 接口 23

24 接口又称界面, 是由抽象方法和常量组成的特殊类, 代表了某一组功能的实现, 是用来实现类间多重继承功能的结构 Java 中一个类只能有一个父类, 但可以同时实现若干个接口, 故可以实现类似于类的多重继承的功能 接口仅仅定义对外接口和规范, 并没有实现这个功能 ; 功能是在继承了这个接口的类中完成的 接口的访问控制符只有 public 一个, 表明可以被所有的类和接口使用, 如果没有此修饰符, 则只能被同一个包中的其他类和接口利用 接口也具有继承性, 用 extends 来声明, 一个接口可以有一个以上的父接口, 之间用逗号分隔 接口用关键字 interface 来声明 语法格式如下 : [public] interface 接口名 [extends 父接口名列表 ] // 常量域说明 ; [public] [static] [final] 域类型域名 = 常量值 ; // 抽象方法声明 [public] [abstract] [native] 返回值方法名 ( 参数列表 ) (throw 异常列表 ); 8. 字符串相关类 Java 语言中, 把字符串作为对象来处理, 类 String 和 StringBuffer 都可以用来表示一个字符串 在 java 中, 每个字符 ( 不论中文还是西文 ) 都是占用 16 个比特的 Unicode 字符, 故都只要一个字符表示 字符串的常用方法 : (1) 求字符串的长度的方法 : public int length(); (2) 判断字符串的前缀和后缀 public boolean startswith(string prefix); public boolean endswith(string suffix); 这两个方法分别用来判断当前字符串的前缀和后缀是否为指定的字符子串 (3) 查找字符的方法 public int indexof(int ch); 24

25 从前往后查找字符 ch 在当前字符串中第一次出现的位置, 并返回字符 ch 出现的位置, 若找不到返回 -1 public int indexof(int ch,int fromindex); 在当前字符串中自 fromindex 位字符之后向后查找 (4) 比较两个字符串 public int compareto(string anotherstring); 若当前字符串与参数字符串完全相同 / 大于 / 小于时, 则返回 0/1/-1 (5) 大小写转换 public String tolowercase( ) // 把字符串都转换成小写 public String touppercase( ) // 把字符串都转换成大写 9. 日期时间类 Date 类 : 表示日期和时间例 : Date now=new Date( ); System.out.println(now.toString()); now.getyear()-m_startworkdate.getyear()>=3 10.Math 类用来完成一些常用的数学运算, 其主要属性和方法如下 : public static double abs(double a); public static double exp(double a); // 绝对值 //e 的 a 幂 public static double floor(double a); // 不大于 a 的最大整数 public static double log(double a); public static double sqrt(double a); // 自然对数 // 开平方 public static double random(); // 产生 0 到 1 之间的随机数 public static double pow(double a, double b ); // 乘方 public static double rint(double a); // 四舍五入 public static double IEEEremainder(double a, double b); // 求余数 ( 取模运算 ) public static final double E= // 数学常数 e public static final double PI= // 圆周率常量 π 25

26 public static float min(float a, float b); // 求最小值 public static double max(double a, double b); // 求最大值 26

27 四.AWT 与 Swing 图形用户界面的程序设计 AWT 组件的类层次 Component 组件是所有 AWT 组件的基类, 提供了基本的显示和事件处理特征 1. 图形用户界面的用户自定义成分 主要用于美化界面效果 (1) 绘制图形 用 Graphics 类可以绘制 : 线段 矩形 多边形 圆 椭圆 圆弧 扇形 27

28 绘制线段 drawline(x1, y1, x2, y2); 绘制矩形 drawrect (x, y, w, h); fillrect(x, y, w, h); 绘制圆角矩形 drawroundrect(x, y, w, h, aw, ah); fillroundrect(x, y, w, h, aw, ah); draw2drect(x, y, w, h, raised); 绘制椭圆 drawoval(x, y, w, h); filloval(x, y, w, h); 绘制圆弧 drawarc(x, y, w, h, angle1, angle2); fillarc(x, y, w, h, angle1, angle2); 绘制多边形 int[] x = 40, 70, 60, 45, 20; int[] y = 20, 40, 80, 45, 60; g.drawpolygon(x, y, x.length); g.fillpolygon(x, y, x.length); (2) 设置字体用 Graphics 类的 drawstring() 方法显示字符串 ; 用 Font 类设置字体效果, 每创建一个类对象, 代表一种字体效果, 包括字体类型 字型和字号 创建字体对象 Font MyFont=new Font( TimesRoman,Font.BOLD,12); 使用字体对象 g.setfont(myfont); //g 是 Graphics 类型的对象 btn.setfont(myfont); //btn 是按钮对象 可以用 getfont() 方法返回当前对象使用字体的情况 28

29 (3) 设置颜色用 Color 类的对象来控制, 每个 Color 对象代表一种颜色, 用户可以直接使用系统定义好的 13 种颜色常量, 也可以通过红 绿 蓝三色比例来创建自己的 Color 对象 (4) 显示图像 Java 中可以利用 Graphics 类的 drawimage() 方法显示图象 显示图像涉及 3 个方法 : drawimage( ) 显示图像如 :g.drawimage ( myimage, 0, 0, this); 参数 1--Image 对象, 可用 getimage() 方法获得 参数 2 参数 3 -- 图像左上角的 X.Y 坐标 getimage( 参数 1, 参数 2 ) 将图像文件加载到对象中参数 1-- 图像文件所在的 URL 地址 参数 2-- 图像文件的文件名 如 :myimage = getimage ( getdocumentbase( ), blackbrd.gif ) ; getdocumentbase() 获取含有该 Applet 的 HTML 文件的 URL 地址 2.GUI 标准组件常用的 GUI 标准组件 AWT(Swing) 如下 : (1) 标签 (Label)( J Label ) Label 有三个构造函数 : Label () Label (String) Label (String,int) 创建一个带初始字符串及指定对齐方式的标签 0= Label.LEFT 1= Label.RIGHT 2= Label.CENTER 常用方法有 : gettext( ) settext( ) 标签一般不引发事件, 只用来给出提示信息 (2) 按钮 (Button)( JButton) 按钮有两个构造函数 : Button( ) Button(String Label)// 创建一个带标示字符串的按钮 29

30 (3) 文本域 (TextField)( JTextField)( JPasswordField 密码框 ) TextField 有四个构造函数 : TextField( ) TextField (int) TextField (String) TextField(String,int) 带有初始文本及指定长度 (4) 多行文本组件 (TextArea)( JTextArea) 多行文本组件有五个构造函数 : TextArea () // 创建一个多行文本框 TextArea (int, int ) // 用指定的行数 列数创建 TextArea (String) // 用指定的初始文本创建 TextArea (String, int, int ) // 用指定的初始文本 行数 列数创建 TextArea ( String,int, int, int)// 用指定的初始文本 行数 列数及滚动条创建因为 TextField 和 TextArea 都是 TextComponent 的子类, 大部分方法都继承自 TextComponent, 所以他们有许多共同的方法 (5) 复选框组件 (Checkbox)( JCheckbox) 复选框有三个构造函数 : Checkbox() Checkbox(String) // 不带显示标签 // 带一个显示标签 Checkbox(String,boolean)// 带显示标签和初始状态复选框组件有状态属性, 为 on/off, 默认情况下为 off (6) 单选钮组件 (JRadioButton) 单选钮组件要先用 CheckboxGroup() 构造一个 CheckboxGroup 对象, 再用 Checkbox(String, boolean, CheckboxGroup ) 方法创建 Checkbox 对象, 如果不同的 Checkbox 在创建时属于同一个 CheckboxGroup, 则组成单选钮组 单选钮使用的构造函数 : Checkbox(String,boolean,CheckboxGroup )// 带显示标签 初始状态和所属按 钮组 (7) 下拉列表组件 (Choice)( JComboBox) 创建下拉列表 : 30

31 Choice() // 创建下拉列表 ( 组合框 ) (8) 列表组件 (List)( JList) 创建列表 : List() // 创建列表 List(int) // 以指定的可见行数创建列表 List(int,boolean) // 指定可见行数和是否允许多项选择 (9) 滚动条组件 (Scrollbar)( JScrollbar) 滚动条有三个构造函数 : Scrollbar() // 创建一个垂直滚动条 Scrollbar ( int ) // 指定方向的滚动条, Scrollbar.HORIZONTAL ( 水平状 ) Scrollbar.VERTICAL ( 垂直状 ) Scrollbar (int, int, int, int,int)// 指定方向 初始值 滚动块大小 最小值 最大值 (10) 面板组件 (Panel)( JPanel) 创建面板 : Panel() // 用默认的布局管理器 (FlowLayout) 创建面板 Panel(LayoutManager layout) // 用指定的布局管理器 (FlowLayout) 创建面板 3. 布局管理器 要将组件加入某个容器中可以用到两种添加方法 : 单参数 add() 方法 双参数 add() 方法 : 加入了布局参数当使用第二种方法时, 则要用到布局管理 31

32 布局管理器用来确定组件在容器中的位置和大小,AWT 中定义了布局管理器接口 LayoutManager 的实现类来实现此功能 每一个容器组件都有一个默认的布局管理方式, 也可以用 setlayout 方法来设置其他布局管理器 一旦确定了布局管理方式, 容器组件就可以用 add 方法加入组件 布局设计的三步 : 创建布局类对象 设置为自己的布局管理器 添加组件 (1) FlowLayout 是一种最简单的布局管理, 是 Panel 的默认布局 它以流式自左向右 自上而下地放置容器中的组件, 其默认方式为居中对齐方式, 也可以手工设置左对齐或右对齐 (2) BorderLayout 是 Frame 和 Dialog 的默认布局 它将整个容器分为东 西 南 北 中 5 个部分, 加入组件时需要指明放置的位置 (3) GridLayout 布局将容器划分成 m 行 n 列大小相同的格子, 组件放在格子中 (4) GridBagLayout 布局将容器划分成很多矩形小格子, 每个组件可以占用一个或多个单元, 从而可以指定每个组件所占空间的大小 (5) CardLayout 布局将容器中的组件象扑克牌一样排列, 每次只能显示最上面的一张 4. 菜单包括 : 菜单条式菜单和弹出式菜单两类 设计步骤 : (1) 创建菜单条 MenuBar; 如 : MenuBar m_ MenuBar=new MenuBar( ); (2) 创建菜单 Menu, 并加入到菜单条中 ; (3) 创建菜单项 MenuItem, 并加入到菜单中 ; (4) 将菜单条加入容器中 引发事件 : 菜单子项引发 ActionEvent 和 ItemEvent 类型的事件 5. 对话框 Dialog 类 ( 对话框 ) 用来显示或者提示输入信息, 与用户进行交互 (1) 文件对话框 (FileDialog) 文件对话框主要用于打开和保存文件时让用户选择文件名, 文件对话框是由操作系统 32

33 提供的标准对话框 文件对话框必须依附一个 Frame 对象 文件对话框的属性变量 : FileDialog.LOAD 打开文件对话框 FileDialog.SAVE 保存文件对话框 (2) 消息对话框消息对话框是有模式对话框, 进行一个重要的操作动作之前, 最好能弹出一个消息对话框 JOptionPane 类的静态方法 : public static void showmessagedialog(component parentcomponent, String message, String title, int messagetype) 创建一个消息对话框 messagetype 取下列值 : JOptionPane.INFORMATION_MESSAGE JOptionPane.WARNING_MESSAGE JOptionPane.ERROR_MESSAGE JOptionPane.QUESTION_MESSAGE JOptionPane.PLAIN_MESSAGE 这些值可以确定对话框的外观 (3) 确认对话框确认对话框是有模式对话框 JOptionPane 类的静态方法 : public static int showconfirmdialog ( Component parentcomponent, Object message, String title, int optiontype) 得到一个确认对话框 messagetype 取下列有效值 : JOptionPane.YES_NO_OPTION JOptionPane.YES_NO_CANCEL_OPTION JOptionPane.OK_CANCEL_OPTION 这些值可以确定对话框的外观. (4) 输入对话框 33

34 输入对话框是有模式对话框 JOptionPane 类的静态方法 : public static int showinputdialog ( Component parentcomponent, Object message, String title, int messagetype) 得到一个确认对话框 messagetype 取下列有效值 : ERROR_MESSAGE INFORMATION_MESSAGE WARNING_MESSAGE QUESTION_MESSAG PLAIN_MESSAGE 这些值可以确定对话框的外观 该例运行过程中, 对话框显示的结果如下 : 34

35 (5) 颜色对话框 javax.swing 包中的 JColorChooser 类的静态方法 : public static Color showdialog(component component, String title, Color initialcolor) 创建一个颜色对话框 效果如图 5-1 所示 参数 component 指定对话框所依赖的组件 title 指定对话框的标题 initialcolor 指定对话框返回的初始颜色, 即对话框消失后, 返回的默认值 颜色对话框可根据用户在颜色对话框中选择的颜色返回一个颜色对象 图 5-1 颜色对话框 6. 事件处理 35

36 (1) 事件处理三要素事件源 事件类型 事件监听者 事件源 : 图形用户界面的每个可能产生事件的组件 事件源可以注册监听者对象, 并向其发送事件对象 事件类型 : Java 的所有事件都封装成一个类, 这些事件类被集中在 java.awt.event 包中, 所有的事件类都继承了 AWTEvent 类的一个方法 getsource(), 该方法返回所发生事件的对象 事件监听者 : 不同类型的事件发生后, 由事件监听者接收事件并调用相应的事件处理方法 监听者对象 : 实现了监听者接口的类的实例, 具有监听和处理某类事件的功能 (2) 事件处理过程一般说来, 每个事件类都有一个监听者接口与之对应, 而事件类中的每个具体事件类型都有一个具体的抽象方法与之相对应, 当具体事件发生时, 这个事件将被封装成一个事件类的对象作为实际参数传递给与之对应的具体方法, 由这个具体方法负责响应并处理发生的事件 例如 : 与 ActionEvent 类事件对应的接口是 ActionListener, 这个接口定义了抽象方法 : public void actionperformed(actionevent e); (3) 动作事件 (ActionEvent ) 的处理能够触发动作事件的动作有 : 点击按纽双击一个列表框中的选项选择菜单项在文本框中输入回车 动作事件对应的事件监听器是 ActionListener, 其主要方法是 : actionperformed(actionevent e) 发生动作事件时被调用实现动作事件的操作过程 : 1) 注册动作事件监听器 addactionlistener( 监听者 ) 2) 实现 ActionListener 接口的方法 : actionperformed(actionevent e) (4) 文本事件 (TextEvent) 的处理用于文本处理的基本组件有两种 : 单行文本框 TextField 和多行文本区域 TextArea, 它 36

37 们都是 TextComponent 的子类 (5) 选择事件 (ItemEvent) 的处理引发这类事件的动作包括 : 改变列表类 List 对象选项的选中或不选中状态 改变下拉列表类 Choice 对象选项的选中或不选中状态 改变复选按钮类 Checkbox 对象的选中或不选中状态 改变检测盒菜单项 CheckboxMenuItem 对象的选中或不选中状态 (6) 鼠标事件处理鼠标事件对应的事件监听器有两个 : MouseListener( 或 MouseAdapter) 对应鼠标事件 ; MouseMontionListener( 或 MouseMontionAdapter) 对应鼠标移动事件 MouseListener( 或 MouseAdapter) 的主要方法 : MouseClicked(MouseEvent e) 单击鼠标时的处理方法 MouseEntered(MouseEvent e) 鼠标进入时的处理方法 MouseExited(MouseEvent e) 鼠标离开时的处理方法 MousePressed(MouseEvent e) 鼠标按钮按下时的处理方法 MouseReleased(MouseEvent e) 鼠标按钮松开时的处理方法 MouseMontionListener( 或 MouseMontionAdapter) 的主要方法 : MouseMoved(MouseEvent e) 鼠标移动时的处理方法 MouseDragged(MouseEvent e) 拖动鼠标时的处理方法实现鼠标事件的过程 : 1) 注册 MouseListener 监听器 add MouseListener(), 当事件源所在的类已经实现 MouseListener 接口时, 参数可用 this, 否则需要创建或继承一个 MouseListener 2) 实现 MouseListener 接口的 5 个主要方法 鼠标移动事件的实现与此类似 (7) 键盘事件处理键盘事件对应的事件监听器为 :KeyListener 或 KeyAdapter KeyListener 的主要方法 : keypressed(keyevent e) 按下键时的处理方法 keyreleased(keyevent e) 释放键时的处理方法 37

38 keytyped(keyevent e) 按下非系统键时的处理方法 五. 输入输出流和文件处理 1 Java 的常用输入 输出流 常用的输入输出流都继承自 4 个抽象类, 分别是基于字节的 InputStream,OutputStream 类和基于字符的 Reader 和 Writer 类 InputStream 和 OutputStream 类及其子类以字节为单位读写数据, 所以称为字节流, 而 Reader 和 Write 类及其子类以字符为单位读写数据, 称为字符流 2 字节流 字节流包括以下几种类型, 如表 7-1 所示 表 5-1 常见的字节流子类及功能 字节流的类名 功能 FileOutputStream 写入文件的输出流 FileInputStream 从文件读入的输入流 DataOutputStream 包含了写 Java 标准数据类型的输出流 DataInputStream 包含了读取 Java 标准数据类型的输入流 BufferedInputStream 缓冲输入流 BufferedOutputStream 缓冲输出流 ByteArrayInputStream 从字节数组读取的输入流 ByteArrayOutputStream 写入字节数组的输出流 PrintStream 包含最常见的 Print() 和 Println() 的输出流 2.1 InputStream 的常用方法 InputStream 是所有字节输入流的父类, 其常用方法如表 7-2 所示 表 5-2 InputStream 类的常用方法 方法名 功能 int read( ) 读取一个字节, 返回值为所读的字节 38

39 int read( byte b[ ] ) 读取多个字节, 放置到字节数组 b 中 int read( byte b[ ], int off, int 读取 len 个字节, 放置到以下标 off 开始字节数组 b 中 len ) int available( ) 返回值为流中尚未读取的字节的数量 long skip( long n ) 读指针跳过 n 个字节不读, 返回值为实际跳过的字节 数量 close( ) 关闭输入流 2.2 OutputStream 的常用方法 OutputStream 是所有字节输出流的父类, 其常用方法如表 7-3 所示 表 5-3 OutputStream 类的常用方法 方法名 功能 void write( byte b ) 往输出流中写一个字节 b void write( byte b[ ] ) 往输出流中写一个字节数组 b void write( byte b[ ], int off, int len ) 把字节数组 b 中从下标 off 开始 长度为 len 的字节写入流中 flush( ) 刷空输出流, 并输出所有被缓存的字节 close( ) 关闭输出流 3 字符流 字符流包括以下几种类型, 如表 7-4 所示 表 5-4 常见的字符流子类及功能 字符流的类名 功能 InputStreamReader 将字节转换为字符的输入流 OutputStreamWriter 将字节转换为字符的输出流 FileReader 从文件读入的输入流 FileWriter 写入文件的输出流 CharArrayReader 从字符数组读取的输入流 CharArrayWriter 写入字符数组的输出流 StringReader 从字符串读取的输入流 StringWriter 写入字符串的输出流 BufferedReader 针对字符的缓冲输入流 BufferedWriter 针对字符的缓冲输出流 3.1 Reader 的常用方法 Reader 是所有字符输入流的父类, 其常用方法如表 7-5 所示 表 5-5 Reader 类的常用方法 方法名 功能 int read( ) 读取单个字符, 返回作为整数读取的字符 int read( char[] cbuf ) 将字符读入数组, 返回读取的字符数 39

40 int read( char[] cbuf, int off, int 读取 len 个字符的数据存放到数组 cbuf 中 len ) long skip( long n ) 跳过 n 个字符不读, 返回值为实际跳过的字符数 close( ) 关闭输入流 3.2 Writer 的常用方法 Writer 是所有字符输出流的父类, 其常用方法如表 7-6 所示 表 5-6 Writer 类的常用方法 方法名 功能 void write( int c ) 往流中写入单个字符 c void write(char[] cbuf ) 往流中写入字符数组 cbuf void write( char[] cbuf, int off, int 将字符数组 cbuf 的一部分写入输出流 len ) void write(string str) 写入字符串 void write(string str,int off,int len) 写字符串的某一部分 void flush() 刷新该流的缓冲, 将缓冲的数据全部写到目的地 close( ) 关闭输出流 4 文件的处理和随机访问 4.1 Java 程序的文件与目录管理 Java.io 包中的 File 类用来管理磁盘文件和目录 每个 File 类的对象表示一个磁盘文件或目录, 对象属性中包含名称 长度 所含文件个数等信息 1. 创建 File 类对象的三种方法 (1)File(String path) (2)File(String path, String name) (3)File(File dir, String name) 2. 获取文件或目录信息获取文件或目录信息的常用方法如表 7-7 所示 表 5-7 获取文件或目录信息的方法方法名含义 boolean exists( ) 若文件或目录存在则返回 true boolean isfile( ) 若对象代表有效文件则返回 true boolean isdirectory( ) 若对象代表有效目录则返回 true String getname( ) 返回文件名或目录名 String getpath( ) 返回文件或目录的路径 long length( ) 返回文件的字节数 boolean canread( ) 若文件为可读文件则返回 true boolean canwrite( ) 若文件为可写文件则返回 true boolean equals(file f ) 若两个文件对象相同则返回 true 40

41 String[] list( ) 将目录中所有文件名存在数组中返回 3. 文件或目录的操作对文件或目录进行操作的相应方法如表 7-8 所示 表 5-8 文件或目录操作的方法 方法名 boolean renameto(file newfile) void delete( ) 4.2 写文本文件的方法 boolean mkdir( ) 以下仅通过示例, 说明写文本文件的方法 含义 将文件重命名 将当前文件删除 创建当前目录的子目录 例 5-1: 设文本文件名为 my.txt, 先用 FileOutputStream 打开文件, 然后用 PrintStream 对象的 println 方法将字符串写入该文件中 代码如下 : import java.io.*; public class testfile public static void main(string args[]) try FileOutputStream fout=new FileOutputStream("my.txt"); PrintStream p=new PrintStream(fout); p.println( 网络 082 唐广昌男江苏 "); p.println( 网络 083 李仁杰男河北 "); p.close(); catch(ioexception ex) 例 5-2: 用 FileWriter 打开文本文件, 再创建 PrintWriter 对象, 用其 print( 或 println) 方法将字符串写入文件中 代码如下 : import java.io.*; public class testfw public static void main(string args[]) try FileWriter fw= new FileWriter("myf.txt"); PrintWriter out=new PrintWriter(fw); out.println(" 网络 082 唐广昌男江苏 "); out.println(" 网络 083 李仁杰男河北 "); out.close(); catch(ioexception ex) fw.close(); 41

42 4.3 读文本文件的方法例 5-3: 用 FileReader 打开文本文件, 然后用 BufferedReader 类的对象作为文件流, 用其 readline 方法读取文件中的字符串 代码如下 : import java.io.*; public class testfr public static void main(string args[]) try FileReader fr= new FileReader ("myf.txt"); BufferedReader br=new BufferedReader(fr); String record=new String( ); int reccount=0; while ((record=br.readline())!=null) reccount++; System.out.println(recCount+":"+ record); br.close(); fr.close(); catch(ioexception ex) 4.4 文件的随机访问用 RandomAccessFile 类可以实现对文件的随机读写操作, 即可以在文件的任意位置执行数据读写 其常用方法如表 7-9 所示 表 7-9 RandomAccessFile 类的常用方法方法名作用 public long getfilepointer( ) 获得当前文件位置指针从文件头算起的绝对位置 public void seek( long pos ) 将文件读写指针移动到 pos 指定的位置 public long length( ) 返回文件的字节长度例 5-4: 利用 RandomAccessFile 类的方法, 在 my.txt 文件后增加一行信息, 代码如下所示 import java.io.*; public class testraf public static void main(string args[]) try File f=new File("my.txt"); RandomAccessFile raf= new RandomAccessFile(f,"rw"); long fileend=raf.length(); 42

43 byte[] stu_info =" 网络 081 吴旭婧女江苏 ".getbytes(); raf.seek(fileend); raf.write(stu_info); raf.close(); catch(ioexception ex) 六. Java 多线程 1 Java 中实现多线程的方法 在程序中实现多线程有两种途径 : 创建 Thread 类的子类或实现 Runnable 接口 无论采用哪种途径, 程序员可以控制的关键性操作有两个 :(1) 在适当时候建立用户线程实例 ;(2) 定义用户线程的操作, 即定义用户线程的 run( ) 方法 方法 1: 继承 Thread 类, 重写方法 run() 在创建的 Thread 类的子类中重写 run(), 加入线程所要执行的代码即可 例 6-1 和例 6-2 中即采用了这种方法 例 6-1: public class TwoThread extends Thread public void run() for ( int i = 0; i < 10; i++ ) System.out.println("New thread"); public static void main(string[] args) 43

44 TwoThread tt = new TwoThread(); tt.start(); for ( int i = 0; i < 10; i++ ) System.out.println("Main thread"); 例 6-2: public class mainclass extends Applet C t1=new C(this); public void init() t1.start(); public void paint(graphics g) g.filloval(20,20,200,200); g.drawrect(20,20,200,200); class C extends Thread mainclass a; C(mainclass b) a=b; public void run() while(true) a.repaint(); try sleep(400); catch(interruptedexception e) 方法 2: 实现 Runnable 接口例 6-3: 通过实现 Runnable 接口来实现多线程 import java.applet.applet; import java.awt.*; public class TestRunnable extends Applet implements Runnable //Java Applet 主类 Label prompt1 = new Label(" 第一个子线程 ");// 标签 1 Label prompt2 = new Label(" 第二个子线程 ");// 标签 2 TextField threadfirst = new TextField(14); // 文本框 1 TextField threadsecond = new TextField(14); // 文本框 2 44

45 Thread thread1,thread2; // 两个 Thread 的线程对象 int count1=0,count2=0; // 两个计数器 public void init() add(prompt1); add(threadfirst); add(prompt2); add(threadsecond); setfont(new Font(" 隶书 ",Font.ITALIC,20)); public void start() // 创建线程对象, 具有当前类的 run() 方法, 并用字符串指定线程对象的名字 thread1 = new Thread(this,"FirstThread"); thread2 = new Thread(this,"SecondThread"); thread1.start(); // 启动线程对象, 进入就绪状态 thread2.start(); public void run() // 实现 Runnable 接口的 run() 方法, 在该线程启动时自动执行 String currentrunning; while(true)// 无限循环 try // 使当前活动线程休眠 0 到 3 秒 Thread.sleep((int)(Math.random() * 3000)); catch(interruptedexception e) currentrunning = Thread.currentThread().getName(); if(currentrunning.equals("firstthread")) count1++; threadfirst.settext(" 线程 1 第 "+count1+" 次被调度 "); else if(currentrunning.equals("secondthread")) count2++; threadsecond.settext(" 线程 2 第 "+count2+" 次被调度 "); //while 循环结束 //run() 方法结束 45

46 该程序的运行结果如图 7-2 所示 2 线程的同步 图 6-2 例 6-3 的运行界面 由于同一进程的多个线程共享同一片存储空间, 在带来方便的同时, 也带来了访问冲突这个严重的问题 Java 语言提供了专门机制以解决这种冲突, 有效避免了同一个数据对象被多个线程同时访问 针对方法提出一套机制, 这套机制就是 synchronized 关键字, 它包括两种用法 :synchronized 方法和 synchronized 块 1.synchronized 方法 : 通过在方法声明中加入 synchronized 关键字来声明 synchronized 方法 synchronized 方法控制对类成员变量的访问 : 每个类实例对应一把锁, 每个 synchronized 方法都必须获得调用该方法的类实例的锁方能执行, 否则所属线程阻塞 方法一旦执行, 就独占该锁, 直到从该方法返回时才将锁释放, 此后被阻塞的线程方能获得该锁, 重新进入可执行状态 这种方法有效避免了类成员变量的访问冲突 2.synchronized 块 : 通过 synchronized 关键字来声明 synchronized 块 语法如下 : synchronized(syncobject) // 允许访问控制的代码 synchronized 块是这样一个代码块, 其中的代码必须获得对象 syncobject 的锁方能执行, 具体机制同前所述 由于可以针对任意代码块, 且可任意指定上锁的对象, 故灵活性较高 例 6-4: 设有火车票售票系统, 共有 3 个售票点共同销售 500 张火车票, 请用多线程来摸拟这个售票系统 分析 :3 个售票点的活动可用 3 个线程来摸拟, 这里的车票为共享数据, 为了保证共享数据的安全, 可以用 synchronized 来进行方法或代码块的同步 代码如下 : public class TicketSellingTest public static void main(string args[]) TicketSelling off=new TicketSelling(); // 要多线程运行的售票系统 Thread t1=new Thread(off); t1.setname(" 售票点 1"); t1.start(); Thread t2=new Thread(off); t2.setname(" 售票点 2"); 46

47 t2.start(); Thread t3=new Thread(off); t3.setname(" 售票点 3"); t3.start(); class TicketSelling implements Runnable private int tickets=0; // 对车票进行计数的成员变量 public void run( ) // 线程体 boolean flag=true; // 是否还有票可卖 -- 局部变量 while(flag) flag=sell(); // 售票 public synchronized boolean sell() // 同步售票方法, 返回值表示是否还有票可卖 boolean flag=true; if(tickets<1000) tickets=tickets+1; // 更改票数 System.out.println(Thread.currentThread().getName()+": 售出第 "+tickets+" 张票 "); else flag=false; try Thread.sleep(15); catch(interruptedexception e) e.printstacktrace(); return flag; 47

48 运行结果为 : 售票点 1: 售出第 1 张票售票点 2: 售出第 2 张票售票点 3: 售出第 3 张票售票点 1: 售出第 4 张票售票点 2: 售出第 5 张票售票点 3: 售出第 6 张票 售票点 1: 售出第 997 张票售票点 2: 售出第 998 张票售票点 3: 售出第 999 张票售票点 1: 售出第 1000 张票 3 用 Timer 类调度任务 从 JDK1.3 开始,JDK 提供了 java.util.timer 类来定时执行任务 Java.util.Timer 类代表一个计时器, 与每个 Timer 对象相对应的是单个后台进程, 用于顺序地执行所有计时器任务 这个计时器执行的任务用 java.util.timertask 子类的一个实例来代表 Java.util.TimerTask 类是一个抽象类, 要创建一个定时任务时, 只需要继承这个类并实现 run() 方法, 再把要定时执行的任务代码添加到 run() 方法体中即可 示例代码如下 : class MyTask extends TimerTask // 定时任务类 public void run() // 实现 run() 方法 System.out.println( 大家好 ); 定义好定时任务类之后, 就可以用 Timer 类来定时执行了 Timer 类中用来执行定时任务的常用方法如下 : (1)public void schedule(timertask task,long delay,long period): 重复地以固定的延迟时间去执行一个任务 (2)public void scheduleatfixedrate(timertask task,long delay,long period): 重复地以固定的频率去执行一个任务 (3)public void cancel(): 终止此计时器, 丢弃所有当前已安排的任务 例 6-5: 利用 Timer 类, 在屏幕上每隔一秒显示当前的系统时间 import java.util.timer; import java.util.timertask; import javax.swing.*; import java.util.date; import java.awt.*; import java.text.simpledateformat; 48

49 public class TimeTest extends JFrame JLabel lbl1=new JLabel(" 现在的时间是 :"); static JTextField txt=new JTextField(10); TimeTest() super(" 显示系统时钟 "); setlayout(new FlowLayout()); setdefaultcloseoperation(jframe.exit_on_close); this.getcontentpane().add(lbl1); this.getcontentpane().add(txt); public static void main(string[] args) Timer timer=new Timer(); // 立即开始执行指定任务, 并间隔 1000 毫秒就重复执行一次 timer.schedule(new MyTask(),0,1000); TimeTest tt=new TimeTest(); tt.setsize(300,100); tt.setvisible(true); class MyTask extends TimerTask // 定时任务类 public void run() // 实现 run() 方法 SimpleDateFormat sdf1=new SimpleDateFormat("HH:mm:ss,E"); TimeTest.txt.setText(sdf1.format(new Date())); 运行界面如图 6-3 所示, 文本框中的系统时间每隔 1 秒刷新显示 图 6-3 例 6-5 运行界面 49

50 七. Applet 类与 Applet 小程序 1. Applet 的基本工作原理 Java Applet 是通过兼容 Java 的 Internet 浏览器来解释执行的 编译好的 Java 字节码文件保存在特定的 WWW 服务器上, 当浏览器遇到网页中嵌入的 <applet> 标记时, 就会根据该 Applet 的名字和位置自动把字节码从服务器上下载到本地, 并利用浏览器本身拥有的 Java 解释器直接执行该字节码 由于有浏览器的支持,Applet 不需要建立自己的主流程框架, 也不需要有专门的图形界面 Applet 需要做的是接收和响应浏览器发来的消息或事件 (1)Applet 类简介它是 Java 类库中一个重要的系统类, 存在于 java.applet 包中 Applet 类是 Java 的系统类 java. Awt.Panel 的子类, 默认布局方式是 FlowLayout Applet 在此基础上, 还具有一些与浏览器和 Applet 生命周期有关的专门方法 (2)Applet 类的主要方法 1)init() 方法用来完成主类实例的初始化工作 如 : 创建和初始化程序运行所需要的对象实例, 把图形或字体加载入内存, 设置各种参数, 加载图形和声音并播放等 2)start() 方法用来启动浏览器运行 Applet 的主线程 浏览器在调用 init() 方法初始化 Applet 类的实例之后, 接着会自动调用 start() 方法, 除此之外,start() 方法在 Applet 被重新启动时也会被系统自动调用 3)stop() 方法类似于 start() 方法的逆操作, 当用户浏览其它页面, 或切换到其他系统应用时, 浏览器将自动调用 stop() 方法暂停执行 Applet 的主线程 4)paint() 方法主要用来在 Applet 的界面中显示文字 图形和其他界面元素, 也是浏览器自动调用的方法 导致浏览器调用 paint() 方法的事件主要有三种 : Applet 被启动后, 自动调用 paint() 来重新描绘自己的界面 ; Applet 所在的浏览器窗口改变时, 要求自动调用 paint() 来重画界面 ; Applet 的其他方法被调用时, 系统也会调用此方法 paint() 方法有一个固定的参数 Graphics 类的对象 g Graphics 类是用来完成一些较低级的图形用户界面操作的类, 其中包括画圆 点 线 多边形及显示简单文本 5)destroy() 方法 50

51 当用户退出浏览器时, 浏览器自动调用 Applet 实例的 destroy() 方法完成释放资 源 关闭连接之类的操作 2. HTML 文件参数传递 Applet 通过标记 <APPLET> </APPLET> 嵌入在 HTML 文件中, <APPLET> 至少需要包括三个参数 :code height width 其它可选参数如下: (1)codebase 当 Applet 字节码文件的保存位置与所嵌入的 HTML 文档不同时, 需要用此参数指明字节码文件的位置, 该位置用 URL 格式表示 (2)alt 如果浏览器不包含 Java 解释器, 则不能执行字节码文件, 此时可用 alt 参数告诉用户此浏览器不支持 Java (3)align 表示 Applet 界面区域在浏览器窗口中的对齐方式 HTML 文件可以通过标记 <PARAM> 向它所嵌入的 Applet 传递参数, 使 Applet 的运行更加灵活 格式为 : <PARAM name=x value= 这是一个字符串参数 > <PARAM> 标记只能传递一个字符串类型的参数 Applet 利用 getparamter() 方法来获取 HTML 传递来的参数, 方法中用 name 指定的参数名 格式 : getparamter( x ) 例 : 51

52 运行结果如下 : 52

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes (Swing) AWTEvent Font LayoutManager 1 Classes in the javax.swing package Heavyweight FontMetrics Object Color Panel Applet JApplet Graphics Component Container Window Frame JFrame * Dialog JDialog JComponent

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

Swing-02.pdf

Swing-02.pdf 2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21 2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button //

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B,

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B, 1 下列类头定义中, 正确的是 A class x B public x extends y C public class x extends y. D class x extends y implements y1 2 现有两个类 A B, 以下描述中表示 B 继承自 A 的是 (D ) A) class A extends B B) class B implements A C) class A

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

chp11.ppt

chp11.ppt Java 软 件 设 计 基 础 Applet 程 序 1.Applet 概 念 Applet 与 Application Application 是 能 独 立 运 行 的 程 序 单 位 ; Applet 程 序 不 能 独 立 运 行, 必 须 依 附 在 网 页 上, 借 助 于 浏 览 器 才 能 运 行 通 常 置 于 服 务 器 端, 当 用 户 连 接 到 该 网 页,Applet

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

while ((ch = fr.read())!= -1) { System.out.print((char) ch); fr.close(); 例 3: 用 BufferedReader 读 TXT 文件 public class FileReaderDemo3 { public static v

while ((ch = fr.read())!= -1) { System.out.print((char) ch); fr.close(); 例 3: 用 BufferedReader 读 TXT 文件 public class FileReaderDemo3 { public static v 第九章 Java I/O 流操作 实验目的 (1) 掌握文本文件的读写方法 (2) 掌握 InputStream OutputStream 的使用方法 (3) 熟悉 FileReader,BufferedReader,InputStreamReader 和 FileWriter, BufferedWriter, PrintWriter 的使用方法 ; 理解使用过滤流实现数据项的读写 :DataOutputStream,

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) 09 (File Processes) 9-1 9-2 (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) Java Servlet 9-1 Servlet (File Processes) Client Servlet Servlet Java Java (Stream)

More information

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第一部分基本实验 31 contentpane.add(p); setjmenubar(mb); // 将菜单项注册给事件监听者 File_Open.addActionListener(this); File_Close.addActionListener(this); File_Exit.addActionListener(this); Edit_Copy.addActionListener(this);

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 lambda 表达式及其应用 lambda 表达式是 Java 8 提供的一种新特性, 它使得 Java 也能像 C# 和 C++ 语言一样进行简单的 函数式编程, 这不仅简化了某些通用结构的实现方式, 也大大增强了 Java 语言的表达功能 3.1 lambda 表达式简介 lambda 表达式是基于数学中的 λ 演算得名, 本质上就是一个没有方法名的匿名方法 例如, 有一个方法定义如下

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

2009年9月全国计算机等级考试二级Java真题及答案

2009年9月全国计算机等级考试二级Java真题及答案 2009 年 9 月 全 国 计 算 机 等 级 考 试 二 级 Java 真 题 及 答 案 [ 录 入 者 :NCRE100 时 间 :2009-10-08 19:41:34 作 者 : 来 源 :NCRE100.com 浏 览 :1421 次 ] 2009 年 9 月 全 国 计 算 机 等 级 考 试 二 级 笔 试 试 卷 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟,

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

姓名 : 年级专业 : 学号 : 凡年级专业 姓名 学号错写 漏写或字迹不清者, 成绩按零分记 密 封 线 java 较难 试卷 总分 题号 一 二 三 四 五 题分 得分 D 国际通信协议 4 下面选项中, 不是面向对象的特征的是 ( ) A 封装 B 继承 得分 一 单选题 ( 每题 3 分,

姓名 : 年级专业 : 学号 : 凡年级专业 姓名 学号错写 漏写或字迹不清者, 成绩按零分记 密 封 线 java 较难 试卷 总分 题号 一 二 三 四 五 题分 得分 D 国际通信协议 4 下面选项中, 不是面向对象的特征的是 ( ) A 封装 B 继承 得分 一 单选题 ( 每题 3 分, java 较难 试卷 总分 题号 一 二 三 四 五 题分 D 国际通信协议 4 下面选项中, 不是面向对象的特征的是 ( ) A 封装 B 继承 一 单选题 ( 每题 3 分, 共计 15 分 ) 1 下列修饰符中, 成员内部类被 ( ) 修饰后, 可以被外界访问 C 多态 D 重构 5 下列关于构造方法重载的说法中, 错误的是 () A 不同构造方法中调用本类其它的构造方法时, 需要使用 this([

More information

Microsoft Word - Broker.doc

Microsoft Word - Broker.doc Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,

More information

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074>

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074> 高级用户界面与多线程 LCDUI 高级 LCDUI LCDUI 与多线程 多线程在手机编程中尤为重要 手机游戏开发中, 通常由游戏主线程负责游戏的基本控制, 除此之外还会由一个或者多个线程用于播放背景音乐或声效 网络接受数据时, 传输速度通常都比较慢, 因此可以使用一个独立的线程负责接收数据, 另外一个线程负责 UI 界面和与用户的交互 LCDUI 与多线程 J2ME 是通过线程体来实现多线程的 线程体就是用于实现线程活动的主体,

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

(京)新登字063号

(京)新登字063号 教 育 部 职 业 教 育 与 成 人 教 育 司 推 荐 教 材 Java 程 序 设 计 教 程 ( 第 二 版 ) 沈 大 林 主 编 沈 昕 肖 柠 朴 曾 昊 等 编 著 内 容 简 介 Java 是 由 美 国 SUN 公 司 开 发 的 一 种 功 能 强 大 的, 具 有 简 单 面 向 对 象 分 布 式 可 移 植 等 性 能 的 多 线 程 动 态 计 算 机 编 程 语 言

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

模板

模板 制作人 : 张刚 目录 类和对象 面向对象程序设计基本特征 类的声明 构造方法 成员变量和方法 封装 继承 多态 包 访问控制 final static 抽象类和接口 内部类 沈阳工业大学软件学院 Java 课程教研组 Page 2 核心知识点 类 对象 三个基本特征 类的基本结构 成员变量 构造方法 成员方法 类实例 对象创建和操作 沈阳工业大学软件学院 Java 课程教研组 Page 3 1.

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 按钮对象 (button) 当 JavaScript 读到 标记中的 type 属性值为 button 时, 自动建立一个按钮对象, 并将该对象放到表单对象的 elements 数组当中 按钮对象包括 : 普通按钮 (button) 提交按钮 (submit) 重置按钮 (reset) 1. 使用按钮对象的格式 document.forms[ 索引值 ].elements[ 索引值

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/ 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格

More information

D C 93 2

D C 93 2 D9223468 3C 93 2 Java Java -- Java UML Java API UML MVC Eclipse API JavadocUML Omendo PSPPersonal Software Programming [6] 56 8 2587 56% Java 1 epaper(2005 ) Java C C (function) C (reusability) eat(chess1,

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y 拼图游戏 任务说明 本实例实现了拼图游戏的开发 运行程序, 单击 开始 按钮将打乱图片的位置, 效果如图 1 所示, 然后通过鼠标单击图片进行移动, 直到将所有图片都移动到正确位置, 游戏过关, 过关后的效果如图 2 所示 图 1 打乱图片位置的效果图 2 图片移动到正确位置的效果 关键技术 本程序主要通过 Swing 与枚举类实现, 程序将一幅完整的图片平均分成 9 部分, 每一部分为一个正方形,

More information

(CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787

(CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787 Web (CIP) Web /,. :,2005. 1 ISBN 7 81058 782 X.W............T P393.4 CIP (2004) 118797 Web ( 99 200436) ( http:/ / www.shangdapress.com 66135110) : * 787 1092 1/ 16 30.75 748 2005 1 1 2005 1 1 : 1 3 100

More information

利用Java技术编写桌面软件基础

利用Java技术编写桌面软件基础 利 用 Java 技 术 编 写 桌 面 软 件 基 础 在 学 习 Java 编 程 语 言 的 细 节 和 语 法 时, 我 们 会 碰 到 这 样 一 个 问 题 : 开 发 桌 面 应 用 软 件 需 要 使 用 哪 些 Java 技 术, 应 当 引 入 哪 些 package? 这 一 问 题 的 答 案 取 决 于 开 发 的 应 用 软 件 类 型 和 它 的 作 用 这 篇 文 章

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

01_Service

01_Service 移动平台应用软件开发 Service 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年 什么是 Service 与 Activity 一样, 同属 Android 基本组件 后台运行, 不与用户交互, 没有可视化界面 最常见的 Service 如 : 在后台播放歌曲 后台执行文件的下载 同样需在 AndroidManifest.xml

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

OOP with Java 通知 Project 6: 6 月 6 日晚 9 点

OOP with Java 通知 Project 6: 6 月 6 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 6: 6 月 6 日晚 9 点 复习 异常处理 语法 抛出异常 : throw 处理异常 : try, catch 异常对象 : Exception 类的子类 从方法中抛出异常 方法的异常说明 :throws 中断当前方法的执行, 返回抛出的异常对象, 在该方法的调用路径上寻找合适的

More information

4目录.doc

4目录.doc 目 录 第 1 章面向对象开发方法概述...1 1.1 结构化的软件开发方法简介...3 1.2 面向对象的软件开发方法简介..6 1.2.1 对象模型...6 1.2.2 UML: 可视化建模语言...7 1.2.3 Rational Rose: 可视化建模工具...7 1.3 面向对象开发中的核心思想和概念...8 1.3.1 问题领域 对象 属性 状态 行为 方法 实现...8 1.3.2 类

More information

Learning Java

Learning Java Java Introduction to Java Programming (Third Edition) Prentice-Hall,Inc. Y.Daniel Liang 2001 Java 2002.2 Java2 2001.10 Java2 Philip Heller & Simon Roberts 1999.4 Java2 2001.3 Java2 21 2002.4 Java UML 2002.10

More information

《面向对象程序设计A》课程教学大纲Ⅱ4

《面向对象程序设计A》课程教学大纲Ⅱ4 Java 程 序 设 计 课 程 教 学 大 纲 Ⅱ5 课 程 代 码 : 课 程 名 称 :Java 程 序 设 计 Java Programming 学 分 :5 总 学 时 :80 ( 其 中 : 理 论 学 时 :48 实 验 ( 上 机 ) 学 时 :32) 先 修 课 程 : 2106010190 大 学 计 算 机 信 息 技 术 基 础 适 用 对 象 : 本 二 工 科 非 计 算

More information

PowerPoint 簡報

PowerPoint 簡報 Paint 繪圖板 JAVA 程式設計 指導老師 : 鄞宗賢 組員 : 4A3G0901 劉彥佐 4A3G0907 韓偉志 畫面預覽 匯入參數 package paint; import java.awt.*; import java.awt.event.*; import javax.swing.*; 主程式 public class paint{ public static void main(string[]

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循

实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循 实验目的 (1) 熟练掌握顺序 分支 循环三种结构 (2) 会使用流程控制结构编写程序 第三章程序的流程控制 实验要求 (1) 掌握 if-else swith-case 的使用 (2) 掌握 while do-while for 的使用 (3) 掌握分支嵌套和循环嵌套 (4) 分析理解如何避免死循环 实验范例 系统常用类 : 字符串类 (String) a) 从字符串 s 中截取一个字符串方法 s.substring()

More information

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i; double d; 数据 (Fields) char c; void set(double

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

试卷代号 : 座位号 中央广播电视大学 学年度第一学期 " 开放本科 " 期末考试 面向对象程序设计 ( 本 ) 试题 2011 年 1 月 题号 一 一 一四总分 一 分数 得分 评卷人 - 单选题, 在括号内填写正确的选项编号 { 每小题 2 分, 共

试卷代号 : 座位号 中央广播电视大学 学年度第一学期  开放本科  期末考试 面向对象程序设计 ( 本 ) 试题 2011 年 1 月 题号 一 一 一四总分 一 分数 得分 评卷人 - 单选题, 在括号内填写正确的选项编号 { 每小题 2 分, 共 试卷代号 : 1 2 9 7 座位号 中央广播电视大学 2 0 1 0 2011 学年度第一学期 " 开放本科 " 期末考试 面向对象程序设计 ( 本 ) 试题 2011 年 1 月 题号 一 一 一四总分 一 分数 得分 评卷人 - 单选题, 在括号内填写正确的选项编号 { 每小题 2 分, 共 2 0 分 } 1. Java 是一门 ( ) 语言 A. 机器 B. 汇编 C. 面向过程的高级 D.

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes What is a JavaBean? JavaBean Java JavaBean Java JavaBean JComponent tooltiptext font background foreground doublebuffered border preferredsize minimumsize maximumsize JButton. Swing JButton JButton() JButton(String

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址   access_token=access_token (http 停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

使用 Eclipse 开发程序 Java 语言的特点 JDK 的安装以及环境变量的配置 Eclipse 开发工具的安装与使用 JDK 的使用 Eclipse 开发工具的安装与使用 了解 Java 语言的特点 掌握 Java 开发环境的搭建 掌握环境变量的配置 理解 Java 的运行机制 掌握 Ecl

使用 Eclipse 开发程序 Java 语言的特点 JDK 的安装以及环境变量的配置 Eclipse 开发工具的安装与使用 JDK 的使用 Eclipse 开发工具的安装与使用 了解 Java 语言的特点 掌握 Java 开发环境的搭建 掌握环境变量的配置 理解 Java 的运行机制 掌握 Ecl Java 基础案例教程 课程教学大纲 ( 课程英文名称 ) 课程编号 :029 学分 :5 学分学时 :63 学时 ( 其中 : 讲课学时 :45 上机学时 :18 ) 先修课程 : 计算机基础后续课程 : Java Web 程序设计任务教程 适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 Java 基础案例教程 是面向计算机相关专业的一门专业基础课, 涉及 Java

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 70-536Chinese(C++) Title : TS:MS.NET Framework 2.0-Application Develop Foundation Version : DEMO 1 / 10 1. Exception A. Data B. Message C.

More information

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 复习 : Java 类型 基本类型 boolean, char, 封装 (wrappers) 类 (class) 定义 class MyType { int i;

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式]

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式] 用户定义类型 User-defined Datatypes classes and structs 几何向量 (Geometry Vector) 二维平面上的向量由起点和终点构成 每个点包含两个坐标 (x, y), 因此一个向量需要四个实数表示 Start= (0.9,1.5) Start= (0.4,0.8) int main() { double xstart = 0.4; double xend

More information

图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充

图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充 图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充 例 2 单击 CLEAR, 重新回到初始状态, 下面让我们看一下自交多边形的情况 当单击数次后, 出现左图的情况, 之后我们单击

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第 2 章 Java 语言基础 通过本章的实践, 要掌握 Java 中的标识符 关键字 常量, 熟练掌握算术 关 系 逻辑 条件 赋值 位运算符的使用, 掌握简单顺序结构的程序设计 2.1 典型习题解答 2.1 Java 中怎样进行注释? 解答 Java 语言中的注释有 3 种形式 : (1) 单行 : // (2) 多行 : /* */ (3) 文档注释 : /** */ 第三种形式是第二种形式的变形,

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

OOP with Java 通知 Project 6: 5 月 30 日晚 9 点

OOP with Java 通知 Project 6: 5 月 30 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 6: 5 月 30 日晚 9 点 复习 异常处理 语法 抛出异常 : throw 处理异常 : try, catch 异常对象 : Exception 类的子类 从方法中抛出异常 方法的异常说明 :throws 中断当前方法的执行, 返回抛出的异常对象, 在该方法的调用路径上寻找合适的

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

Struts2自定义类型转换.doc

Struts2自定义类型转换.doc Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter,

More information

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464>

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464> 第 1 章 进入 Photoshop 的全新世界 本章导读 Photoshop 1 1.1 Photoshop CS6 Photoshop Photoshop 1.1.1 Photoshop POP 1-1 图 1-1 平面广告效果 1.1.2 Photoshop 1-2 Photoshop CS6 Photoshop CS6 Photoshop CS6 Extended 3D 3 Photoshop

More information

Microsoft Word - 第2章.doc

Microsoft Word - 第2章.doc 2 第第 2 章 学习第 1 章后, 读者已经对 Java 语言有了初步的了解, 本章将具体解析 Java 类的组成元素 任何一个 Java 类, 都有 5 种基本组成元素 : 属性 方法 构造方法 块和内部类 其中属性 方法 构造方法是使用最多的元素, 而块 内部类使用较少 本章将对各种元素进行学习 Java 类基本结构 2.1 类 类 Java 类的声明形式 访问权限修饰符 修饰符 class

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

图形用户界面 (GUI) 设计

图形用户界面 (GUI) 设计 2013-2014 学年度第二学期课程 C 语言程序设计 Java 语言程序设计面向过程编程方法 编程方法学 新疆农业大学计算机与信息工程学院 陈燕红 :cyh@xjau.edu.cn 图形用户界面 (GUI) 设计 参考 C:\Program Files\Java\jdk1.6.0_10\demo 教学内容 1 Java 图形用户界面设计概述 2 3 4 AWT 组件集 事件处理 Swing

More information

Java 1 Java String Date

Java 1 Java String Date JAVA SCJP Java 1 Java String Date 1Java 01 Java Java 1995 Java Java 21 Java Java 5 1-1 Java Java 1990 12 Patrick Naughton C++ C (Application Programming Interface API Library) Patrick Naughton NeXT Stealth

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

java 难 试卷 总分 题号 一 二 三 四 五 题分 得分 得分 一 单选题 ( 每题 3 分, 共计 15 分 ) 1 下面选项中, 关于 PrintStream 类描述错误的是 ( ) A PrintStream 可以实现将基本数据类型的数据或引用数据类型的对象格式化成字符串后再输出 B P

java 难 试卷 总分 题号 一 二 三 四 五 题分 得分 得分 一 单选题 ( 每题 3 分, 共计 15 分 ) 1 下面选项中, 关于 PrintStream 类描述错误的是 ( ) A PrintStream 可以实现将基本数据类型的数据或引用数据类型的对象格式化成字符串后再输出 B P java 难 试卷 总分 题号 一 二 三 四 五 题分 一 单选题 ( 每题 3 分, 共计 15 分 ) 1 下面选项中, 关于 PrintStream 类描述错误的是 ( ) A PrintStream 可以实现将基本数据类型的数据或引用数据类型的对象格式化成字符串后再输出 B PrintStream 类位于 IO 包中, 是字符输出流的子类 C 调用 println() 方法和 print()

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7> 能源与动力工程学院 结构化编程 结构化程序设计 循环 循环结构 确定性循环 非确定性循环 I=1 sum=sum+i I = I +1 陈 斌 I>100 Yes No 目录 求和 :1+2+3++100 第四节循环的应用 PROGRAM GAUSS INTEGER I, SUM 计数器 SUM = 0 DO I = 1, 100, 1 SUM = SUM + I print*, I, SUM DO

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information