- 博客(49)
- 收藏
- 关注
原创 容器的深入研究
文章目录完整的容器分类图队列单向队列Queue双向队列Deque优先级队列PriorityQueuListArrayListLinkedListSetHashSetTreeSetLinkedHashSetMapHashMapLinkedHashMapTreeMapWeakHashMapConcurrentHashMapIdentityHashMap散列和散列码散列散列码完整的容器分类图上图介...
2020-04-06 17:55:57
323
原创 注解
文章目录Java内置的标准注解和元注解标准注解元注解定义注解注解元素元素的默认值注解处理器通过反射apt工具注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。Java内置的标准注解和元注解标准注解@Override,表示当前的方法定义将覆盖超类中方法,如果不小心拼写错误,或者方法签名对不上被覆盖的方法,编译器就会发出错误提...
2020-04-04 16:52:55
203
原创 枚举类型
文章目录枚举类型的定义基本枚举类的特性向枚举类中添加新的方法或域添加构造方法和域添加抽象方法覆盖枚举类方法关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组建使用。枚举类型的定义定义枚举类使用关键字enum(定义类使用class),后面紧跟类名。例子:public enum Shrubbery{A,B,C}其中A,B,C是这个枚举类的实例...
2020-04-03 22:45:55
217
原创 七大原则
面向对象的七大原则单一原则概念:就一个类而言,应该仅有一个引起它变化的原用。即一个类应该是一组相关性很高的函数、数据的封装,而两个完全不一样的功能应该放在不用的类中。该原则是实现高内聚、低耦合的指导方针。开闭原则概念:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对修改是封闭的。实现开闭原则的重要手段的就是“抽象”。里氏替换原则概念:如果对一个类型为A的对象a...
2020-01-09 22:41:37
242
原创 泛型
一般的类和方法,只能使用具体的类型,要么是基本类型,要么是自定义类型。如果要编写可以用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。在面向对象的编程语言中,多态算是一种泛化机制。例如,如果方法参数使用的是基类,那么这个方法可以适用的类和地方就会更多,这样就具备更好的灵活性。但是final类不能扩展,其他任何类都可以扩展。Java中是单继承的,所以上述方法还是受到很大限制。如果方法的参数...
2019-11-23 21:47:20
212
原创 类型信息
运行时类型信息使得我们可以在程序运行时发现和使用类型信息。运行时类型信息使得我们只能在编译期执行面向类型的操作的禁锢中解脱出来。Java中,我们在程序运行时识别对象和类的信息主要有两种方式:“传统的”RTTI,它假定我们在编译时已经知道了所有类型;“反射”机制,它允许我们在程序运行时发现和使用类的信息。为什么需要RTTIclass Shapes{}class Cirele exe...
2019-11-08 17:25:59
173
原创 通过异常处理错误
Java的基本理念是“结构不佳的代码不能远行”。发现错误的理想时机是在编译阶段,也就是在试图运行程序之前。然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间解决。这就需要错误源能通过某种方式,把适当的信息传递给某个接受者——该接收者将知道如何正确处理这个问题。Java通过异常来提供一致的错误报告模型。概念“异常”这个词有“我对此感到惊讶”的意思。问题出现了,你也许不清楚该如何处理,...
2019-11-02 11:49:05
210
原创 内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类。但内部类与组合是完全不同的概念。文章目录创建内部类链接到外部类使用.this和.new.this创建内部类class A { class B{ } public void static mian(String arg[]){ A a = new A(); A.B b = a.new B(); }}想要创建内部类对象...
2019-10-23 10:58:39
129
原创 接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。文章目录抽象类和抽象方法接口完全解耦Java 中的多重继承通过继承来扩展接口抽象类和抽象方法我们为了解决某个问题建立了一个类,这个类定义了方法但是没有具体的方法体,我们建立这个类的目的是想它的让导出类来做具体的实现,这个类只是建立了一个通用接口,让不同的子类用不同的方式表示此接口。通用接口建立起一种基本形式,以此表示所有导出类的...
2019-10-21 07:51:40
125
原创 多态
在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。文章目录再论向上转型转机方法调用绑定多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。“封装”通过合并特征和行为来创建新的数据类型。“实现隐藏”则通过将细节“私有化”把接口和实现分离开来。多态的作用则是消除类型这间的耦合关系。再论向上转型对象即可以作为它自己本身的类型使用,也可以作为它的基类型使用,这种把对某...
2019-10-19 10:15:58
167
原创 复用类
复用代码是Java众多引人注目的功能之一。但想要成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情。组合语法将现有类的对象的引用置于新类中。被视为“has-a”(拥有)关系。在使用对像的引用前必须要赋值在定义对象的地方。在类的构造器中。就在正要使用对象这前,称为“惰性初始化”。使用实例初始化(块语句)继承语句...
2019-10-17 09:22:10
146
原创 初始化与清理
随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价的高昂的主因之一。文章目录用构造器确保初始化方法重载默认构造器成员初始化用构造器确保初始化构造器是一种特殊的方法,采用与类名相同的名称。构造器没有返回值。返回空void和没有返回值是不一样的。不接受任何参数的构造器叫默认构造器。Book b = new Book(); 创建对象为对象在堆上分配了空间,并调用构造器初始化了对象...
2019-10-15 17:11:23
134
原创 控制执行流程
就像有知觉的生物一样,流程必须在执行过程中控制它的世界,并做出选择。在Java中,你要使用执行控制语句来做出选择。文章目录选择语句迭代选择语句if( Boolean-expression ){statement} else {statement}else 和它后面的{}可以没有。布尔表达式必须产生一个布尔结果。switch(integral-selector){cas...
2019-10-12 10:43:10
177
原创 操作符
在最底层,Java中的数据都是使用操作符来操作的文章目录使用Java操作符优先级赋值算数操作符自动递增和递减关系运数符逻辑操作符按位操作符移位操作符三元操作符字符串操作符类型转换操作符使用Java操作符操作符作用于操作数,生成一个新值。有些操作符可能会改变操作数自身的值,这被称为“副作用”。优先级一个表达式中同时存在多个操作符时,操作符的优先决定了各部分的计算顺序。可以使用()来明...
2019-10-11 16:02:53
163
原创 一切都是对象
文章目录引用操纵对象必须由你创建所有对象创建新的数据类型:类Java中的特例:基本数据类型“如果我们说一种不同的语言,那么我们就会发觉一个有些不同的世界” ——Luduing Wittgerstein引用操纵对象在Java程序中,一切都被视为对象。在程序中尽管一切都看作对象,但真正操作的是对象的标识符,而标识符称为对象的引用,所以程序中操作的是对象的引用。引用与对象引用可不关联对象而独...
2019-10-10 20:22:04
163
原创 对象导论
“我们之所以将自然界分解,组织成各种概念,并按其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下来…除非赞成这个协定中规定的有关语言信息的组织和分类,否则我们根本无法交谈。”——Benjamin Lee Whorf抽象的过程我们能够解决的问题的复杂性直接取决于抽象的类型和质量。类型是指所抽象的是什么质量是指抽象得好不好对问题的描述、理解和...
2019-10-09 16:35:29
164
原创 View的MOVE,UP,CANCEL事件分发机制源码分析
前言我们在View的DOWN事件分发机制源码分析中学习了DOWN事件在Activity,ViewGroup,View三者这间的传递。现在我们来学习MOVE,UP事件的传递以及CANCEL事件的产生和传递。我们可能都知道(听说)MOVE,UP的传递会受到DOWN事件的传递影响。为什么?下面我们慢慢来分析。注:我们先排除一误区 @Override public boolean dispa...
2018-10-08 17:20:55
1595
原创 View的DOWN事件分发机制源码分析
View事件分发机制源码分析前沿我们在前面学习了:View的Measure过程源码分析View的Layout过程源码分析View的Draw过程源码分析接下来我们学习View的事件传递机制。View的Measure,Layout,Draw和事件传递机制是自定义View必须要学习的。事件的基础知识1.什么是事件?点击事件(Touch事件)2.事件如何产生?当用户触摸屏幕时(Vie...
2018-10-07 16:01:12
948
原创 View的draw源码分析
单一View的draw过程我们直接看View的draw方法源码public void draw(Canvas canvas) { final int privateFlags = mPrivateFlags; final boolean dirtyOpaque = (privateFlags & PFLAG_DIRTY_MASK) == PFLAG_DI...
2018-09-20 01:01:35
560
原创 View的Measure过程源码分析
View工作流程的入口我们在Activtiy布局加载一文中介绍到,ViewRootIml的performTraversals()方法是View工作流程的入口,我们来看他的源码: 代码太长,我们只看关键部分。private void performTraversals() {... performMeasure(childWidthMeasureSpec, childHeig...
2018-09-16 22:08:28
396
原创 Activtiy布局加载
前言在前面的Activity的启动过程源码分析一文中讲述了Activity的创建过程,每创建一个Activity,就会创建一个PhoneWindow,在Activity的attach方法中创建。我们操作手机每跳转到一个新的界面(就是Activity),其实就是创建一个手机窗口PhoneWindow,这个手机窗口的内容就Activity。那Activity的内容怎么来的?接下来的我们慢慢分析。...
2018-08-02 22:52:07
267
原创 Android Activity的启动过程源码分析
Activtiy启动过程源码分析Activtiy启动过程源码分析在代码中我们启动一个Activity使用的方法是startActivity(Intent intent),这个方法起初是Context类的一个抽象方法,Activity间接继承了Context类,所以必须要重写这个抽象方法。我们直接从Activity的startActivity(Intent intent)方法看起...
2018-05-14 03:05:08
745
原创 Android SQLite数据库版本更新
SQLite数据库版本升级应用上线后会不断维护和更新版本,应用中使用数据库时,应用的升级难免会牵扯到数据库的升级。假如应用从V1.0更新到V2.0,到现在的V3.0。V1.0版本中只有一张Product商品表。到V2.0版本时,Product中需要增加一个字段salesperson。到V3.0时,增加了一张Shop表。那么需要考虑一个问题,应用的用户很多,有老用户,有新用户。用户使用可能使用不...
2018-05-03 01:16:32
3862
原创 Android SQLite使用介绍2
SQLite使用介绍2插入数据删除数据更新数据查询数据Cursor类介绍SQLite使用介绍2插入数据方法public long insert(String table, String nullColumnHack, ContentValues values);参数String table:表名参数String nullColumnHack:当va...
2018-05-01 22:27:40
342
原创 Anddroid SQLite源码分析
SQLite源码分析构造方法在 SQLite基础介绍 中介绍到了涉及到的类,SQLiteDatabase代表数据库的类,要想获得SQLiteDatabase类的对象,就必须要重写SQLiteOpenHelper抽象类。onCreate()方法和onUpgrade()方法是必须重写的方法。四个和五个参数的构造方法写其一或都写都可以。例:public class DBOpenHel...
2018-05-01 16:36:55
547
原创 Android SQLite的使用
SQLite的使用详解SQLite可以使用的数据类型SQLite的约束条件创建表、删除表、更新表插入数据删除数据更新数据选择语句聚合函数分组对表分组后进行筛选排序运算符SQLite的使用详解SQLite可以使用的数据类型SQLite的数据类型使用来说明表中的属性的值属于什么类型。(或者说,属性声明了类型,值就必须是这个类型的)。在 SQLi...
2018-05-01 01:09:28
454
原创 Android SQLite基础知识介绍
前言关系模型的数据描述关系模型的数据结构涉及类前言一个应用可以有一个或多个数据库,一个数据库可以有一张或多张表。数据库可以在任何时候创建,数据库中的表可以在任何时候创建。关系模型的数据描述SQLite数据库是关系模型数据库。关系模型数据库使用自己的一套术语,其基本术语有属性、元组、关系、关系模型。它的 基本数据结构成为关系。一个数据库又若干个关系组成;一个关...
2018-04-30 16:56:02
223
原创 Android 之文件存储详细介绍
文件存储前言内部存储和外部存储各方法介绍清楚数据和清楚缓存文件存储前言手机自身带的存储叫机身存储,SD卡存储(小小黑色卡)不能叫机身存储,它和手机是可以分离的。机身存储因手机体统的不同被划分的也不同。内部存储和外部存储内部存储 内部存储位于系统中很特殊的一个位置,如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用...
2018-04-30 15:03:04
3531
原创 SharedPreferences详细介绍
SharedPreferences详细介绍作用模式相关类存储的数据类型存储位置SharedPrefrences 和 Eidtor 的实现类SharedPreferencesImpl 和 EidtorImpl 操作数据的实体类SharedPreferences详细介绍作用SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件...
2018-04-06 01:16:43
2026
原创 Android中的MVC模式理解
MVC概述:MVC模式的结构分为三部分,实体层的Model,视图层的View,以及控制层的Controller。(1)其中View层其实就是程序的UI界面,用于向用户展示数据以及接收用户的输入。(2)而Model层就是JavaBean实体类,用于保存实例数据。(3)Controller控制器用于更新UI界面和数据实例。看图例如,View层接受用户的输入,然后
2017-05-14 19:56:40
412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人