static:
- 修饰变量,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值,这个方法称为静态函数
- 修饰方法,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有,这个方法称为静态方法
- 用于class 前,说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的,这个类型称为静态类
- static{}称为static代码块 ,也叫静态代码块;是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次利用静态代码块可以对一些static变量进行赋值
- 修饰常量,静态常量public static final String
- 单例模式: Singleton模式的实现基于两个要点: 1.不直接用类的构造函数,而另外提供一个Public的静态方法来构造类的实例。通常这个方法取名为Instance。Public保证了它的全局可见性,静态方法保证了不会创建出多余的实例。 2.将类的构造函数设为Private,即将构造函数"隐藏"起来,任何企图使用构造函数创建实例的方法都将报错。这样就阻止了开发人员绕过上面的Instance方法直接创建类的实例。
饿汉模式:
饿汉式的创建方式在一些场景中将无法使用:
譬如实例的创建是依赖参数或者配置文件的,
在getInstance()之前必须调用某个方法设置参数给它,
那样这种单例写法就无法使用了。
class A{
private A(){}//构造方法私有化,防止外部直接new对象
private A a=new A();
public A getA(){
return a;
}
}
懒汉模式:
class B{
private B(){}
private static class C{
static final B b=new B();
}
public B getB(){
return C.b;
}
}
终极单例模式:
class D implements Serializable{
private D(){}
private static E{
static final d=new D();
}
public static getD(){
return E.d;
}
/*
*该方法保证反序列化的时候得到原来的对象
*/
private Object getReslove(){
return getD();
}
}
Android三级缓存机制: 内存-文件-网络 三层cache机制 当根据url向网络拉取图片的时候,先从内存中找,如果内存中没有,再从缓存文件中查找,如果缓存文件中也没有,再从网络上通过http请求拉取图片。在键值对(key-value)中,这个图片缓存的key是图片url的hash值,value就是bitmap。所以,按照这个逻辑,只要一个url被下载过,其图片就被缓存起来了。
UI布局: 线性布局:横向、纵向,通过layout_weight:1,layout_width:0 屏幕适配 重要属性:
- android:orientation
- android:layout_weight
- android:layout_width
- android:layout_height
- android:gravity
相对布局: 控件在内部相对位置摆放 通过id设置位置