java基础
文章平均质量分 79
斗锋在干嘛
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对Thread、Runnable及线程池的理解
一.在java中要想实现多线程,有两种方法,一种是继续Thread类,另外一种是实现Runable接口。对于直接继承Thread的类来说,下面是一个简单的例子: 1.FirstThread继承Thread类class FirstThread extends Thread{public void run() { for(int i = 0;i<100;i++)原创 2015-10-28 11:14:56 · 1072 阅读 · 0 评论 -
Android静态代理模式深度解析
代理模式一般涉及到的角色有 -抽象角色:声明真实对象和代理对象的共同接口 -代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能替代真实对象相同的接口以便在任何时刻都能替代真实对象。同时,代理对象可以再执行真实对象操作时,附加其他的操作,相当于对象真实对象进行封装 -真实角色:代理角色代表的真实对原创 2016-02-24 23:09:12 · 403 阅读 · 0 评论 -
Android建造者模式深度解析
Q:"为什么Android选择用建造者模式设计Notification?:Notification有20+可配置项,避免构造方法重载。Q:"建造者模式会增加额外对象创建,如何优化?Q:"建造者模式与工厂模式有何本质区别?建造者模式适合包含多个组成部件的复杂对象。(如不同配置的AlertDialog):Builder的链式调用天然线程安全。的对象(如圆形按钮 vs 方形按钮):对频繁使用的Builder进行缓存。工厂模式适合创建过程简单的对象。:Kotlin中使用。原创 2016-02-24 23:07:03 · 344 阅读 · 0 评论 -
Android单例设计模式深度解析
只有调用getInstance()时才会加载Holder类。Q:"为什么Android系统服务使用单例模式?Q:"Kotlin中object与单例的区别?Q:"DCL为什么要加volatile?Q:"单例导致的内存泄漏如何预防?:volatile保证可见性和有序性。线程安全(由JVM类加载机制保证)存在线程安全问题(基础实现版本)利用JVM类加载机制保证线程安全。:修正后的JMM模型使DCL生效。:确保一个类只有一个实例存在。:类自身负责创建和管理实例。延迟加载(首次调用时创建)高效同步(仅首次需要加锁)原创 2016-02-03 23:13:50 · 397 阅读 · 0 评论 -
装饰者模式
装饰者模式:动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。具体实现通过一下几步:1、私有的父类对象2、构造方法对父类对象进行初始化3、重写要装饰的方法并且父类对象调用建一个父类:package com.demo1;public class Man { //相亲 public void xq() { System.out.prin原创 2016-02-04 19:13:37 · 371 阅读 · 0 评论 -
Java集合框架深度解析:HashMap、HashTable、HashSet及Map/Set接口
一,HashMap是非线程安全,HashTabale是线程安全;二,HashMap的键和值都允许有null值存在,而HashTable不行三,因为线程的安全问题,HashMap效率比HashTable的要高。原创 2016-02-02 18:30:39 · 417 阅读 · 0 评论 -
Android匿名内部类深度解析
Q:"为什么Handler匿名内部类会导致内存泄漏?:每个匿名类增加约200-500字节的.class文件。Q:"举一个Android框架中使用匿名内部类的例子":由LambdaMetafactory动态创建实现类。Q:"匿名内部类对APK体积和方法数的影响?Q:"Lambda如何避免匿名内部类的问题?ProGuard优化可移除未使用的匿名类。使用Lambda减少50%方法数增长。:相同签名的Lambda复用实例。直接访问外部类的final变量。避免为简单接口创建单独类文件。原创 2016-02-13 23:20:45 · 315 阅读 · 0 评论 -
Java重载(Overload)与重写(Override)深度解析
重载(Overload)同一类中方法名相同但参数列表不同编译时多态(静态绑定)与返回类型、修饰符无关重写(Override)子类重新定义父类相同签名的方法运行时多态(动态绑定)必须遵循"两同两小一大"规则:方法名和参数列表相同返回类型相同或是其子类(协变返回类型)抛出的异常不能比父类更宽泛访问权限不能比父类更严格。原创 2015-12-04 21:11:51 · 372 阅读 · 0 评论 -
深入理解hashCode与equals的区别与联系
一、equals方法的作用 1、默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。2 、要是类中覆盖了equals方法,那么就要根据具体的代码来确定equals方法的作用了,覆盖后一般都是通过对象的内容是否相等来判断对象是否相原创 2015-10-29 14:24:37 · 564 阅读 · 0 评论 -
equals()与hashCode()方法总结
一.首先equals()和hashcode()这两个方法都是从object类中继承过来的。 equals()方法在object类中定义如下:public boolean equals(Object obj) { return (this == obj); } 很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们必需清楚,当String 、Math、Intege原创 2015-10-29 14:56:26 · 1758 阅读 · 0 评论 -
对synchronized锁定对象的深入理解
1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。 synchronized 方法控制对类成员变量的访问:每个类实例对应一把锁,每个 synchronized 方法都必须获得调用该方法的类实例的锁方能执行,否则所属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线程方能获得该锁,重新原创 2015-10-29 14:11:01 · 414 阅读 · 0 评论 -
对final数据类型的简单理解
对于一个变量来说,当它被定义为final类型的时候,表示这个变量是不可改变的,也就保证了只会对它赋值一次,试图改变final变量的值,编译时均会报错,因此,声明为final类型的数据类型通常被认为是不可变的数据类型。 存在一种情况,会使这种不可变数据类型被改变。Java中新建一个类的对象通常是通过引用来实现的,这种引用会造成.“ 引用不变,但是引用所指向的值发生了改变”这种情况而编译时不会报错,所原创 2015-10-25 20:02:34 · 1030 阅读 · 0 评论 -
Java中equals与==的比较解析
对于一个变量来说,当它被定义为final类型的时候,表示这个变量是不可改变的,也就保证了只会对它赋值一次,试图改变final变量的值,编译时均会报错,因此,声明为final类型的数据类型通常被认为是不可变的数据类型。存在一种情况,“会使这种不可变数据类型被改变”。Java中新建一个类的对象通常是通过引用来实现的,这种引用会造成.“ 引用不变,但是引用所指向的值发生了改变”这种情况而编译时不会报...原创 2018-08-10 14:32:01 · 1456 阅读 · 0 评论
分享