Home

Java集合包

整体架构 基础的定义接口有5个: List 是有序的,可以重复的元素的线性表。 Queue 对线性表的访问加以控制,一端入、一端出、先入先出。 Deque 同样是对线性表的访问加以控制,两端都可以出入、先入先出。 Map 是不重复的键值对。 Set 是不重复的数据集合。 在实现时,考虑几个特性: 无序/有序的线形表/有序的树; 顺序储存/链式储存; 非同步/同步非阻塞/同步阻塞。 另外,还有一些遍历、添加、删除、过滤、反转的工具类。 另外,还有一个操作char集合的类——String。 ArrayList和LinkedList ArrayList是顺序存储结构的线性表,查找效率高,插入删除效率低。 LinkedList是链表,查找效率...

Read more

创建跨进程组件

纯代码实现 业务层 定义接口 public interface IMyService extends IInterface { static final java.lang.String DESCRIPTOR = "com.demo.MyServer"; public void hellowWorld() throws RemoteException ; static final int TRANSACTION_HELLOW_WORLD = 1; } 客户端 public class MyServiceProxy implements IMyService { private android.os.IBinder mRemote; public MyServicePro...

Read more

Java类加载器

功能 类加载器可以根据一个指定的类的全限定名,找到对应的描述性的字节码文件,并把文件读取到内存中,转换成java.lang.Class对象。 分类 启动类加载器:加载/lib目录下的、-Xbootclasspath指定的路径下的类库,都是JVM自身需要的类。 扩展类加载器:加载/lib/ext目录下的、-Djava.ext.dir指定位路径下的类库。 系统类加载器:加载应用程序用到的类库。 动态绑定 java.lang.Class对象可以被动态地加载到内存,这叫动态绑定。 Class对象可以从Class文件,或包含Class文件的ZIP、JAR等压缩文件中读取,也可以从网络中获取(Applet),也可以在运行时生成(动态代理)。 双亲委派模型 定义 如果一个类加...

Read more

Java并发包

线程的生命周期 新建状态:创建一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序start()这个线程。 就绪状态:当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。 运行状态:如果就绪状态的线程获取到 CPU 资源,就可以执行run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。 阻塞状态:在线程死亡前失去所占用资源,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种:等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态;同步阻塞:线程在获取 synchroni...

Read more

Java特性

封装 定义 封装就是将类的信息隐藏在类内部,不允许外部程序直接访问,而是通过该类的方法实现对隐藏信息的操作和访问。 实现 封装实现主要是依赖private、protected、public三个访问修饰符。 继承 定义 继承定义了类与类的从属关系。子类继承了父类所有特性,并可定义更详细的特性。这也决定了类的组织形式是树。Java只有单继承,但是可以通过成员内部类间接实现多继承。 内部类 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。 成员内部类中隐式地持有外部类的引用,因此可以访问外部类的成员变量。 局部内部类、匿名内部类在引用外部变量时,必须将外部变量声明...

Read more