广东工业大学安卓期末复习.doc

上传人:jian****018 文档编号:8989420 上传时间:2020-04-02 格式:DOC 页数:9 大小:50.50KB
返回 下载 相关 举报
广东工业大学安卓期末复习.doc_第1页
第1页 / 共9页
广东工业大学安卓期末复习.doc_第2页
第2页 / 共9页
广东工业大学安卓期末复习.doc_第3页
第3页 / 共9页
点击查看更多>>
资源描述
复习Java部分Java的基本语法,简单的算法编程实现面向过程的程序设计:一元二次方程的求解、排序算法的实现、手工实现链表、打印*号图案等。99乘法表:public class s99public 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);elsex1=(-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(ai+ );/直接插入排序for (int i = 1; i =0; j-) /将大于temp的往后移动一位if(ajtemp)aj+1 = aj;elsebreak;aj+1 = temp;System.out.println();System.out.println(排序之后:);for (int i = 0; i a.length; i+) System.out.print(ai+ );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(编译器检查),RuntimeExceptionTry 会抛出异常的代码catch(异常1) . catch异常2Finally 清理、关门代码B. 面向对象程序设计的相关概念a) 封装:类、访问控制关键字、包封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。封装是一种信息隐藏技术,在java中通过关键字private实现封装。封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。b) 继承:构造方法的运行次序、子类方法覆盖父类方法c) 多态、动态绑定Animal a = new Cat();a.sleep();a.age/Animal的age动态绑定仅发生在类的普通成员方法上多态的定义:指允许不同类的对象对同一消息做出响应。实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。多态的作用:消除类型之间的耦合关系。d) 类、接口e) 泛型泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数f) 反射(Reflection)运行时探测未知对象的内部信息,通过“波的反射”获得其内部的细节,并且可以调用对象内部的所有方法Zoo2、Zoo3g) RTTI:运行时类型信息h) 回调:Callback回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。C. 本学期学过的设计模式(Java与Android部分)a) 代理/动态代理n Proxy(代理)是一个中介,通过转发服务请求到真正的服务对象,如Web代理服务器:接收用户请求,转发请求,获取数据,把数据回传给用户;房地产中介u 代理可以过滤一些不必要的请求,或是隐藏服务对象的真正身份u 代理与被代理对象至少要有相同的接口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图片格式增加了可以伸缩的局部区域的定义使用sdktoolsdraw9patch.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的事件响应SimpleCursorAdapterBaseAdapter:具有最高的可扩展性C Handler与多线程为什么需要多线程?同步、并行、UI的响应效率Android的多线程UI组件并非线程安全,只允许UI的线程去改变其状态定时更新主界面上的控件状态使用计时器:创建一个新的线程,每隔一定时间执行一次其中的run方法在主线程中创建一个Handler,子线程调用Handler发送信息,主线程的Handler通过handlerMessage方法处理接收到的消息主线程默认有一个Looper,其它线程需要手工创建Looper从消息队列中取出消息,发送给注册了的Handler处理异步任务比Handler轻量化D Service:与Activity的数据交换a) BroadCast方式BroadCastReceiverAndroid的四大组件作用:接收其它应用程序发出的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 BroadCastReceivera) 全局的BroadCastb) 优先次序的BroadCast- BroadCastReceivern Android的四大组件n 作用:接收其它应用程序发出的BroadCastIntentn 相当于一个系统级监听器n 发送广播的例子,接收者通过action来确定要接收的BroadCastIntentn 有序广播u Receiver有优先级,系统先回调优先级高的receiver的onReceive方法u 接收者可以往其中加入额外的数据,传给下一个接收者处理,也可以取消广播n 基于Service的播放器u 分前台和后台u Activity负责显示音乐播放的状态,有play和stop按钮u Service负责播放音乐,并通知前台显示u 两者之间有数据交互u 思路1:两者通过BroadCast通信F 数据库编程a) 直接操作SQLiteu SQLite:Android自带驱动的小型高效文件数据库,适用于移动设备的本地数据存储u 用SQLiteDatabase直接操作数据库,execSQL支持setParameter,所有动作都由原始的SQL语句执行u 可以用SQLiteStudio 3.0.7打开b) 通过ORM层操作数据库u ORMu 对象关系映射:Object Relational Mappingu 理念:持久化保存对象,面向对象程序设计的核心是一切皆对象,软件系统表现为对象之间的相互作用u 在业务逻辑和用户界面层中,程序是面向对象的,当对象状态发生变化时,当需要保存这种状态变化时,需要进行逐字段的保存,例如拼接SQL语句,或是给出字段名的updateu ORM是一个自动化的机构,接收了对象的持久化请求,底层生成SQL,交给关系数据库执行,高层代码只需要与对象打交道u 著名的ORM实现u Java、Web、Servlet:Hibernateu Dot Net平台:NHibernateu Android:轻量级的ORM,OrmLiteu 通过Annotations的方式建立对象与Table的关联u 例子:StuDB,通过OrmLite持久化Student对象u Student的实体类:只有数据成员,要求按实体Bean的语法(数据成员private小写,提供setter/getter)u OrmHelper:负责封装Orm的API,提供尽能简单的操作(add, list, edit, del)u OrmHelper中注册Dao对象,用到哪个就查哪个,如果没注册,就马上注册u StudentDao:Dao是Data Access Object的简写,是对Student对象持久化的操作的具体实现类u OrmHelper与Dao都应该是Singletonu 安装:下载jar文件,放到libs目录,增加文件依赖u OrmLiteActivityc) SharedPreferencesu SharedPreferencesu 用于保存少量简单数据,如配置信息,用户信息u 格式:key-valueu 操作u 查询(isContainKey())u 读出u 写入u 保存在/data/data/包名/shared_prefs.xml里面d) ContentProvideru ContentProvideru 作用及背景u APP之间的数据交换,一个APP通过ContentProvider可以暴露一些数据,供其它APP读/写u Android也允许跨APP访问SharePreferences,不建议这样做u 类似一个网站或者是WebServiceu 实现u 每个ContentProvider与特定的Uri(统一资源标识符),在Manifest文件中指定u 编写ContentProvider的子类,覆盖4个方法:query、insert、update、delete(查、增、改、删)u 外界APP通过在ContentResolver中指明Uri及对应的方法去调用u ContentResolver中的Uri是一个参数u Uri本身可以带参数,UriMatcher工具帮我们处理Uri带的参数 content:/gdut.iot.FirstProvider/female-studentsu 接受什么参数,是各个方法自行定义的u Uri是ContentProvider的4个方法的参数,如何把Uri中后面跟的参数取出来?u 基于ContentProvider的生词本u 访问系统自带的ContentProvider(自行阅读)u ContentObserveru 观察者模式u 监视ContentProvider的数据变化u 直接操作XML:PULL方式与DOM方式操作XML的区别u 直接操作XML文件u Java使用DOM(Document Object Model)的方式操作XML,DOM需要先加载整个XML文件到内存并生成结点的树状结构,可以通过XPath表达式进行高效的搜索u 适合Android的方式是PULL(默认的方式)u 通过XmlResourceParser读写u 逐标记的读,需要写一堆的if-else语句判断标记的名字,然后作出不同的动作e) 操作NoSQL:SnappyDBu NoSQLu Not Only SQL,指非关系型数据库u 数据不是以二维表的形式存放的u 以key-value的方式u 以文档集的方式u 以其它复杂的方式(图)G 网络编程a) 直接操作Socket:服务器端实现(多线程,在著名端口上监听,每个客户端通过不同的线程提供服务)b) 操作HTTP:下载URL指向的资源、网络爬虫原理、维持Sessioni. GET、POST请求ii. 多线程下载、断点续传的例子iii. JSON数据格式:语法,JSON格式与Java、JavaScript对象之间的转换iv. 电子拍卖系统的客户端实现(Server端、Struts、Spring、Hibernate不需要)网络爬虫的基本原理:1.首先选取一部分精心挑选的种子URL;2.将这些URL放入待抓取URL队列;3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。4.分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


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

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


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