Android是基于java的,因此,Android的学习就必须先弄懂java。 java
本人新手,认为在android开发中经常使用到的java除了普通的String类和面向对象:好比关键字this,static,构造函数,尤为要明白三个方面: android
1,java的多线程 算法
2,IO流文件的读取 数组
3,集合 安全
一:先来讲java的多线程: 多线程
线程与进程的关系:进程是一个运行中的程序,它能够有不少线程,线程时cpu调度和分派的基本单位,容许多个线程并发执行能够提升运行效率: 并发
由于重点是Android,因此这里只简单介绍一下: 函数
多线程的实现经常使用的两种方法: 学习
第一种:本身建立一个类(mThread)继承Thread类;重写里面的run方法,这个run方法里面就是你的新的线程要执行的代码;须要调用这个新的线程的时候:就new一个本身建立的类的对象出来,new mThread().start()开启线程 this
第二种:建立一个类实现Runnable类,重现里面的run方法,里面也是要执行的代码,new Tread(mRunnable).start();开启新的线程(mRunnable是建立的子类的对象)
关于线程的操做:
sleep():线程睡眠一段时间
join():当前线程等待,其余线程执行完再指向当前线程
setName();getName():给线程命名,获取当前线程名
getCurrentThread():获取当前线程
同步:什么是同步?在多线程一块儿访问统一资源时有可能出现线程安全问题:这时候就可使用同步:保证同一时间该资源只有一个线程在访问
同步代码块与同步方法:
将须要同步的代码块放在synchronized(){}代码块中,()里面指定锁对象
方法:方法须要同步能够在方法前加上synchronized修饰
二:IO流文件读取:
IO流的方面仍是不少的,这里不作详细介绍,在Android中和java中没大的区别
三:集合:
Android中经常使用集合:List和Map
Lsit:有存储顺序,能够重复
ArrayList:数组结构 查找快,增删慢
LinkedList:链表结构 增删快,查找慢
存储,添加:add();
获取索引位置上的对象get(int index)
集合的遍历有三种方法:
for循环: 循环size()次, 每次调用get(int)方法获取一个元素.
迭代器: 使用iterator()方法获取一个迭代器(Iterator对象), 调用hasNext()方法判断是否包含下一个元素, 调用next()方法获取元素.
加强for循环: for (类型 变量名 : 容器) { 循环体 }, 容器长度是多少循环体就执行多少次, 变量每次引用容器中的一个元素.
相关代码
//加强for循环, for (类型 变量名 : 容器) { 循环体 }
private static void iterate1(List list) { for (Object obj : list) System.out.println(obj); }
//普通循环
private static void iterate2(List list) { for (int i = 0; i < list.size(); i++) System.out.println(list.get(i)); }
//迭代器循环
private static void iterate3(List list) { Iterate iter = list.iterate(); while(iter.hasNext()){ System.out.println(list.get(i));} }
Map:
Map是以键值对的方式存在的Map<key,value>
Map经常使用的方法
put(K key, V value)
存储一个键值对, 若是键在集合中存在, 值将会覆盖原有值, 而且返回原有值.
get(Object key)
根据键获取值, 若是不存在, 返回null
remove(Object key)
根据键删除值, 并将值返回, 若是不存在, 返回null
boolean containsKey(Object key)
判断指定的键对象是否存在
Map集合的遍历 *** keySet: Map集合的keySet()方法能够获得一个全部键对象组成的Set集合 遍历这个Set集合能够获得每个键对象 再根据键对象便可获取值 *** entrySet: Map集合的entrySet()方法能够获得一个全部Entry对象(键值对)组成的Set集合 遍历这个Set集合能够获得每个Entry对象 再使用Entry的getKey()方法和getValue()方法获取键和值
Hashtable: 和HashMap原理相同, 都是使用哈希算法去重复. 线程安全, 效率略低. 键和值都不容许为null