- 博客(11)
- 资源 (7)
- 收藏
- 关注
原创 《Effective Java》学习笔记上
第2章 创建和销毁对象第1条:考虑用静态工厂方法代替构造方法静态工厂方法与构造方法的不同优点:静态工厂方法有名称。当一个类需要多个带有相同签名的构造器时,就用静态工厂方法代替构造方法,并且慎重选择名称以便突出区别。不用每次调用它们的时候都创建一个新对象。静态工厂方法能够为重复的调用返回相同的对象,有助于类总能严格控制在某个时刻那些实例不该存在。可以返回原返回类型的任何子类型的对象。有更大的灵活
2020-03-10 15:28:40 139
原创 View 事件传递
1、基础知识(1) 所有 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多指触摸)等。(2) 事件类型分为 ACTION_DOWN, ACTION_UP, ACTION_MOVE, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_CANCEL,每个事件都是以 ACTION_DOWN
2017-04-25 09:53:59 135
转载 Android NDK学习笔记
转载地址:https://juejin.im/post/57e522e3c4c971005f5dcb00引言最近开发项目用到了多个C语言编写的动态链接库so,期间遇到很多问题,项目开发完毕后,我觉得有必要把开发中的一些知识点总结下来,并结合我手边的一本经典教程《Pro Android C++ with the NDK》,写下这个系列的文章,分享给大家,希望给想入门Android NDK开发的朋友
2017-04-18 11:12:17 186
转载 Android性能优化-内存泄漏
转载地址:http://www.jianshu.com/p/402225fce4b2JVM内存管理Java采用GC进行内存管理。深入的JVM内存管理知识,推荐《深入理解Java虚拟机》。关于内存泄漏我们要知道,JVM内存分配的几种策略。静态的静态的存储区,内存在程序编译的时候就已经分配好了,这块内存在程序整个运行期间都一直存在,它主要存放静态数据、全局的static数据和一些常量。栈式的在执
2017-04-14 10:26:18 136
转载 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
当你发布一个应用之后,(取决于具体的发布时间)可能没过几个月 Android 系统就发布了一个新版本。这对你的应用意味着什么,所有东西都不能用了?别担心,向前兼容是 Android 非常关注的事情。用户在升级到新版 Android 的时候,用以前版本的 SDK 构建的现有应用应该不会出问题。这就是 compileSdkVersion, minSdkVersion 和 targetSdkVersion
2017-04-13 17:23:03 106
原创 ArrayList和LinkedList源码对比总结
关于ArrayList的源码,给出几点比较重要的总结:ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能在单线程环境下,多线程环境下可以考虑用collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的C
2017-04-01 15:10:43 127
原创 String和Vector源码的总结
关于String的源码的总结:String对象是不可变类型,返回类型为String的String方法每次返回的都是新的String对象,除了某些方法的某些特定条件返回自身。String对象的三种比较方式:==内存比较:直接对比两个引用所指向的内存值,精确简洁直接明了。equals字符串值比较:比较两个引用所指对象字面值是否相等。hashCode字符串数值化比较:将字符串数值化。两个引用的ha
2017-04-01 15:09:32 130
转载 java对象的强引用,软引用,弱引用和虚引用
1.强引用以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。2.软引用(SoftReference)如果一个对象只具有软引用,那就类似于可有可无的生活用品。如果内存
2017-03-31 16:41:04 95
原创 == 与equals的区别
== 与equals的主要区别是 == 常用于比较原生类型,而equals()方法用于检查对象的相等性。另一个不同的点是:如果== 和equals()用于比较对象,当两个引用地址相同,== 返回true。而equals()可以返回true或者false主要取决于重写实现。最常见的一个例子,字符串的比较,不同情况==和equals()返回不同的结果。equals()方法最重要的一点是,能够根据业务要求
2017-03-31 15:53:15 195
原创 Java 内存分配策略
Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,对应的,三种存储策略使用的内存空间主要分别是静态存储区(也称方法区)、栈区和堆区。静态存储区(方法区):主要存放静态数据、全局 static 数据和常量。这块内存在程序编译时就已经分配好,并且在程序整个运行期间都存在。栈区 :当方法被执行时,方法体内的局部变量(其中包括基础数据类型、对象的引用)都在栈上创建,并在方法
2017-03-31 11:09:00 172
原创 面向对象六大原则
面向对象六大原则单一职责原则定义:就一个类而言,应该仅有一个引起它变换的原因。(一个类中应该是一组相关性很高的函数、数据的封装)开闭原则定义:软件中的对象(类,模块,函数等)应该对于扩展是开放的,但是,对于修改是封闭的。里氏代换原则定义:只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本不需要知道是父类还是子类;但是反过来就不行了(抽象)。面向对象三
2017-01-03 17:33:33 160
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人