Android 编程从0到1的过程,static、final、this、super、String、StringBuffer
关键字
static
- 使用static可以修饰成员变量,常量,方法和代码块;
- 静态成员是全局的,归整个类所有,不依赖特定的对象,是被所有类的对象所共享的;
- 只要类被java虚拟机加载,就可以根据类名在全局数据域内找到他们;
- 不能被重写。
举个例子,在办公室中放了一台咖啡机,这台咖啡机是公司所有员工都可以使用的,这台咖啡机就是”静态成员“,也就是static。值得注意的是,静态变量随着类的加载而加载,会赋默认值。
final
- 使用final可以用来修饰:类、方法、变量;
- final 标记的变量只能赋一次值(对基本类型来说其值不可变,引用类型其引用不可变,即不能指向其他对象)
- final 方法不能被子类重写,进行修饰属性时,子类可以使用,但也不能修改;
- final 类不能被继承,没有子类,比如String类,final 类中的方法默认是 final 的
this
this关键字用于指代当前对象实例本身。在Java中,当你创建一个类的实例(对象)时,this就是指向这个实例的引用。
super
super关键字用于从子类中访问父类的内容。当你创建一个子类对象时,它同时也包含了父类的所有内容(成员变量、成员方法等),super就是指向这个父类内容的引用。
数据类型
String
字符串常量,字符串长度不可变。Java 中 String 是 immutable(不可变)的。
StringBuffer
字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。
StringBuilder
字符串变量(非线程安全)。在内部,StringBuilder 对象被当作是一个包含字符序列的变长数组。
String和StringBuffer主要区别
1. String类的内容一旦声明后是不可改变的,改变的只是其内存的指向,而StringBuffer类的对象内容是可以改变的;
2. String 类覆盖了Object类的 equals()方法,StringBuffer类没有覆盖。
3. 都覆盖了Object()类的toString() 方法,实现不一样。String类的toString() 方法返回当前String实例本身的引用;而 StringBuffer类的toString方法返回一个以当前StringBuffer的缓冲区中的所有字符串为内容的新的String对象的引用。
4. String 对象可以用 操作符 "+ "进行连接,StringBuffer不能。