一.简介
在类或者方法中,直接使用{}括起来的一段代码,表示一块代码区域,代码块里变量属于局部变量(没有默认初始值),只在自已所在的区域内(前后的{})有效。
根据其位置和声明的不同,代码块可以分为:局部代码块(普通代码块),构造代码块和静态代码块。
下面对三种代码块进一步的详解。
二.局部代码块
局部代码块(普通代码块):控制变量的生命周期,提高内存利用率。
位置:在方法内部。
作用:用于限定变量的生命周期,及早释放变量,提高内存利用率。
举例:
Bitmap image = null;
AssetManager am = getResources().getAssets();
try {
InputStream is = am.open(fileName);
image = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return image;
三.构造代码块
在类中直接定义没有任何修饰符、前缀、后缀的代码块即为构造代码块。可以给所有对象进行初始化。
位置:类里。
作用:可以给所有对象进行初始化。
举例:
public MyView(Context context) {
...
}
四.静态代码块
静态代码块就是用static修饰的用{}括起来的代码段。对静态属性、类进行初始化,并且只执行一次。
位置:类里。
作用:对静态属性进行初始化。
举例:
static {
Log.d("TestClass","静态代码块执行...");
}
五.综合举例
类代码
package com.wjn.lubandemo.bean;
import android.util.Log;
public class TestClass {
public TestClass(){
Log.d("TestClass","构造代码块执行...");
}
static {
Log.d("TestClass","静态代码块执行...");
}
public void init(){
int num=9;
int tep=3;
int result=num-tep;
Log.d("TestClass","局部代码块代码块执行...");
}
}
调用
TestClass testClass=new TestClass();
testClass.init();
结果
进入,退出,进入
D/TestClass: 静态代码块执行...
D/TestClass: 构造代码块执行...
D/TestClass: 局部代码块代码块执行...
D/TestClass: 构造代码块执行...
D/TestClass: 局部代码块代码块执行...
进入,杀进程,进入
D/TestClass: 静态代码块执行...
D/TestClass: 构造代码块执行...
D/TestClass: 局部代码块代码块执行...
D/TestClass: 静态代码块执行...
D/TestClass: 构造代码块执行...
D/TestClass: 局部代码块代码块执行...