onTouchListener 只能收到ACTION_DOWN没有其他的MOVE等事件,因为当时的View并不是clickable的.
没有下面两个属性导致scrollView没有触发监听 android:focusable="true" android:focusableInTouchMode="true"
为什么循环要写成for(int i = 0;i<3;i++) 而不是for(int i = 0 ;i<=2;i++).第一个直接就可以算出3-0 = 3 有三个数据, 而后者 2-0+1个数据,多出1个加法运算.
为什么数组要从 0 开始编号? 由于数组是通过寻址公式,计算出该元素存储的内存地址: a[i]_address = base_address + i * data_type_size 如果数组是从 1 开始计数,那么就会变成: a[i]_address = base_address + (i-1)* data_type_size 对于CPU来说,多了一次减法的指令.
为什么说数组比链表要快 CPU在从内存读取数据的时候,会先把读取到的数据加载到CPU的缓存中.而CPU每次从内存读取数据并不是只读取那个特定要访问的地址,而是读取一个数据块并保存到CPU缓存中,然后下次访问内存数据的时候就会先从CPU缓存开始查找,如果找到就不需要再从内存中取.这样就实现了比内存访问速度更快的机制,也就是CPU缓存存在的意义:为了弥补内存访问速度过慢与CPU执行速度快之间的差异而引入. 对于数组来说,存储空间是连续的,所以在加载某个下标的时候可以把以后的几个下标元素也加载到CPU缓存这样执行速度会快于存储空间不连续的链表存储.
来源:oschina
链接:https://my.oschina.net/u/182639/blog/3135672