<4D F736F F D20B5DA33D5C220B1EACAB6B7FBA1A2B9D8BCFCD7D6D3EBCAFDBEDDC0E0D0CD2E646F6378>

Size: px
Start display at page:

Download "<4D F736F F D20B5DA33D5C220B1EACAB6B7FBA1A2B9D8BCFCD7D6D3EBCAFDBEDDC0E0D0CD2E646F6378>"

Transcription

1 Android 系统下 Java 编程详解 作者 : 华清远见 第 3 章标识符 关键字与数据类型 本章简介 本章主要介绍 Java 中使用注释的方法和使用规则, 包括特殊注释 :javadoc 注释的使用方法 ; 分号, 空格等分隔符 ; Java 中标识符的定义规则 ; Java 中的 数据类型 ; 简单类型间的数据类型转换 ; 分析了对象的构造和初始化 ; 局部变量 全局变量的定义 声明及其作用范围 ; Java 中通过值传递方式传递参数 ; 最后介 绍了使用 Java 编写出优雅代码的编程一般规则

2 3.1 Java 注释 在编写程序时, 为了说明某段代码的用途 某个方法的功能或者某个方法的参数, 输入 / 输出值等的含义, 需要在程序的关键部分加一些注释来说明 在各种编程语言中, 都提供了各自的用于放置到程序代码中的注释语句, 这些语句和程序语句混杂在一块, 因此, 需要一种特殊的机制让注释和代码不会在编译时发生冲突和混淆 比如, 在 VB 中, 用单引号 表示单行的注释等 而在 Java 中, 也同样提供了用于注释 和其他语言相比较,Java 提供的注释方式更灵活 更多样 更强大 在 Java 中, 提供了 3 种注释方式 : 短 ( 单行 ) 注释 块 ( 多行 ) 注释及文档注释 单行和多行注释很容易理解, 将注释符之间的内容当做注释, 在编译和运行时将这部分内容忽略 在 Java 中, 比较特殊的是 javadoc 注释, 包含在这部分中的注释可以通过 javadoc 命令来自动生成 API 文档 通过 javadoc 工具, 可以保证程序代码和技术文档的同步 在修改了程序中的注释后, 只需要通过 javadoc, 就可以方便地生成相应的技术文档 下面介绍单行注释和多行注释的方法 知识准备 :Java 注释使用规则 (1) 单行注释 : 单行注释就是在程序中注释一行代码 注释规则 : 在代码中单起一行注释, 注释前最好有一行空行, 并与其后的代码具有一样的缩进层级 如果单行无法完成, 则应采用块注释 注释格式 : // 注释内容 (2) 多行注释 : 一次将程序中的多行注释掉 注释规则 : 注释若干行, 通常用于提供文件 方法 数据结构等的意义与用途的说明, 或者算法的描述 一般位于一个文件或者一个方法的前面, 起到引导的作用, 也可以根据需要放在合适的位置 注释格式 : /* 注释内容 */ 来看一个单行注释和多行注释的例子 源文件 :MessageComment.java // 这是一个单行注释 /* 这是一个多行注释 */ public class MessageComment { public static void main(string[] args) { System.out.println(" 发信息 "); // System.out.println(" 此条信息不会显示 "); 知识准备 : 利用 javadoc 来产生 API 文档 我们知道, 在软件开发过程中, 文档编写的重要性不亚于程序代码本身 如果代码与文档是分离的, 那么在每次修改代码时, 都需要修改相应的文档就会是一件很麻烦的事情 所以通过 javadoc 将代码同文档 连接 起来 在 Java 中, 还有一种特别的注释方式 : 文档注释 利用这种注释, 可以从 Java 源文件中提取这些注释的内容, 来产生 HTML 格式的 API 文档 文档注释的基本格式如下 : /** 2

3 文档注释内容 */ 注意把文档注释和多行注释区分清楚, 文档注释的开始标记是 /**, 而多行注释标记的开始标记是 /* 由于文档注释最重要的一个功能就是用它来生成 HTML 格式的 API 文档, 因此, 很多用于 HTML 格式化的 HTML 标记也可以用在文档注释中, 在从这些注释中提取注释生成 HTML 文件的时候, 在生成的 HTML 文件中, 将使用这些 HTML 标记来格式化 HTML 文件内容 常用的 HTML 标记有 <b> </b> <code> </code> 等 关于这些 HTML 标记及其他的 HTML 标记, 请读者参考相关的 HTML 资料 和多行注释不同的另一个地方是, 文档注释并不是可以放在 Java 代码的任何地方,javadoc 工具在从 Java 代码中提取注释生成 API 文档时, 主要从以下几项内容中提取信息 包 公有 (public) 类与接口 公有方法和受保护 (protected) 方法 公有属性和受保护属性 因此, 文档注释也应该放到相应的位置中 1. 文档注释位置 (1) 类注释 类注释用于说明整个类的功能 特性等, 它应该放在所有的 import 语句之后, 在 class 定义之前 这个规则也适用于接口 (interface) 注释 (2) 方法注释 方法注释用来说明方法的定义, 比如, 方法的参数 返回值及说明方法的作用等 方法注释应该放在它所描述的方法定义前面 (3) 属性注释 默认情况下,javadoc 只对公有 (public) 属性和受保护属性 (protected) 产生文档 通常是静态常量 (4) 包注释 类 方法 属性的注释都直接放到 Java 的源文件中, 而对于包的注释, 无法放到 Java 文件中去, 只能通过在包对应的目录中添加一个 package.html 的文件来达到这个目的 当生成 HTML 文件时,package.html 文件的 <BODY> 和 </BODY> 部分的内容将会被提取出来当做包的说明 关于包注释, 后面还会有更进一步的解释 (5) 概要注释 除了包注释外, 还有一种类型的文档无法从 Java 源文件中提取, 就是对所有类文件提供概要说明的文件 同样的, 也可以为这类注释单独新建一个 HTML 文件, 这个文件的名字为 overview.html, 它的 <BODY> 和 </BODY> 标记之间的内容都会被提取 2.javadoc 标记在 javadoc 注释中, 来表示一个 javadoc 标记, 常用的 javadoc 标记如下 抛出的异常, 和 exception 同义 需要注意这些标记的使用是有位置限制的 @version 等 @exception 等 可以出现在属性文档注释中的有 等 3.javadoc 命令语法 3

4 javadoc 的命令行语法如下 : javadoc [ options ] [ packagenames ] [ sourcefiles ] ] 参数可以按照任意顺序排列 下面对这些参数作一些说明 ( 1)packagenames 包列表 : 这个选项可以是一系列的包名 ( 用空格隔开 ), 例如,java.lang java.lang.reflect java.awt 因为 javadoc 不递归作用于子包, 不允许对包名使用通配符 ; 所以必须显式地列出希望建立文档的每一个包 (2)sourcefiles 源文件列表 这个选项可以是一系列的源文件名 ( 用空格隔开 ), 可以使用通配符 javadoc 允许 4 种源文件 : 类源代码文件 包描述文件 总体概述文件 其他杂文件 类源代码文件 : 类或者接口的源代码文件 包描述文件 : 每一个包都可以有自己的包描述文件 包描述文件的名称必须是 package.html, 与包的.java 文件放置在一起 包描述文件的内容通常是使用 HTML 标记写的文档 javadoc 执行时将自动寻找包描述文件 如果找到,javadoc 将首先对描述文件中 <body></body> 之间的内容进行处理, 然后把处理结果放到该包的 Package Summary 页面中, 最后把包描述文件的第一句 ( 紧靠 <body>) 放到输出的 Overview Summary 页面中, 并在语句前面加上该包的包名 总体概述文件 :javadoc 可以创建一个总体概述文件描述整个应用或者所有包 总体概述文件可以被任意命名, 也可以放置到任意位置 -overview 选项可以指示总体概述文件的路径和名称 总体概述文件的内容是使用 HTML 标记写的文档 javadoc 在执行的时候, 如果发现 -overview 选项, 那么它将首先对文件中 <body></body> 之间的内容进行处理 ; 然后把处理后的结果放到输出的 Overview Summary 页面的底部 ; 最后把总体概述文件中的第一句放到输出的 Overview Summary 页面的顶部 其他杂文件 : 这些文件通常是指与 javadoc 输出的 HTML 文件相关的一些图片文件 Java 源代码文件 (.java) Java 程序 (.class) Java 小程序 (Applets) HTML 文件 这些文件必须放在 doc-files 目录中 每一个包都可以有自己的 doc-files 目录 例如, 你希望在 java.awt.button 的 HTML 文档中使用一幅按钮的图片 (Button.gif) 首先, 必须把图片文件放到 java\awt\doc-files\ 中 ; 然后在 Button.java 文件中加入以下注释 : /** * This button looks like this: * <img src="doc-files/button.gif"> */ files 包含文件 为了简化 javadoc 命令, 可以把需要建立文档的文件名和包名放在一个或多个文本文件中 例如, 为了简化以下命令 : javadoc -d apidoc com.oristand.college com.oristand.school 可以建立一个名称为 mypackage.txt 的文件, 其内容如下 : com.oristand.college com.oristand.school 然后执行以下命令即可 : javadoc -d options 命令行选项 1 public 只显示公共类及成员 2 protected 只显示受保护的和公共的类及成员 默认选项 3 package 只显示包 受保护的和公共的类及成员 4 private 显示所有类和成员 -classpath classpathlist 指定 javadoc 查找 引用类 的路径 引用类是指带文档的类加上它们引用的任何类 javadoc 将搜索指定路径的所有子目录,classpathlist 可以包含多个路径 ( 使用 ; 隔开 ) 一切就绪后, 就可以使用 JDK 中的 javadoc 工具来生成相关的 API 文档了 任务一 : 使用 javadoc 注释, 生成 API 文档 4

