吕康

Results 40 comments of 吕康

已解决: override fun onSelected(index: Int, totalCount: Int) { setTypeface(Typeface.DEFAULT, Typeface.BOLD) } override fun onDeselected(index: Int, totalCount: Int) { typeface = Typeface.DEFAULT } 是由于设置了字体类型

类加载的过程分为三个部分: 1,加载 类加载是将.class 文件中的二进制数据读入内存中,将其放在运行时数据区的方法区内,然后在堆内存中创建一个对象,又来封装类在方法区内的数据接口。类加载的最终产品是为与堆中的Class 对象。 2,类的连接 类加载完成后,就会进入连接阶段,连接阶段负责把类的二进制数据合并到jre中,可分为三个阶段 1,验证。 2,准备。 3,解析 3,类的初始化 在类的初始化阶段,虚拟机负责对类进行初始化,主要是对类变量进行初始化。JVM初始化一个类包含如下几个步骤 1. 假如这个类没有被加载和连接,则程序加载并连接该类。 2. 假如该类的直接父类还没有被初始化,则先初始化其直接父类。 3. 假如类中有初始化语句,则系统一次执行这些初始化语句。 当执行第二步时,系统对直接的父类的初始化步骤也遵循此步骤。如果该类又有直接父类,则系统会再次重复这三个步骤来初始化该类。所以最先初始化的总是java.long.Object类。

final :可以修饰 类,方法,字段。 修饰类:该类不会被继承。 修饰方法:该方法不能被重写。 修饰字段:被修饰的 字段必须 赋初始值,并且不能被改变。如果字段是引用类型的。那么他将不能引用别 的对象,但是当前的对象内的 属性值是可以改变的。 static :可以修饰内部类,方法,字段。 修饰内部类:被static修饰 的内部类可以直接作为一个 普通的类来使用,而不需先实例一个外部列。 修饰方法:调用该方法的时候只需要类名 . 方法就可以直接调用,不需要创建对象。 修饰字段:通过类名 . 的方式可以直接 获取 或者 赋值。 synchronized 可以修饰 方法,代码块 修饰方法:被 synchronized 修饰方法方法在同一时刻只能被一个线程访问。其他线程将会被阻塞,直到当前线程释放锁。...

打卡,不太懂,一般使用的是 第三方库

LruCache 非常适合用于 缓存图片,他的主要算法原理是包最近使用的对象 存储在 LinckHashMap中,并且把最近使用的最少的对象在 缓存值达到预设值之前从内存中移除 `public class LruCachePhoto { /** * 图片 缓存技术的核心类,用于缓存下载好的所有图片, * 在程序内存达到设定值后会将最少最近使用的图片移除掉 */ private LruCache mMenoryCache; public LruCachePhoto() { //获取应用最大可用内存 int maxMemory = (int) Runtime.getRuntime().maxMemory(); //设置...

垃圾回收机制: 当堆内存中的某块区域没有对象引用时,这个内存区域就会变成垃圾,等待垃圾回收器的回收, 强制垃圾回收: 程序只能控制一个对象不被任何引用变量引用,绝对不能控制它的回收。 System.gc(); Runntime.getTuntime().gc(); 上面两个方法会建议系统进行垃圾回收,但是系统也有可能不进行回收。 对象的复活可以通过 finalize()方法来实现,

synchronized 可以保证原子性。他可以保证 在同一时刻,只有一个线程可以访问被 synchronized 修饰的方法,或者代码块。 volatile 不能保证原子性。当时在使用这个关键字后。当被Volatitle 修饰字段的值发生改变后,其他线程会立刻知道这个值已经发生变化了。volatitle 可以保证可见性和有序性。

一般情况下 equals比较的是 对象的地址,和 == 一样,但是有很多类重写了equals 方法。比如String 等。 而 hashcode( ) 方法返回一个 int 数,在object 类中的默认实现是 “将该对象的内存地址 转换成一个整数返回” hashCode 的 常规协定 在java 程序执行期间,在同一对象上调用多次 hashCode 返回的 int 数 必须项目。前提是对象上的equals 方法中所用的信息没有被修改。 如果 equals 比较的两个对象是相等的。那么hashCode...