MoJieBlog
MoJieBlog
学习目标: * 初始化时元素个数是多少 * 如何扩容 先来看看构造方法 无参数构造方法 ```java /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } ``` 这是无参数的构造方法,是对elementData(元素的数组)进行赋值DEFAULTCAPACITY_EMPTY_ELEMENTDATA(空数组,我们暂时叫做默认空数组),明明是空数组,但是注释确实创建容量是10。好吧继续往下看。...
> 如果两个链表相交的话,则它们的尾结点一定是相同的,呈横向的“Y”字型,那么最简单的方式就是分别遍历两个链表到结尾,对比结尾的值是否相等就可以了 正解。
> 题目不严谨,应该是如何判断一个单链表成环。 莫非单聊表和双链表成环你有不同的判断方法?
我理解的和楼上差不多,但是有的地方还不是太一样。当然这也是我自己的理解,欢迎指正。 * 成员变量:随着类对象的创建而创建,类对象不被引用时,会被标记为可以回收。在下一次内存回收时被回收。 * 局部变量:随着方法的调用被创建,方法执行完毕,被标记为可以被回收,在下一次内存回收时被回收。 * 静态变量:当类被加载时,直接创建。注意这里是加载,就算没有创建类对象,只是import,静态变量也会被创建。当类销毁时,被标记为可以回收。在下一次内存回收时,被回收。
给大家举个形象的例子吧。ViewGroup相当于老板或者部门管理。View相当于员工。onTouchEvent相当于接业务。dispatechTouchEvent相当于处理任务。onIterceptTouchEvent相当于拦截任务。 先来分配角色 * ViewGroup老板,或者部门管理有接收任务(onTouchEvent),处理任务(dispatchTouchEvent),拦截任务(oninterceptTouchEvent)的方法 * View有接收任务(onTouchEvent),处理任务(dispatchTouchEvent)的方法。 现在模拟来业务了(点击事件) 老板(ViewGroup)接到业务(onTouchEvent),他有两个选择 * 这个任务太轻松了,没必要往下传递我直接自己处理,所以拦截任务(oninterceptTouchEvent),并告诉客户处理结果 * 这个任务我不擅长,但是X部门比较擅长,我交给(dispatechTouchEvent)X部门 * 然后X部门领导接到任务,部门管理者有两个选择 * 自己处理oninterceptTouchEvent,并且告诉老板(返回true),我已经处理了 * 交给部门其他员工(子View)处理 * 员工接到任务(onTouchEvent),员工只能处理任务(dispatchTouchEvent)。并把处理结果告诉领导(return true|renturn false)。 * 领导接到员工的反馈,告诉老板(return true|renturn false)。 * 老板告诉客服处理结果
* 启动优化: application中不要做大量耗时操作,如果必须的话,建议异步做耗时操作 * 布局优化:使用合理的控件选择,少嵌套。(合理使用include,merge,viewStub等使用) * apk优化(资源文件优化,代码优化,lint检查,.9.png,合理使用shape替代图片,webp等) * 性能优化,网络优化,电量优化 * 避免轮询,尽量使用推送。 * 应用处于后台时,禁用某些数据传输 * 限制访问频率,失败后不要无限重连 * 选用合适的定位服务(GPS定位,网络定位,被动定位) * 使用缓存 * startActivityForResult替代发送广播 * 内存优化 * 循环尽量不使用局部变量 * 避免在onDraw中创建对象,onDraw会被频繁调用,容易造成内存抖动。循环中创建大的对象,也是如此。 * 不用的对象及时释放 *...