5 1. 任务描述 写一段代码, 加入 javadoc 注释, 并使用 javadoc 工具生成相关 API 文档 2. 技能要点 (1) 添加 javadoc 注释 (2) 使用 javadoc 命令生成 API 文档 3. 任务实现过程 (1) 编写一个 JavaDoc 类, 声明变量, 并加入 javadoc 注释 源文件 :JavaDoc.java /** * javadoc 演示程序 --<b>javadoc</b> * Alex Wen /12/15 */ public class JavaDoc { /** * 在 main() 方法中使用的显示用字符串 * #main(java.lang.string[]) */ static String SDisplay; static String 变量 ; /** * 显示 JavaDoc * args * 从命令行中输入字符串 */ public static void main(string args[]) { SDisplay = "Hello World "; 变量 = "test"; System.out.println(SDisplay + 变量 ); (2) 用如下的 javadoc 命令来生成 API 文档 : javadoc -private -d doc -author -version JavaDoc.java 在控制台上将会列出正在生成的文件 从图 3-1 中可以看出生成了哪些文件 图 3-1 生成的 API 文档 (3) 打开 index.html 文件 ( 图 3-2 显示为打开的结果 ), 因为没有包, 所以, 没有包列表文件 5

6 图 3-2 javadoc 生成的 index.html 显示结果 3.2 分隔符和标识符 在 Java 中, 有一类特殊的符号称为分隔符, 包括空白分隔符和普通分隔符 知识准备 : 空白分隔符 空白分隔符包括 : 空格 回车 换行和制表符 Tab 键 空白分隔符的主要作用是分隔标识符, 帮助 Java 编译器理解源程序 例如 : int a; 若标识符 int 和 a 之间没有空格, 即 inta, 则编译程序会认为这是用户定义的标识符, 但实际上该语句的作用是定义变量 a 为整型变量 另外, 在代码的编排时, 适当的空格和缩进可以增强代码的可读性 看看下面 HelloAndroid.java 这段代码 public class HelloAndroid{ public static void main(string args[]){ System.out.println("Hello Android!"); 在这个程序中, 用到了大量的用于缩排的空格 ( 主要是制表符和回车 ), 如果不使用缩排空格, 这个程序可能会是如下的模样 public class HelloAndroid{ public static void main(string args[]){ System.out.println("Hello Android!"); 相比较上一个程序, 这个程序没有使用制表符来做缩排, 显然在层次感上差了很多, 甚至, 还可能是如下情况 public class HelloAndroid{public static void main(string args[]){system.out.println("hello Android!"); 这个程序可读性更差了 : 所有的语句都写在同一行上 在语法上, 这个程序是正确的, 但是, 在可读性上, 没有比这更差的了 因此, 在写程序的时候, 一定要灵活地使用空格来分隔语句或者做格式上的缩排等 但是, 也要小心不要滥用它, 所以使用空白分隔符要遵守以下规则 : 任意两个相邻的标识符之间至少有一个分隔符, 以便编译程序能够识别 ; 变量名方法名等标识符不能包含空白分隔符 6

7 空白分隔符的多少没有什么含义, 一个空白符和多个空白符的作用相同, 都是用来实现分割功能的 空白分隔符不能用非普通分隔符替换 知识准备 : 普通分隔符普通分隔符具有确定的语法含义, 有如下 7 种普通分隔符, 如表 3-1 所示 表 3-1 分隔符功能说明表分隔符名称功能说明 { [ ] ( ) 大括号 ( 花括号 ) 中括号 ( 方括号 ) 小括号 ( 圆括号 ) 用来定义块 类 方法及局部范围, 也用来包括自己初始化的数组的值 大括号必须成对出现 用来进行数组的声明, 也用来撤销对数组值的引用 在定义和调用方法时, 用来容纳参数表 在控制语句或强制类型转换的表达式中用来表示执行或计算的优先权 ; 分号, 逗号 用来表示一条语句的结束 语句必须以分号结束, 否则即使一条语句跨行或者多行, 仍是未结束的 在变量生命中用于分隔变量表中的各个变量, 在 for 控制语句中, 用来将圆括号里的语句链接起来 : 冒号说明语句标号. 圆 点 用于类 / 对象和它的属性或者方法之间的分隔 例如, 圆点. 就起到了分隔类 / 对象和它的方法或者属性的作用 知识准备 :Java 语言标识符的组成规则在 Java 中, 标识符是赋予变量 类或方法的名称 程序通过这些名称来访问或修改某个数据的值 标识符可从一个字母 下画线 (_) 或美元符号 ($) 开始, 随后也可跟数字 在这里, 字母的范围并不局限于 26 个英文字母, 而是包括任何一门语言中的表示字母的任何 Unicode 字符 标识符未规定最大长度 在定义和使用标识符时需要注意,Java 语言是大小写敏感的 比如, abc 和 Abc 是两个不同的标识符 在定义标识符的时候, 需要注意以下问题 : (1) 标识符不能有空格 (2) 标识符不能以数字开头 (3) 标识符不能是 Java 关键字 (4) # 等符号 问 : 定义标识符可以用中文吗? 答 : 可以使用中文名称作为标识符, 但是并不建议这么做 因为在 Java 中, 使用中文容易引起一些编码方面的问题 任务二 : 综合使用 Java 分隔符和标识符 1. 任务描述编写程序, 输出手机开机问候语, 体会 Java 分隔符的作用和标识符的使用规范 2. 技能要点 了解各类分隔符的功能 7

8 掌握标识符命名规范 3. 任务实现过程 (1) 编写一个类名为 OpenGreetings, 类中定义了一个方法 thedate(), 用于打印日期和开机问候语 在 main() 方法中调用 thedate 方法, 并传入当天的日期作为参数 (2) 声明并初始化日期变量时, 注意标识符的命名规则, 开头, 数字开头或者关键字时会报错 源文件 :OpenGreetings.java public class OpenGreetings { public static void main(string[] args) { int day = 20, month = 5, year = 2011; // 以下 3 种命名标识符不合法 int 12abc; int private; OpenGreetings og = new OpenGreetings(); og.thedate(day, month, year); public void thedate(int theday,int themonth,int theyear){ String greetings = "Welcome To Android World~!"; System.out.println("Today is "+theyear+"/"+themonth+"/"+theday+"\n"+greetings); (3) 运行程序, 运行结果如下 : Today is 2011/5/20 Welcome To Android World~! 3.3 Java 关键字 / 保留字 知识准备 :Java 关键字使用规范 Java 中一些赋以特定的含义 并用做专门用途的单词称为关键字 (keyword) 在定义自己的标识符的时候, 不要和这些关键字重名, 否则, 在编译时将会出现错误 比如, 下面的变量定义就是错误的 : int byte; 在这个例子中, 试图定义一个 int 类型的变量 byte, 但是因为 byte 是关键字, 所以不能用来作 为变量名 所有 Java 关键字都是小写的,TURE FALSE NULL 等都不是 Java 关键字,goto 和 const 虽然从未 被使用, 但也作为 Java 关键字保留 Java 中一共有 51 个关键字, 如表 3-2 所示 表 3-2 Java 关键字 abstract assert boolean break byte continue case catch char class const double default do extends else final float for goto long if implements import native new null instanceof int interface package private protected public return short static strictfp super switch synchronized this while void throw throws transient try 8

9 volatile 知识准备 : 重点关键字解析 abstract:java 中的一个重要关键字, 可以用来修饰一个类或者一个方法为抽象类或者抽象方法 extends: 表示继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法 super:super 关键字表示超 ( 父 ) 类的意思 this: 代表对象本身 interface: 声明一个接口 implements: 实现接口关键字 private: 访问控制修饰符, 声明类的方法, 字段, 内部类只在类的内部可访问 protected: 访问控制修饰符, 声明类成员的访问范围是 package 包内可访问 public: 访问控制修饰符, 声明类成员对任何类可见 static: 表示应用它的实体在声明该实体的类的任何特定实例外部可用 final: 用来修饰类或方法, 表示不可扩展或重写 3.4 数据类型 知识准备 : 简单类型 Java 有 8 种简单类型 : 四种整型 两种浮点型 一种字符型 一种用于表示 true/false 的布尔类型 表 3-3 列出了这 8 种简单数据类型 表 3-3 简单数据类型 数据类型数据类型名称大小 (bits) 默认值 boolean 布尔类型 1 false char 字符型 16 0 byte 字节型 8 0 short 短整型 16 0 int 整型 32 0 long 长整型 64 0 float 单精度浮点型 double 双精度浮点型 在这些数据类型中,int short byte long 都是整型数据, 而 double 和 float 是浮点型数据 char 也可以看成是整型数据, 但它是无符号的 ( 没有负数 ) 1. 布尔类型 与 C 语言不同,Java 定义了专门的布尔类型, 用于表示逻辑上的 真 或 假 布尔类型用关键字 boolean 来定义, 数据只能取值 true 或 false, 注意不能用整型的 0 或 1 来替代 布尔类型不是数值型变量, 它不能被转化成任意一种类型 布尔类型常常用在条件判断语句中 boolean sendmsg = true; boolean recievemsg = false; 注意 : 9

10 这里的 true 和 false 是不能用双引号引起来的, 如果用双引号引起来, 就成了 String 类型的数据了 2. 字符类型 字符 (Char) 类型数据用来表示通常意义上的 字符 字符常量是用单引号括起来的单个字符 Java 与众不同的特征之一就是 Java 对各种字符的支持, 这是因为 Java 中的字符采用 16 位的 Unicode 编码格式,Unicode 被设计用来表示世界上所有书面语言的字符 Char 简单类型保存一个 16 位的 Unicode 字符 Unicode 字符通常用十六进制编码形式表示, 范围是 \u0000 ~ \Uffff, 其中前缀 \u 标志着这是一个 Unicode 编码字符, 其中前 256 个 ( \u0000 ~ \u00ff ) 字符与 ASCII 码中的字符完全重合 下面来看一个字符型数据的应用实例 : 源文件 :CharTest.java public class CharTest { public static void main(string args[]) { char Msg1 = 'M'; char Msg2 = ' 中 '; char Msg3 = '5'; char Msg4 = '\u0001'; System.out.println(Msg1); System.out.println(Msg2); System.out.println(Msg3); System.out.println(Msg4); char 型数据只能记录单个的字符值, 不能表述更多的文字信息,Java 语言还提供了 String 类型 记录由多个字符组成的字符串 String 常量的表达形式为双引号引起来的 0~ 多个字符, 例如 : String s = "Java 小能手 "; System.out.println("Hello,Android!"); 注意 : String 不是基本数据类型, 而属于引用类型 char 类型的数据用单引号表示, 注意它和 String 类型数据的区别, 例如, A 表示的是一个 char 类型的数据, 而 A 表示的是一个 String 类型的数据, 它们的含义是不同的 Java 语言中还允许使用转义字符 \ 来将其后的字符转变为其他的含义, 例如, 如果需要在输出结果时换行, 应给编译器换行指令 n, 但是如果直接在程序中写 System.out.println("n"); 则不会起到换行的效果 此时, 需要在 n 之前输入 \, 这时编译器会知道 n 是被转义的字符 还有一种特殊情况, 在 Java 中使用一个绝对路径 :c:\learning\java, 如果直接在程序中写 String path = c:\learning\java, 则不会得到你期望的结果, 因为 Java 将 \ 当成转义符了 所以, 这时候应该这样写 : String path = "c:\\learning\\java"; 这时, 第一和第三个 \ 都是表示转义符, 表示后面的那个字符 ( 此处都为 \ ) 有特殊的含义 3. 整数类型 整数类型分为 4 类 :byte short int 及 long, 它们的差别在于所占用的内存空间和表数范围不同 表 3-4 列出了这 4 种整数类型数据的存储空间及表数范围 表 3-4 整数类型的存储空间和表数范围 类 型 占用存储空间 表数范围 byte 1 字节 -128 ~ 127 short 2 字节 ~ (-32768~32767) int 4 字节 ~ ( ~ ) long 8 字节 ~

11 通常情况下,int 是最常用的一种整型数据, 它也是 Java 中整数常量的默认类型 在表示非常巨大的数字时, 则需要用到更大范围的 long 对于前面 3 种整数数据类型的数据, 只需要直接写出数据就可以了, 而对于长整形 (long) 数据, 需要在长整型数据后面加上 L 或 l 来表示 整型常量虽然默认为 int 类型, 但在不超过其表数范围的情况下, 可以将 int 类型的数据直接赋给 char byte short 类型的变量 下面是这些整形数据类型的一些例子 : byte b = 12; short s = 12345; int i = ; long l = L; Java 中允许使用 3 种不同的进制形式表示整型变量 : 八进制 十进制 十六进制 (1) 十进制整数, 如 (2) 八进制整数, 以 0 开头, 如 0123 表示十进制数 83,-011 表示十进制数 -9 (3) 十六进制整数, 以 0x 或 0X 开头, 如 0x123 表示十进制数 291,-0X12 表示十进制数 浮点类型 Java 浮点类型有两种 :float 和 double Java 浮点类型有固定的表数范围和字段长度 和整数类型一样, 在 Java 中, 浮点类型的字段长度和表数范围与机器无关 表 3-5 列出了符点类型数据的存储空间和表数范围 表 3-5 符点类型数据的存储空间和表数范围 类型占用存储空间表数范围 float 4 字节 E38~3.403E38 double 8 字节 E308~1.798E308 double 类型的浮点类型数据正如它的名字所揭示的, 它表示精度是 float 的两倍 ( 因此也将 double 类型的数据称为双精度类型的数据 ) 表示 float 类型的数据需要在数字后面加上 F, 用于和 double 类型数据相区别 Java 语言浮点类型常量有两种表示形式 : 十进制数形式, 必须含有小数点, 例如 否则将被当做 int 型常量处理, 例如 314 科学计数法形式, 如 3.14e2 3.14E2 314E2 注意, 只有浮点类型才能采用科学计数法表示, 因此,314E2 也是浮点型常量, 而不是 int 型 Java 语言的浮点型常量默认为 double 型, 要声明一个常量为 float 型, 则要在它数字的后面加 f 或 F 例如 : 3.0 表示一个 double 型常量, 占 64 位内存空间 3.0f 表示一个 float 型常量, 占 32 位内存空间 知识准备 : 非 boolean 简单数据类型之间的转换 在 Java 程序中, 一些不同的数据类型之间可以进行数据类型的相互转换 简单数据类型的转换一般分为两种 : (1) 低级到高级的自动转换 (2) 高级到低级的强制类型转换 二者的区别主要在于数据类型的表述范围是不同的 比如, 有一个 int 类型的数据, 赋给一个 long 类型的变量, 或者反之 这就类似于将水 ( 数据 ) 从一个容器 ( 某种数据类型 ) 倒入到另一个容器 ( 另一种数据类型 ) 一样, 因为容器的大小不同, 能够装盛的水也是不同的 如果将从小容器中的水倒入到大容器中, 不会有什么问题, 但是, 如果将大容器中的水倒入到小容器中, 就可能会造成部分水溢出 同样的, 在数据类型转换上面, 也有类似的问题, 如果将表数范围比较小的数据类型数据转换成表数范围大的数据 11

12 类型, 则可以顺利转换 ; 反之, 则有可能发生数据的溢出 ( 损失一部分信息 ) 在图 3-3 所示的数据类型的转换中, 实线条表示这种转换不会引起信息的损失, 而虚线条表示此种转换可能会引起信息的损失 图 3-3 不同数据类型之间的合法数据转换如果数据的转换按照图 3-3 中箭头所示的方式来完成, 则程序会自动转换, 不需要在程序中干预, 这种转换是低级到高级的自动转换, 也成为 扩展转换 (Widening Conversion) 但是, 如果不按照图中的方向来转换, 则可以通过 强制类型转换 的方式来完成, 此时, 可能会引起信息的丢失 当按照图 3-3 中箭头所示的反方向来转换时, 非常有可能造成数据精度的损失, 这种转换也经常称为 缩小转换 (Narrowing Conversion) 例如,int 类型的数据在必要时可以自动转换成 double 的数据, 但是, 如果需要将 double 类型的数据转换成 int 类型的数据, 则需要通过强制类型转换来完成 下面这条语句可以实现这个功能 : double d = ; int i = (int)d; 这样, 就可以将 double 类型的数据 d 转换成 int 类型的数据, 此时,i 的值为 1, 显然, 小数后面的值都丢失了 任务三 : 简单数据类型转换实例 1. 任务描述 编写程序验证低级到高级的自动转换和高级到低级的强制类型转换 2. 技能要点 理解类型转换的原理 掌握强制类型转换的方法和用途 3. 任务实现过程 (1) 编写源文件 :DataOper.java, 使 int 类型变量自动转化为 double 类型变量,double 类型变量强制转化为 int 类型变量 源文件 :DataOper.java public class DataOper { public static void main(string[] args) { // int 类型数据将会自动转换成 double 类型 double db1; int i = 123; db1 = i; System.out.println("db1=" + db1); // double 类型数据转换成 int 时, 将会损失精度 double db2 = 1.234; int j = (int) db2; System.out.println("j=" + j); (2) 编译并运行这个程序, 可以得到如下的输出 : Db1=123.0 j=1 int 类型的数据已经自动转换成了 double 类型的数据, 而 double 类型数据在强制转换成 int 类型数据的时候, 小数点后面的值已经损失了 12

13 3.4.4 知识准备 : 引用类型 Java 语言中除了 8 种基本数据类型以外的数据类型称为引用类型, 或复合数据类型 如第 2 章中所述, 引用类型的数据都是以某个类的对象的形式存在的, 在程序中声明的引用类型变量只是为该对象起的一个名字, 或者说是对该对象的引用, 变量的值是对象在内存空间中的存储地址而不是对象本身 Java 中的所有对象都要通过对象引用访问, 引用类型数据以对象的形式存在, 其构造和初始化及赋值的机制都与基本数据类型的变量有所不同 声明基本数据类型的变量时, 系统同时为该变量分配存储器空间, 此空间将直接保存基本数据类型的值 而声明引用类型变量时, 系统只为该变量分配引用空间, 并未创建一个具体的对象或者说并没有为对象分配存储器空间, 将来在创建一个该引用类型的对象后, 再使变量和对象建立对应关系 这就好比用遥控器 ( 引用 ) 操纵电视机 ( 对象 ), 只要控制遥控器就可以保持与电视机的连接 如果需要换台, 实际上操控的是遥控器 ( 引用 ), 再用遥控器操作电视机 ( 对象 ) 此外, 即使没有电视机, 遥控器也可以独立存在 也就是说, 你拥有一个引用, 并不是一定需要有一个对象与它关联 因此, 如果想操纵一个词, 可以创建一个 String 引用 : String s; 这里所创建的只是引用, 并不是对象 如果此时向 s 发送一个消息, 就会返回一个运行时的错误, 因此, 一种比较安全的做法是创建引用的同时就进行初始化 String s = "Hello android"; 在这里用到了 Java 语言的一个特性 : 字符串可以用带引号的文本初始化 通常, 对其他对象需要一种更通用的初始化方法 参看任务四的引用过程 任务四 : 引用类型程序示例 1. 任务描述 编写程序定义引用类型变量, 了解引用类型的使用方法和特点 2. 技能要点 声明引用类型 了解引用类型和普通类型在使用上的区别 3. 任务实现过程 (1) 构造有引用类型成员变量的类 , 在这个类中, 定义了 3 个属性 :address title group, 以及一个具有 3 个参数的构造器, 用于在创建对象时初始化 3 个属性 通过定义这个类, 也就定义了一个引用类型的数据类型 : 源文件 : .java public class { // 定义属性 String address; String title; int group; // 定义一个构造器 public Student(String _address, String _title, int _group) { address = _address; title = _title; group = _group; 13

14 // 定义属性 address 的设置方法 public void setaddress (String _address) { address = _address; // 定义属性 title 的获取方法 public String gettitle() { return title; // 其他属性的设置和读取方法从略 (2) 再定义一个 Test .java 类, 用于说明引用类型的用法 源文件 :Test .java public class Test { public static void main(string[] args) { e1; e1 = new ("Android@gmail.com", "capter 3", 2); System.out.println(" 第一封邮件地址是 :" + e1.getaddress()); e2; e2 = e1; e1.setaddress("java@gmail.com"); System.out.println(" 第二封邮件地址是 :" + e2.getaddress()); 执行上面的 Test 应用程序, 可以在控制台上得到如下的输出结果 : 第一封邮件地址是 :Android@gmail.com 第二封邮件地址是 :Java@gmail.com 技能拓展任务 : 分析对象的构造和初始化 1. 任务描述 分析任务四的代码, 了解对象的构造和初始化的原理和过程 2. 技能要点 理解引用类型变量的初始化过程和内存分配过程 3. 任务实现过程 分析一下 Test .java 中的代码段 : e1; e1 = new ("Android@gmail.com", "capter 3", 2); System.out.println(" 第一封邮件地址是 :" + e1.getaddress()); e2; e2 = e1; e1.setaddress("java@gmail.com"); System.out.println(" 第二封邮件地址是 :" + e2.getaddress()); 这个代码段的作用是建立并初始化了两个 引用类型数据, 以对象 e1 为例讲解引用类型数据的初始化过程 ( 对象的初始化过程 ) (1) 执行语句 e1; 时, 系统为引用类型变量 e1 分配引用空间 ( 定长 32 位 ), 此时只是定义了变量 e1, 还未进行初始化等工作, 因此还不能调用 类中定义的方法, 如图 3-4 所示为此时内存的分配情况 (2) 执行语句 e1 = new ("Android@gmail.com", "capter 3", 2);, 先调用构造方法创建一个 类的对象 新对象分配的内存空间用来存储该对象所有属性 (address,title,group) 的值, 并对各属性的值进行默认的初始化 ( 关于默认初始化请参考 3.5 节内容 ) 注意, 在这个程序中, 因为 address 和 title 14

15 的类型是 String 类型, 也是属于引用类型, 所以它们的默认初始值也为 null, 图 3-5 为此时内存中的情况 图 3-4 步骤 (1) 执行后的内存情况 图 3-5 步骤 (2) 执行后的内存情况 (3) 接下来执行 类的构造方法, 继续此新对象的初始化工作, 构造方法中又要求对新构造的对象的成员变量进行赋值, 因此, 此时 address title group 的值变成了 "capter 3" 和 2, 图 3-6 所示为此时的内存情况 图 3-6 步骤 (3) 执行后的内存情况 (4) 至此, 一个 类的新的对象的构造和初始化构成已完成 最后再执行 e1 = new ("Android@gmail.com", "capter 3", 2) 中的 = 号赋值操作, 将新创建对象存储空间的首地址赋值给 类型变量 e1, 如图 3-7 所示为此时的内存情况 图 3-7 执行步骤 (4) 的内存情况于是引用类型变量 e1 和一个具体的对象建立了联系, 称 s1 是对该对象的一个引用 最后, 总结一下对象的构造及初始化程序的步骤 : (1) 分配内存空间 (2) 进行属性的默认初始化 (3) 进行属性的显式初始化 (4) 执行构造方法 (5) 为引用型变量赋值 3.5 变量及其初始化 在编写程序时, 通常需要使用一个 别名 来表示某种类型的可变值, 这就是 变量 在前面的程序中已经在很多地方用到了 变量 比如, 任务四中, 就定义了变量 address title 等 知识准备 : 局部变量大多数过程语言都有作用域的概念, 作用域决定了在其内的变量名的可见性和生命周期 Java 允许变量在任何程序块内被声明 变量的作用域在指定的局部程序块 ( 可以是方法体 程序段等 ), 这种类型的变量通常被称为 局部变量 要注意的是, 变量在其作用域内被创建, 离开其作用域时被撤销 因此, 一个变量的生存期就被限定在它的作用域中, 超出了作用域局部变量无效 1. 在程序块中声明局部变量 15

16 所谓程序块, 就是用 { 和 包含起来的代码块 它是一个单独的模块, 和方法有点类似, 但不能像方法一样可以用方法名来调用 在这个程序块中的变量也是局部变量, 即使这个程序体处于类的定义中 如下程序段 : public class Clock{ int getup = 6; { int gobed = 11; public void printit() { System.out.println(getUp); System.out.println(goBed);// 出错, 因为 gobed 是局部变量, 不能用于变量所在程序块范围之外 其中的变量 gobed 就是局部变量, 它只在自己所处的代码块中起作用 在 Java 中, 所有的变量必须先声明再使用 基本的变量声明方法如下 : <data_type> var_name [=var_value] 其中 data_type 是变量类型, 它可以是基本类型之一, 或类及接口类型的名字 变量类型后面, 跟着此变量的名称, 它的名称必须是一个符合 Java 命名规范的标识符 然后, 可以给这个变量赋一个值, 注意, 这个值的数据类型必须和变量的数据类型一致 ( 或者兼容 ) 下面是变量声明的几个例子: int i; double d1 = 123.4; double d2 = 123; 声明同一类型的多个变量时, 使用逗号将各变量分隔开 : int i,j,k; int a=1,b,c=100; 2. 在方法体中声明局部变量 此时, 此变量的作用范围只局限于此方法体内 示例如下 : public class ClockTest{ static int getup = 6; { int gobed = 11; public void alarm() { int al = 20; public void close() { System.out.println(al);// 出错,al 的作用范围只局限于方法 alarm 中 因为变量 al 是定义在方法 alarm 中的, 所以它的作用范围只局限在方法 alarm 中 在方法 close 中试图使用这个变量, 在编译的时候将会报错 局部变量在方法或代码块执行时创建, 方法或代码块执行结束时销毁 局部变量在使用前必须初始化 知识准备 : 成员变量 不在方法体也不在程序块中的变量, 称为成员变量 成员变量定义在类中, 是类成员的一部分, 整个类都可以访问它 只要类的对象被引用, 成员变量就将存在 Java 中成员变量说明的形式如下 : [ 修饰符 ] 成员变量类型成员变量名列表 ; 成员变量的修饰符有以下几种 : 默认访问修饰符 public protected private final 和 static 等 默认访问修饰符的成员变量可以被同一包 (Package) 中的任何类访问 下面是成员变量的一个例子 : 16

17 源文件 :Contact.java public class Contact{ public static void main(string args[]) { // 实例化 SendMsg 后可以访问具有访问权限的成员变量 SendMsg send = new SendMsg(); System.out.println(send.word); class SendMsg { int word = 12;// 成员变量 public int getword() { return word; 在这个例子中, 定义了一个类 SendMsg, 在这个类里面定义了一个 int 类型的成员变量 : word, 在用于测试的类 Contact 中, 首先实例化这个类, 然后再通过 实例名. 变量名 的方式来访问它 知识准备 : 变量初始化 所有的局部变量在使用之前, 都必须初始化, 也就是说, 必须要有值 在初始化变量时, 应该把变量名写在左边, 随后是赋值操作符 =, 然后再在右边加上一个恰当的 Java 表达式或值 变量的初始化有两种方法 : 一种是在声明变量的时候同时给它赋一个值 : int i = 4; 还有一种是, 先声明变量, 然后再在适当的时机给它赋值 : int k; k = 10; 知识准备 : 局部变量的初始化 局部变量也可以像成员变量一样, 先声明, 再初始化 ; 或者在声明的同时, 就对其进行初始化 也可以一次声明几个同一数据类型的变量 但是, 系统不会对局部变量进行默认的初始化, 因此, 局部变量在使用之前, 必须对其进行显式初始化 下面的代码中, 因为 n 没有初始化, 所以, 这个时候如果对它进行操作, 将会报错 : public class Test{ public void amethod(int j){ int m,n,k; m = j; k = 100; System.out.println(m); System.out.println(n);//Error System.out.println(k); 注意, 在这个程序中的变量 m, 它根据方法的传入参数 j 来初始化, 所以这个时候在方法体中是可以对其进行任何和其数据类型相匹配的操作了 知识准备 : 成员变量的初始化 变量在使用之前, 必须首先对它进行初始化 首先来看一下成员变量的几种初始化方式 : 成员变量的初始化可以在声明时初始化, 那么创建一个新对象时, 此成员变量的值固定不变 17

18 专业始于专注卓识源于远见成员变量在类的构造方法或其他方法中动态的初始化 成员变量的默认初始化值 默认初始化是 Java 成员变量的特性, 可以不需要手动地显式初始化成员变量 因为系统在创建一个新的对象的时候, 会给这些成员变量赋一个初值 在这里需要注意的是, 对于引用变量, 它的默认初值是 null 而非相应的引用类型对象, 也就是说, 它并不指向任何对象的首地址 特别是不能通过该引用类型变量去调用任何方法或属性, 否则, 将会出现错误 虽然成员变量可以不用显式初始化即可使用, 但是, 系统给不同数据类型的成员变量初始化时, 它的初始化的值是不同的, 比如,int 类型的初始化值是 0,boolean 类型的初始化值是 false 这与 3.4 节中给出的基本类型默认初始值相同 注意 : 系统只对全局 ( 成员 ) 变量指定默认的值, 不会对局部变量赋值 任务五 : 成员变量的 3 种初始化方式 1. 任务描述编写一个类, 有 3 个成员变量, 分别用上述 3 种方式进行初始化, 打印它们的值, 查看初始化效果, 并验证 Java 实行了成员变量的默认初始化 2. 技能要点 掌握 3 种初始化方式 了解 3 种初始化方式的区别和应用场合 3. 任务实现过程 (1) 编写一个名为 Initialize 的类, 该类中声明 3 个 int 类型变量 :a b c 对 a 进行声明时的初始化, 确定 a 的值 ; 对 b 在构造方法中进行动态初始化 ; 对 c 不进行初始化 (2) 在 main() 方法声明并初始化一个 Initialize 对象, 打印其成员变量 a b c 的值 源文件 :Initialize.java public class Initialize { int a = 10;// 成员变量 a 在声明时初始化 int b; int c; public Initialize(int i){ this.b = i;// 构造方法中初始化成员变量 b public static void main(string[] args) { Initialize init = new Initialize(20); System.out.println(" 声明时初始化变量 a="+init.a+ "\n 构造方法初始化变量 b="+init.b+"\n 变量默认初始化 c="+init.c); (3) 运行程序, 输出结果如下 : 声明时初始化变量 a=10 构造方法初始化变量 b=20 变量默认初始化 c=0 3.6 值传递和引用传递 知识准备 :Java 中的值传递 18

19 在程序中, 经常需要将一个变量的值赋给另一个变量, 赋值后, 两个变量的值相同, 那么, 在 Java 中, 它的实现机制是怎样的呢? 首先来看一个例子 : 源文件 :CallByValuePri.java /** * <DL> * <DT><b> 功能 :</b> * <DD> 简单类型数据传值调用演示 </DD> * </DL> */ public class CallByValuePri { void half(int n) { n = n / 2; System.out.println("half 方法 n=" + n); public static void main(string args[]) { CallByValuePri cb = new CallByValuePri(); int m = 10; System.out.println("Before the Invocation,m=" + m); cb.half(m); System.out.println("After the Invocation,m=" + m); 编译并用如下程序执行这个程序 : java CallByValue 可以得到如下的输出 : Before the Invocation,m=10 half 方法 n=5 After the Invocation,m=10 可以看到, 在调用方法的前后,m 的值不变 因为在 Java 中, 传递的是值, 这样, 只是将 m 的值传递给了方法 half(), 而 m 本身的值并没有发生改变 按值传递的重要特点 : 传递的是复制的值, 也就是说, 传递后就互不相关了 知识准备 :Java 中的引用传递 引用传递指的是在方法调用时, 传递的参数是按引用进行传递, 其实传递引用的地址也就是变量所对应的内存空间的地址 示例如下 : 源文件 :PassByReference.java public class PassByReference { private void printnumber(addressbook a){ a.number = 20; System.out.println("printNumber 方法中的 numner="+a.number); public static void main(string[] args) { PassByReference p = new PassByReference(); AddressBook a = new AddressBook(); a.number = 10; System.out.println(" 执行 printnumber 方法前 main 方法中的 numner="+a.number); p.printnumber(a); System.out.println(" 执行 printnumber 方法后 main 方法中的 numner="+a.number); class AddressBook{ // 电话簿中联系人数量 public int number; 19

20 运行结果如下 : 专业始于专注卓识源于远见 执行 printnumber 方法前 main 方法中的 numner=10 printnumber 方法中的 age=20 执行 printnumber 方法后 main 方法中的 age=20 可以看到, 当 printnumber 方法将引用对象 a 的成员变量 number 值改变后, 方法外的对象 a 的成员变量 number 值同样改变 传递的是值的引用, 也就是说, 传递前和传递后都指向同一个引用 ( 也就是同一个内存空间 ) 注意 : 在 Java 里面只有基本类型和按照下面这种定义方式的 String 是按值传递, 其他的都是按引用传递 就是直接使用双引号定义字符串方式 :String str = "This is Java"; 3.7 Java 编码规范 想象一下, 在一个大型的项目中, 如果每个程序员在给包 类 变量 方法取名的时候没有一点约定, 只是随心所欲, 可能会带来哪些问题? (1) 程序可读性极差 (2) 在相互有交互的程序中, 给其他程序员理解程序带来很大的麻烦 (3) 对于测试员来说, 在测试中如果需要检查源程序, 将会感到无从下手 (4) 在后续的维护中, 可能因为程序根本没法看懂, 而不得不重新编写一个新的程序 因此, 程序设计的标准化非常重要, 原因在于这能提高开发团队各成员的代码的一致性, 使代码更易理解, 这意味着更易于开发和维护, 从而降低了软件开发的总成本 为实现此目的, 和其他语言类似,Java 语言也存在非强制性的编码规范 知识命名规范命名惯例也称命名约定, 在声明包名 类名 接口名 方法名 变量名 常量名时, 除必须符合标识符命名规则外, 还应尽量体现各自描述的事物或属性 功能等 例如, 可定义类 Student 描述学生信息 一般性命名约定如下 : 尽量使用完整的英文单词或确有通用性的英文缩写 尽量采用所涉及领域的通用或专业术语 词组中采用大小写混合使之更易于识别 避免使用过长的标识符 ( 一般小于 15 个字母 ) 避免使用类似的标识符, 或者仅仅是大小写不同 具体命名规范如表 3-6 所示 表 3.6 Java 编程命名规范 元素名称命名规则示例 包 (Package) 类 (Class) 接口 (Interface) 采用完整的英文描述符, 应该都是由小写字母组成 对于全局包, 将 Internet 域名反转并接上包名 类名一般使用 ( 动 ) 名词或 ( 动 ) 名词组合来表示, 并且各个名词的首字母大写, 其他字母小写 接口名与类名类似, 一般使用 ( 动 ) 名词或 ( 动 ) 名词组合来表示, 并且各个名词的首字母大写, 其他字母小写 com.srt.moa.action Customer, SavingsAccount Contactable, Prompter 方法方法一般用一个动宾短语组成, 表示一个动作 public void balanceaccount(int 20

21 (Interface) 异常 (Exception) 变量名 静态常量字段 ( static final) 数组 方法的首字母小写 ( 通常是动词的首字母 ), 而其他单词的首字母大写 ( 通常是一个名词的首字母 ) 通常采用字母 e 表示 变量的名称一般使用一个 ( 动 ) 名词或其组合来表示, 并且首字母小写, 其他单词的首字母大写 全部采用大写字母, 单词之间用下画线分隔 数组应该总是用下面的方式来命名 : byte[] buffer; 而不是 : byte buffer[]; 专业始于专注卓识源于远见 deposit){... Exception e private int age; private String studentname; static final int MAX_SIZE=10; byte[] buffer 代码编写格式规范代码编写格式规范如下 : 缩进一般是每行 2 个或 4 个空格, 使排版整齐, 语句可读 关键词和操作符之间加适当的空格 相对独立的程序块与块之间加空行 较长的语句 表达式等要分成多行书写 若函数或过程中的参数较长, 需要进行适当的划分 一行只写一条语句, 即使是短语句也要分行 程序块由大括号 { 界定, 大括号必须成对出现, 且编程时 { 和 应各占独立一行, 同时与引用它们的语句左对齐 例如 : if (i>0) { i ++ ; // 错误, { 和 在同一行 if (i>0) { i ++ ; // 正确, { 单独作为一行 3.8 本章小结 本章介绍了 Java 注释 分隔符和标识符 关键字 数据类型等 Java 编程基础知识 ; 分析了变量的种类 和几种初始化方法 ; 描述了 Java 中值传递和引用传递两种传递方式的方法和区别 最后给出了 Java 编码规 范 本章所述均为 Java 编程中最基础但是关键的技术要点, 读者通过学习, 完成章节任务, 可以对 Java 编 程的理解深入一步, 并为之后的学习打下基础 课后练习题 一 选择题 1. 一个 byte 表示的数据范围是 ( ) A.-128 ~127 B ~32767 C.-255 ~ 256 D. 跟 Java 虚拟机相关 2. 下面 ( ) 是不合法的 Java 标识符 A.example123 B._for C.$apple D.#student 3. 下面 ( ) 不是 Java 的保留字 21

22 A.goto B.null C.While D.native 4. 关于 javadoc 命令正确的说法是 ( ) A.javadoc 可以提取所有的注释生成注释文档 B.javadoc 生成的注释文档是一个 word 文件 C.javadoc 生成的注释文档是一个 HTML 文件 D.javadoc 只能提取 /**...*/ 之间的注释 5. 下面 ( ) 不是 Java 基本数据类型 A.String B.boolean C.float D.byte 二 简答题 1. 简述代码块的概念 2. 简述标识符和保留字的区别 3. 简述 Java 中的数据类型 4. 简述局部变量 成员变量的区别 5. 简述参数的值传递和引用传递 三 编程题 编写一个类, 它有一个 char 类型的属性和一个 int 类型的属性, 不对它们进行初始化, 打印它们的值, 以 验证 Java 执行了默认的初始化 联系方式 集团官网 : 嵌入式学院 : 移动互联网学院 : 企业学院 : 物联网学院 : 研发中心 :dev.hqyj.com 集团总部地址 : 北京市海淀区西三旗悦秀路北京明园大学校内华清远见教育集团 北京地址 : 北京市海淀区西三旗悦秀路北京明园大学校区, 电话 : /5 上海地址 : 上海市徐汇区漕溪路 250 号银海大厦 11 层 B 区, 电话 : 深圳地址 : 深圳市龙华新区人民北路美丽 AAA 大厦 15 层, 电话 : 成都地址 : 成都市武侯区科华北路 99 号科华大厦 6 层, 电话 : 南京地址 : 南京市白下区汉中路 185 号鸿运大厦 10 层, 电话 : 武汉地址 : 武汉市工程大学卓刀泉校区科技孵化器大楼 8 层, 电话 : 西安地址 : 西安市高新区高新一路 12 号创业大厦 D3 楼 5 层, 电话 :

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

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

Microsoft Word - 01.DOC

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

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

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

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

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

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

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

软件工程文档编制

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

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

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

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

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

第3章 Java语言基础

第3章 Java语言基础 第 3 章 Java 语言基础 第 1/55 页 习题 3 3. 8. 9. 13. 18. 实验 : 1. 实验 4( 实 P11~12) 2. 实验任务 : 1 例 3.1( 教 P30) 2 变量赋值 ( 教 P29) 3 编写两个缓冲区对应同一个输入流对象, 并键盘输入整型 a 和双精度 b, 求和 第 2/55 页 习题 3 3. 实验任务 : 1 实验 5( 实 P12~13) 2 实验

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

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

Microsoft PowerPoint - course2.ppt

Microsoft PowerPoint - course2.ppt Java 程 式 設 計 基 礎 班 (2) 莊 坤 達 台 大 電 信 所 網 路 資 料 庫 研 究 室 Email: doug@arbor.ee.ntu.edu.tw Class 2 1 回 顧 Eclipse 使 用 入 門 Class 2 2 Lesson 2 Java 程 式 語 言 介 紹 Class 2 3 Java 基 本 知 識 介 紹 大 小 寫 有 差 (Case Sensitive)

More information

Microsoft Word - 第2章.doc

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

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

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

chp6.ppt

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

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

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 学习目标 描述 JSP 表达式语言的语法 认识使用 JSP 表达式的优点 在 JSP 中使用表达式语言 表达式语言简介 5 1 EL 为表达式语言 由两个组开发 JSP 标准标签库专家组 JSP 2.0 专家组 JSP 表达式语言的语法 ${EL Expression} JSP EL 表达式用于以下情形 静态文本 标准标签和自定义标签 表达式语言简介

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

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

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

拦截器(Interceptor)的学习

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

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

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

《大话设计模式》第一章

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

More information

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

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

More information

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

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 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public char

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

// 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

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

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

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

没有幻灯片标题

没有幻灯片标题 第 2 章 C 语言的基本数据类型与表达 式 2. 1 C 语言的语法基础 2. 2 C 语言的基本数据类型 2. 3 常量和变量 2. 4 运算符与表达式 2. 5 数据类型转换 用 第 2 章 C 语言的基本数据类型与表达 2.1 C 语言的语法基础 2. 1. 1 C 语言字符集 式 C 语言的基本符号可分 4 个类, 归纳如下 : (1) 英文字母 : 大小写各 26 个, 共计 52 个

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 组件技术概述 现在软件开发都已经转向了基于组件的开发, 目前具备代表性的组件技术有微软的 COM COM+, 有 Sun 的 Bean 和 EJB(Enterprise Bean), 另外还有 CORBA(Common Object Request Broker Architecture, 公 共对象请求代理结构 ) Bean Bean 规范将 软件组件

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat 本章学习目标 小风 Java 实战系列教程 AOP 思想概述 AOP 底层技术实现 AOP 术语介绍 SpringAOP 的 XML 方式 HelloWorld SpringAOP 的 XML 方式配置细节 SpringAOP 的注解方式 SpringAOP 的零配置方式 1. AOP 思想概述 1.1. AOP 思想简介 1.2. AOP 的作用 2. AOP 底层技术实现 小风 Java 实战系列教程

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 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public char

More information

任务 3 加法运算练习游戏 019 这就需要用到 C# 语言的基础语法, 如数据类型 运算符和控制语句, 还需要其他的常用控件 在此任务的完成过程中, 读者可以接触到 C# 的数据类型 变量常量 运算符 控制语句等基础语法, 掌握以上知识点及其在软件开发中的应用 3.2 相关知识 预定义

任务 3 加法运算练习游戏 019 这就需要用到 C# 语言的基础语法, 如数据类型 运算符和控制语句, 还需要其他的常用控件 在此任务的完成过程中, 读者可以接触到 C# 的数据类型 变量常量 运算符 控制语句等基础语法, 掌握以上知识点及其在软件开发中的应用 3.2 相关知识 预定义 任务 3 加法运算练习游戏 3.1 情境描述 选择了开发环境并理解了事件驱动机制以后, 要开发项目, 还需掌握 C# 语言的语法 本任务的目标是完成如图 3.1 和图 3.2 所示的小学生加法运算练习游戏 这个小软件的功能是在窗体中的 + 两边出现 2 个 10 以内的随机数, 让用户 ( 适合于小学生 ) 在文本框内输入其和, 然后单击 OK 按钮 若输入的和是正确的, 则跳出一个红色的图片, 同时提示答对了,

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

Microsoft Word - JCS5.doc

Microsoft Word - JCS5.doc 第 5 章进一步讨论对象和类 5.1 抽象数据类型 5.1.1 概述 绝大多数程序设计语言都预定义了一些基本数据类型, 并相应定义了对那些类型的实例执行的操作 比如, 对整型 实型等数值类型, 有加 减 乘 除等操作 ; 对逻辑类型, 有逻辑与 逻辑或 逻辑非等操作 对于用户自定义的复合数据类型, 需要由程序员自己定义一些方法, 对该类型的实例进行所需的操作 在早期许多程序设计语言中, 复合数据类型及其相关操作的代码之间没有特殊的联系

More information

尽 管 Java 语 言 是 在 C++ 语 言 基 础 上 发 展 起 来 的, 但 与 C++ 不 同,Java 是 一 种 纯 粹 的 面 向 对 象 语 言 (Object-oriented language) 在 Java 世 界 中, 所 有 事 物 都 是 Object 1. 通 过

尽 管 Java 语 言 是 在 C++ 语 言 基 础 上 发 展 起 来 的, 但 与 C++ 不 同,Java 是 一 种 纯 粹 的 面 向 对 象 语 言 (Object-oriented language) 在 Java 世 界 中, 所 有 事 物 都 是 Object 1. 通 过 玩 转 Object 不 理 解, 就 无 法 真 正 拥 有 歌 德 按 其 实 而 审 其 名, 以 求 其 情 ; 听 其 言 而 查 其 累, 无 使 放 悖 ( 根 据 实 际 明 辨 名 称, 以 便 求 得 真 实 情 况 ; 听 取 言 辞 后 弄 明 它 的 类 别, 不 让 它 混 淆 错 乱 ) 三 玩 转 Object 大 围 山 人 玩 转 Object...1 1. 通

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

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

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

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

More information

尽 管 Java 语 言 是 在 C++ 语 言 基 础 上 发 展 起 来 的, 但 是 有 别 于 C++,Java 是 一 种 纯 粹 的 面 向 对 象 语 言 (Object-oriented language) 在 像 Java 这 样 纯 粹 的 面 向 对 象 语 言 中, 所 有

尽 管 Java 语 言 是 在 C++ 语 言 基 础 上 发 展 起 来 的, 但 是 有 别 于 C++,Java 是 一 种 纯 粹 的 面 向 对 象 语 言 (Object-oriented language) 在 像 Java 这 样 纯 粹 的 面 向 对 象 语 言 中, 所 有 玩 转 Object 不 理 解, 就 无 法 真 正 拥 有 歌 德 按 其 实 而 审 其 名, 以 求 其 情 ; 听 其 言 而 查 其 累, 无 使 放 悖 ( 根 据 实 际 明 辨 名 称, 以 便 求 得 真 实 情 况 ; 听 取 言 辞 后 弄 明 它 的 类 别, 不 让 它 混 淆 错 乱 ) 三 玩 转 Object 大 围 山 人 玩 转 Object...1 1. 通

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

器之 间 向一致时为正 相反时则为负 ③大量电荷的定向移动形成电 流 单个电荷的定向移动同样形成电流 3 电势与电势差 1 陈述概念 电场中某点处 电荷的电势能 E p 与电荷量 q Ep 的比值叫做该点处的电势 表达式为 V 电场中两点之间的 q 电势之差叫做电势差 表达式为 UAB V A VB 2 理解概念 电势差是电场中任意两点之间的电势之差 与参考点的选择无关 电势是反映电场能的性质的物理量

More information

三种方法实现Hadoop(MapReduce)全局排序(1)

三种方法实现Hadoop(MapReduce)全局排序(1) 三种方法实现 Hadoop(MapReduce) 全局排序 () 三种方法实现 Hadoop(MapReduce) 全局排序 () 我们可能会有些需求要求 MapReduce 的输出全局有序, 这里说的有序是指 Key 全局有序 但是我们知道,MapReduce 默认只是保证同一个分区内的 Key 是有序的, 但是不保证全局有序 基于此, 本文提供三种方法来对 MapReduce 的输出进行全局排序

More information

STRUCT Tag OptTag ID Tag ID 7..4 Declarators VarDec ID VarDec LB INT RB FunDec ID LP VarList RP ID LP RP VarList ParamDec COMMA VarList ParamDec Param

STRUCT Tag OptTag ID Tag ID 7..4 Declarators VarDec ID VarDec LB INT RB FunDec ID LP VarList RP ID LP RP VarList ParamDec COMMA VarList ParamDec Param 7. 附录 A:C 语言文法 在本附录中, 我们给出 C 语言的文法定义和补充说明 7. 文法定义 7.. Tokens INT /* A sequence of digits without spaces */ FLOAT /* A real number consisting of digits and one decimal point. The decimal point must be surrounded

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

2015年计算机二级(C语言)模拟试题及答案(三)

2015年计算机二级(C语言)模拟试题及答案(三) 2016 年计算机二级 (C 语言 ) 模拟试题及答案 (3) 1.( A ) 是构成 C 语言程序的基本单位 A 函数 B 过程 C 子程序 D 子例程 2.C 语言程序从 ( C ) 开始执行 A 程序中第一条可执行语句 B 程序中第一个函数 C 程序中的 main 函数 D 包含文件中的第一个函数 3 以下说法中正确的是( C ) A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中,

More information

教案模板4-2

教案模板4-2 传智播客 Java 基础入门 教学设计 课程名称 : Java 基础入门 授课年级 : 2014 年级 授课学期 : 2014 学年第一学期 教师姓名 : 某某老师 2014 年 02 月 09 日 课题名称第 3 章面向对象上 计划学时 6 课时 Java 是一种面向对象的语言, 认识面向对象的编程思想对于 Java 学习至关重 内容分析 要 在面向对象中, 有两个重要的概念, 分别是类和对象,

More information

(京)新登字063号

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

More information

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

OOP with Java 通知 Project 3: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 4 月 19 日晚 9 点 复习 Upcasting 同一基类的不同子类可以被视为同一类型 ( 基类 ) 放宽类型一致性 简化接口 class A{ class B{ A a = new A(); B b = new B(); // A a = new B(); compile

More information

附录J:Eclipse教程

附录J:Eclipse教程 附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第

More information

Microsoft Word - PHP7Ch01.docx

Microsoft Word - PHP7Ch01.docx PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:

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

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 第十一讲 运算符重载 与类型转换 运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 为什么要运算符重载 预定义的运算符只针对基本数据类型, 若要对类的对象进行类似的运算, 需要重新定义运算符的功能 运算符重载实质就是函数重载 : 对已有的运算符赋予多重含义, 使得同一个运算符作用于不同类型的数据时导致不同的行为

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集

More information

PowerPoint Presentation

PowerPoint Presentation Skill-building Courses Intro to SQL Lesson 2 More Functions in SQL 通配符 :LIKE SELECT * FROM Products WHERE PName LIKE %gizmo% PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo

More information

Microsoft PowerPoint - C语言课件-9-结构体.pptx

Microsoft PowerPoint - C语言课件-9-结构体.pptx 第九章结构体 郎大鹏 第九章结构体 9.1 结构体类型的声明方法 9.2 结构体类型变量的定义与使用 9.3 结构体数组 9.4 编程举例 9.5 习题 9.1 结构体类型的声明方法 结构体声明的语法形式如下 : struct 结构体标识符 成员变量列表 ; }; 例如, 为了描述班级 ( 假设仅仅包括班级编号 专业 人数等信息 ), 可以声明如下的结构体类型 struct Class char Code[10];

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

0 本章掌握内容 C# 是一门语言 Framework 是运行库和类库 Visual Studio.NET 是开发环境 / 工具 VS2010 的使用 ( 程序 debug) C# 应用程序一般结构 控制台应用程序 窗体应用程序

0 本章掌握内容 C# 是一门语言 Framework 是运行库和类库 Visual Studio.NET 是开发环境 / 工具 VS2010 的使用 ( 程序 debug) C# 应用程序一般结构 控制台应用程序 窗体应用程序 软件开发基础 (.NET.NET) 1. C# 概述 林毅申 sunsoftware@qq.com 信息学院 计算机科学与工程系 软件工程教研室 505 0 本章掌握内容 C# 是一门语言 Framework 是运行库和类库 Visual Studio.NET 是开发环境 / 工具 VS2010 的使用 ( 程序 debug) C# 应用程序一般结构 控制台应用程序 窗体应用程序 一 C# 及相关概述

More information

领导,我不想写CSS代码.key

领导,我不想写CSS代码.key 领导 我不想写 CSS 张鑫旭 25MIN 2018-03-31 YUEWEN USER EXPERIENCE DESIGN 01 1 YUEWEN USER EXPERIENCE DESIGN 砖家 02 CSS - 艺术家 YUEWEN USER EXPERIENCE DESIGN 03 CSS - 砖家 艺术家 YUEWEN USER EXPERIENCE DESIGN 04 领导, 我不想写

More information

ch02_Basic

ch02_Basic 主要内容 C++ 语言概述 C++ 的发展 C++ 源程序结构与书写规范 C++ 编译器和集成开发环境 C++ 编程基础 数据的简单输入输出 2 C++ 语言概述 C++ 语言概述 C++ 的发展 - C++ 是从 C 语言发展演变而来, 可以看成是 C 的超集 - 1980 年由 Bjarne Stroustrup 开发创建 - 1983 年正式取名为 C++,1989 年开始 C++ 的标准化工作

More information

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2 PowerBuilder 9 PowerBuilder Native Interface(PBNI) PowerBuilder 9 PowerBuilder C++ Java PowerBuilder 9 PBNI PowerBuilder Java C++ PowerBuilder NVO / PowerBuilder C/C++ PowerBuilder 9.0 PowerBuilder Native

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23

目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23 Java 程 序 设 计 实 验 指 导 书 商 丘 学 院 计 算 机 科 学 与 技 术 学 院 张 艳 晓 目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23 实 验

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

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

填 写 要 求 1. 以 word 文 档 格 式 如 实 填 写 各 项 2. 表 格 文 本 中 外 文 名 词 第 一 次 出 现 时, 要 写 清 全 称 和 缩 写, 再 次 出 现 时 可 以 使 用 缩 写 3. 本 表 栏 目 未 涵 盖 的 内 容, 需 要 说 明 的, 请 在

填 写 要 求 1. 以 word 文 档 格 式 如 实 填 写 各 项 2. 表 格 文 本 中 外 文 名 词 第 一 次 出 现 时, 要 写 清 全 称 和 缩 写, 再 次 出 现 时 可 以 使 用 缩 写 3. 本 表 栏 目 未 涵 盖 的 内 容, 需 要 说 明 的, 请 在 附 件 4 精 品 在 线 开 放 课 程 申 报 书 学 校 名 称 课 程 名 称 广 东 科 学 技 术 职 业 学 院 Java 面 向 对 象 程 序 设 计 课 程 类 别 专 业 基 础 课 专 业 核 心 课 所 属 专 业 课 程 负 责 人 申 报 日 期 推 荐 单 位 软 件 技 术 刘 晓 英 2016 年 6 月 1 日 计 算 机 工 程 技 术 学 院 广 东 省 教

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

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt 2004 Marty Hall 服务器响应的生成 : HTTP 状态代码 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

More information

Spark读取Hbase中的数据

Spark读取Hbase中的数据 Spark 读取 Hbase 中的数据 Spark 和 Flume-ng 整合, 可以参见本博客 : Spark 和 Flume-ng 整合 使用 Spark 读取 HBase 中的数据 如果想及时了解 Spark Hadoop 或者 Hbase 相关的文章, 欢迎关注微信公共帐号 :iteblog_hadoop 大家可能都知道很熟悉 Spark 的两种常见的数据读取方式 ( 存放到 RDD 中 ):(1)

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

数据结构

数据结构 信息管理与信息系统专业 第 3 章变量与表达式 任课教师 : 吕雅丽 本章内容 3.1 C# 基本数据类型 3.2 常量与变量 3.3 创建并使用枚举类型 3.4 运算符与表达式类型 3.5 运算符的优先级与结合性 2 3.1 C# 基本数据类型 3.1.1 数值类型 1. 整数类型 整数类型又有有符号整数与无符号整数 有符号整数可以带正负号, 无符号整数不需带正负号, 默认为正数 有符号整数包括

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

C++ Programming Style.docx

C++ Programming Style.docx C++ Programming Style (C++ 编码规范 ) Last Modified: 2014-11-18 Hongfei Yan 目的 书写格式规范 标示符命名规范 文档规范 模块组织规范 一般性原则 = 目的 = 增强代码的可读性, 从而使得系统具有更少的 Bug 和更高的健壮性 涉及到程序的书写格式 (Code appearance/layout) 标示符命名 (Naming) 文档规范

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

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo 魔盾安全分析报告 分析类型 开始时间 结束时间 持续时间 分析引擎版本 FILE 2016-11-25 00:20:03 2016-11-25 00:22:18 135 秒 1.4-Maldun 虚拟机机器名 标签 虚拟机管理 开机时间 关机时间 win7-sp1-x64 win7-sp1-x64 KVM 2016-11-25 00:20:03 2016-11-25 00:22:18 魔盾分数 0.0

More information

RUN_PC連載_12_.doc

RUN_PC連載_12_.doc PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7

More information

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific

More information

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检 2016 年 上 半 年 软 件 设 计 师 考 试 真 题 ( 下 午 题 ) 下 午 试 题 试 题 一 ( 共 15 分 ) 阅 读 下 列 说 明 和 图, 回 答 问 题 1 至 问 题 4, 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 会 议 中 心 提 供 举 办 会 议 的 场 地 设 施 和 各 种 设 备, 供 公 司 与 各 类 组 织 机 构 租 用 场

More information