广东工业大学安卓期末复习_第1页
广东工业大学安卓期末复习_第2页
广东工业大学安卓期末复习_第3页
广东工业大学安卓期末复习_第4页
广东工业大学安卓期末复习_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

复习 Java 部分 Java 的基本语法 简单的算法编程实现 面向过程的程序设计 一元二次方程的求解 排序算法的实现 手工实现链表 打印 号图案等 99 乘法表 public class s99 public static void main String args for int i 1 i 9 i for int j 1 j i j System out print i j i j t System out print n 打印 号 staticvoid printchars intnum String s for inti 1 i num i System out print s publicstaticvoid main String args System out println 请输入一个奇数 Scanner sc new Scanner System in intn sc nextInt intline 上半部分 for line 1 line n 2 1 line intspace n 2 1 line intstar 2 line 1 输出 printchars space printchars star 输出回车换行 System out println 下半部分 for line n 2 2 line0 x1 b 2 a t x2 b 2 a t System out println x1 x1 System out println x2 x2 else x1 b 2 a x2 b 2 a System out println x1 x1 t i System out println x2 x2 t i 排序 package com sort public class 直接插入排序 public static void main String args int a 49 38 65 97 76 13 27 49 78 34 12 64 1 System out println 排序之前 for int i 0 i a length i System out print a i 直接插入排序 for int i 1 i 0 j 将大于 temp 的往后移动一位 if a j temp a j 1 a j else break a j 1 temp System out println System out println 排序之后 for int i 0 i a length i System out print a i A Java 的语言机制 单继承 引用 对象创建 集合类 包装类 内部类 接口与向上转型 static 代码块 异常处理等 a 单继承 IS A 关系 继承一个类与实现一个接口在语义上的区别 接口传达的意思是 拥有某种功能 能干嘛 比如 Serializable 代表可序列化的 继承传达的是意思是 is a 比如 猫 是一个 动物 猫就是动物的子类 b 引用 相当于 C 的指针 用于存放地址 Java 中 Apple a 对象还没有创建 a new Apple 对象创建 C 中 Apple a 已创建对象 Apple a new Apple Java 取消了指向基本数据类型的指针 如何传递基本数据类型的变量的地址 包装类 Wrapper Class c 对象创建 对象创建过程受控 禁止用户随意通过 new 创建对象 定义 private 类型的构造方法 公开一个 static 的方法 例如 getInstance 返回该类的对象 封装对象创建的代码 特别是针对复杂的对象 每个类知道如何创建自己的对象 例子 GameDemo 注意 Singleton 的实现 单例 即 一个类只能有一个对象 集合类 例如 ArrayList LinkedList HashSet 了解基本的功能 集合类是将多个元素组成一个单元的对象实现 Collection 接口 用于储存 检索和操纵数据 以及将数据从一个方法传输至另一个方 法 ArrayList 实现动态增长的数组 LinkedList 是通过节点直接彼此连接来实现的 每一个节点都包含前一个节点的引用 后一个节点的引用和节点存储的值 HashSet 是实现 Set 接口的一个类 具有以下的特点 不能保证元素的排列顺序 顺序有可能发生变化 另外 HashSet 不是同步的 如果多个线程同时访问一个 Set 只要有一个线程修改 Set 中的值 就必须进行同步处理 通常通 过同步封装这个 Set 的对象来完成同步 如果不存在这样的对象 可以使用 Collections synchronizedSet 方法完成 Set s Collections synchronizedSet new HashSet 元素值可以是 null d 内部类 语法 在类 接口 方法 里面定义内部类 可以无限制的访问外围类的成员 内部类 Inner Class 内部类的定义 定义在类 方法体 接口里面的类型 内部类的作用 可以隐藏类型 内部类可以不受限制的访问其外围类的成员 包括外围类的 private 成员 内部类的经典例子 迭代器 Iterator e 接口与向上转型 通过私有内部类实现外围公开的接口 返回对象时向上转型为公开接口 可以实现类型隐藏 接口 Interface 是一个完全抽象的存在 仅能有方法的样子 不能有实现 如果有数据成员 必须是 final 一个类可以实现多个接口 使用 implements 关键字 实现一个接口 必须实现其中的所有方法 或定义为 abstract 简单例子 SuperMan 实现了 CanFly CanJump CanSwim 三个接口 接口的语义 实现某个接口 使类具备某种能力 如 可拍照 CanFly 接口与继承都支持向上转型 一个对象可以用它实现的其中一个接口类型的引用去指向 但仅限于使用引用的接口所限制的方法 接口不仅是为了解决 Java 的多继承问题 还可以用于适配 类似于插座之间的转换器 例子 适配器模式 Adapter RandomNumAdapter1 继承方式 RandomNumAdapter2 组合方式 组合方式的适配器实现更加灵活 更接近现实 可以适配 RandomNums 及其所有的子类 f static 代码块 静态代码块 类被初始化时调用一次 static 对象可以在它的任何对象创建之前访问 无需引用任何对象 g 异常处理 两种异常 Checked Runtime Exception 异常的语法 异常的继承层次 异常的匹配 按 catch 块的顺序 Java 异常处理 优点 正常代码和异常代码分离 通过异常的继承层次 可以实现同类异常的统一处理 两种模型 终止模型 处理完异常不回去 恢复模型 Java 属于前者 两大类异常 CheckedException 编译器检查 RuntimeException Try 会抛出异常的代码 catch 异常 1 catch 异常 2 Finally 清理 关门代码 B 面向对象程序设计的相关概念 a 封装 类 访问控制关键字 包 封装是把过程和数据包围起来 对数据的访问只能通过已定义的接口 封装是一种信息隐藏技术 在 java 中通过关键字 private 实现 封装 封装把对象的所有组成部分组合在一起 封装定义程序如何引用对象的数据 封装实际上使用方法将类的数据隐藏起来 控制 用户对类的修改和访问数据的程度 b 继承 构造方法的运行次序 子类方法覆盖父类方法 c 多态 动态绑定 Animal a new Cat a sleep a age Animal 的 age 动态绑定仅发生在类的普通成员方法上 多态的定义 指允许不同类的对象对同一消息做出响应 实现多态的技术称为 动态绑定 dynamic binding 是指在执行期间判断所引用对象的实际类型 根据其实际的类型调用其相应的 方法 多态的作用 消除类型之间的耦合关系 d 类 接口 e 泛型 泛型的好处是在编译的时候检查类型安全 并且所有的强制转换都是自动和隐式的 以提高代码的重用率 泛型的本质是参数化类型 也就是说所操作的数据类型被指定为一个参数 f 反射 Reflection 运行时探测未知对象的内部信息 通过 波的反射 获得其内部的细节 并且可以调用对象内部的所有方法 Zoo2 Zoo3 g RTTI 运行时类型信息 h 回调 Callback 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针 地址 作为参数传递给另一个函数 当这个指针被用来调用其所 指向的函数时 我们就说这是回调函数 C 本学期学过的设计模式 Java 与 Android 部分 a 代理 动态代理 Proxy 代理 是一个中介 通过转发服务请求到真正的服务对象 如 Web 代理服务器 接收用户请求 转发请求 获取数据 把数据回传给 用户 房地产中介 代理可以过滤一些不必要的请求 或是隐藏服务对象的真正身份 代理与被代理对象至少要有相同的接口 b 适配器 将一个类的接口适配成用户所期待的 一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起 做法是将类自己的接口 包裹在一个已存在的类中 c 依赖注入 DI 依赖注入是 Spring 的思想 在使用 Spring 进行开发时 可以将对象交给 spring 进行管理 在初始化时 spring 创建一批对象 当你需 要用的时候只要从 spring 的容器中获取对象 而不用自己去 new 当然在对象创建的时候可以注入另一个对象 比如 A B 两个对象都 由 spring 管理 A 中持有对 B 的引用 那么 spring 在生成 A 对象的时候就已经吧 B 对象的一个实例给到 A 了 当你在 A 中用到 B 的 时候直接使用就可以了 d 对象工厂 主要是为创建对象提供过渡接口 以便将创建对象的具体过程屏蔽隔离起来 达到提高灵活性的目的 如果你有很多地方都需要 A 的 实例 那编写一个工厂专门生成 A 的实例 如果生成逻辑改变了 直接修改工厂 那么这些需要 A 的实例的地方只需要从工厂中 getObject 就可以了 完全不用管我的实例是咋来的 e 迭代器 提供一种方法顺序访问一个聚合对象中的各种元素 而又不暴露该对象的内部表示 f 单例 确保一个类只有一个实例 自行提供这个实例并向整个系统提供这个实例 特点 1 一个类只能有一个实例 2 自己创建这个实例 3 整个系统都要使用这个实例 优点 单例模式 能避免实例重复创建 单例模式 应用于避免存在多个实例引起程序逻辑错误的场合 单例模式 较节约内存 1 Android 部分 A Android 的基本程序结构 资源 本体代码 注册文件 Activity 1 应用程序的入口 2 界面显示 接收事件 控制显示跳转 BroadcastReceiver 1 用于注册和接收系统广播的事件 2 可接收自定义的广播事件 ContentProvider 1 提供数据库查询接口 2 可对外公开数据查询服务 Service 1 是一个独立的进程 可一直在后台运行 2 可以与其他组件通过远程连接绑定进行交互 3 可对外提供服务交互接 口 4 生命周期不依赖于其他组件的存在与否 B 界面编程模型 a 界面元素 控件和布局 界面设计原则 大框架用 XML 配置 部分使用动态界面生成代码 动态创建控件 绑定事件响应的代码 set Listener 方法 类似 Java 方法 创建一个新的 Activity MagicSquareActivity 通过 LinearLayout vertical 内置一个 GridLayout 动态创建 Button 数组 给每一个 Button 赋值 上颜色 通过 GridLayout LayoutParams 设置放入的具体参数 位置 Gravity 大小 b 事件 添加监听器 继承 c 资源 1 字符串资源 2 Layout 资源 3 图像资源 d XML 与 Java Code 在定义界面元素中的不同作用 XML 是静态的 Java Code 是动态的 e 9Patch 图片格式 增加了可以伸缩的局部区域的定义 使用 sdk tools draw9patch bat 工具 Show patches 指定可复制的区域 Show content 控制可显示的区域 f ListView 与 Adapter 静态的 ListView 只能显示简单的 静态的数据 复杂的数据通过 Adapter 为 ListView 提供数据 通过 Adapter 可以对 ListView 的显示数据格式进行定制 有 4 个具体的子类 ArrayAdapter 最简单 包装数组或 List 类型的简单数据 数据与 Item 的样式 Layout XML 文件 放入 ArrayAdapter 与 ListView 绑定 SimpleAdapter 很复杂 可以包装复杂数据 可以通过 XML 模板定制 Item 的具体格式 可以显示复杂数据 数据的关系 使用 Map 每个字段自定一个唯一的名字 SimpleAdapter 会根据该名字查找对应的值 显示的样式 字段名字与显示的控件 ID 绑定 在初始化 SimpleAdapter 的时候给出 增加 itemClick 的事件响应 SimpleCursorAdapter BaseAdapter 具有最高的可扩展性 C Handler 与多线程 为什么需要多线程 同步 并行 UI 的响应效率 Android 的多线程 UI 组件并非线程安全 只允许 UI 的线程去改变其状态 定时更新主界面上的控件状态 使用计时器 创建一个新的线程 每隔一定时间执行一次其中的 run 方法 在主线程中创建一个 Handler 子线程调用 Handler 发送信息 主线程的 Handler 通过 handlerMessage 方法处理接收到的消息 主线程默认有一个 Looper 其它线程需要手工创建 Looper 从消息队列中取出消息 发送给注册了的 Handler 处理 异步任务 比 Handler 轻量化 D Service 与 Activity 的数据交换 a BroadCast 方式 BroadCastReceiver Android 的四大组件 作用 接收其它应用程序发出的 BroadCastIntent 相当于一个系统级监听器 发送广播的例子 接收者通过 action 来确定要接收的 BroadCastIntent 有序广播 Receiver 有优先级 系统先回调优先级高的 receiver 的 onReceive 方法 接收者可以往其中加入额外的数据 传给下一个接收者处理 也可以取消广播 基于 Service 的播放器 分前台和后台 Activity 负责显示音乐播放的状态 有 play 和 stop 按钮 Service 负责播放音乐 并通知前台显示 两者之间有数据交互 思路 1 两者通过 BroadCast 通信 b Binder 方式 通过 iBinder 对象 作者称它是 Service 组件的内部钩子 hook 关于钩子 源于 Windows 系统编程 是一种事件 比如 消息 Mouse 事件 键盘 到达应用程序前中途截获事件的机制 钩子可以修改 丢弃事件 是 Windows 的一个后门 说明 MyBinder 继承 Binder Binder 实现 IBinder 公开 MyBinder 给调用者 通过 onServiceConnected 获取 MyBinder 对象的引用 此处用 Hook 似乎并不恰当 是 Service 对象在调用者端的表示 应该表述为 Proxy 代理 在更一般的情况下 客户端通过 Proxy 发送请求 Service 端通过一个特定的对象去接收 该对象称为 Stub 存根类 Proxy 相当于遥控器 而 Stub 相当于电视机里遥控信号接收模块 这正是 Java 的 RMI Remote Method Invoke 远程方法调用 的主要原理 MyBinder 此处同时扮演了 Stub 与 Proxy 的角色 E BroadCastReceiver a 全局的 BroadCast b 优先次序的 BroadCast BroadCastReceiver Android 的四大组件 作用 接收其它应用程序发出的 BroadCastIntent 相当于一个系统级监听器 发送广播的例子 接收者通过 action 来确定要接收的 BroadCastIntent 有序广播 Receiver 有优先级 系统先回调优先级高的 receiver 的 onReceive 方法 接收者可以往其中加入额外的数据 传给下一个接收者处理 也可以取消广播 基于 Service 的播放器 分前台和后台 Activity 负责显示音乐播放的状态 有 play 和 stop 按钮 Service 负责播放音乐 并通知前台显示 两者之间有数据交互 思路 1 两者通过 BroadCast 通信 F 数据库编程 a 直接操作 SQLite SQLite Android 自带驱动的小型高效文件数据库 适用于移动设备的本地数据存储 用 SQLiteDatabase 直接操作数据库 execSQL 支持 setParameter 所有动作都由原始的 SQL 语句执行 可以用 SQLiteStudio 3 0 7 打开 b 通过 ORM 层操作数据库 ORM 对象关系映射 Object Relational Mapping 理念 持久化保存对象 面向对象程序设计的核心是一切皆对象 软件系统表现为对象之间的相互作用 在业务逻辑和用户界面层中 程序是面向对象的 当对象状态发生变化时 当需要保存这种状态变化时 需要进行逐字段的保 存 例如拼接 SQL 语句 或是给出字段名的 update ORM 是一个自动化的机构 接收了对象的持久化请求 底层生成 SQL 交给关系数据库执行 高层代码只需要与对象打交道 著名的 ORM 实现 Java Web Servlet Hibernate Dot Net 平台 NHibernate Android 轻量级的 ORM OrmLite 通过 Annotations 的方式建立对象与 Table 的关联 例子 StuDB 通过 OrmLite 持久化 Student 对象 Student 的实体类 只有数据成员 要求按实体 Bean 的语法 数据成员 private 小写 提供 setter getter OrmHelper 负责封装 Orm 的 API 提供尽能简单的操作 add list edit del OrmHelper 中注册 Dao 对象 用到哪个就查哪个 如果没注册 就马上注册 StudentDao Dao 是 Data Access Object 的简写 是对 Student 对象持久化的操作的具体实现类 OrmHelper 与 Dao 都应该是 Singleton 安装 下载 jar 文件 放到 libs 目录 增加文件依赖 OrmLiteActivity c SharedPreferences SharedPreferences 用于保存少量简单数据 如配置信息 用户信息 格式 key value 操作 查询 isContainKey 读出 写入 保存在 data data 包名 shared prefs xml 里面 d ContentProvider ContentProvider 作用及背景 APP 之间的数据交换 一个 APP 通过 ContentProvider 可以暴露一些数据 供其它 APP 读 写 Android 也允许跨 APP 访问 SharePreferences 不建议这样做 类似一个网站或者是 WebService 实现 每个 ContentProvider 与特定的 Uri 统一资源标识符 在 Manifest 文件中指定 编写 ContentProvider 的子类 覆盖 4 个方法 query insert update delete 查 增 改 删 外界 APP 通过在 ContentResolver 中指明 Uri 及对应的方法去调用 ContentResolver 中的 Uri 是一个参数 Uri 本身可以带参数 UriMatcher 工具帮我们处理 Uri 带的参数 content gdut iot FirstProvider female student

温馨提示

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

最新文档

评论

0/150

提交评论