Java的代码块
来源:互联网 发布:六轴机械手臂编程 编辑:程序博客网 时间:2024/05/19 23:14
1.什么是代码块
在类或者在方法中,直接使用"{}"括起来的一段代码,表示一块代码区域。代码块里变量属于局部变量,只在自己所在区域(前后的{})内有效。根据代码块定义的位置的不同,我们又分成三种形式:2.局部代码块
直接定义在方法内部的代码块:
一般的,我们是不会直接使用局部代码块的,只不过我们会结合if,while,for,try等关键字联合,表示一块代码区域.
class CodeBlockDemo {public static void main(String[] args) {//局部代码块{int a = 10;System.out.println(a);}//System.out.println(a);//编译报错,局部代码块中的变量属于局部变量,外部不能访问}}
3.初始化代码块(构造代码块)
直接定义在类中.
每次创建对象的时候都会执行初始化代码块:每次创建对象都会调用构造器,在调用构造器之前,会先执行本类中的初始化代码块.通过反编译之后,我们发现,初始化代码也作为构造器的最初的语句.
class CodeBlockDemo {//初始化代码块{System.out.println("初始化代码块");}//构造函数CodeBlockDemo(){System.out.println("构造方法");}public static void main(String[] args) {CodeBlockDemo cbd = new CodeBlockDemo();CodeBlockDemo cbd2 = new CodeBlockDemo();CodeBlockDemo cbd3 = new CodeBlockDemo();}}运行结果:
我们一般不使用初始化代码块的,难看,即使要做初始化操作,我们一般在构造器中做即可,如果做初始化操作的代码比较多,此时构造器的结构比较混乱,此时专门定义一个方法做初始化操作,再在构造器中调用即可.
上面的代码等价于:(我们推荐将初始化代码放到构造器中,或者在外部定义一个方法用于初始化,然后在构造器中调用即可)
class CodeBlockDemo {//构造函数CodeBlockDemo(){System.out.println("初始化代码块");System.out.println("构造方法");}public static void main(String[] args) {CodeBlockDemo cbd = new CodeBlockDemo();CodeBlockDemo cbd2 = new CodeBlockDemo();CodeBlockDemo cbd3 = new CodeBlockDemo();}}推荐:
class CodeBlockDemo {//初始化方法public void init(){System.out.println("用于初始化的方法");}//构造函数CodeBlockDemo(){this.init();System.out.println("构造方法");}public static void main(String[] args) {CodeBlockDemo cbd = new CodeBlockDemo();CodeBlockDemo cbd2 = new CodeBlockDemo();CodeBlockDemo cbd3 = new CodeBlockDemo();}}
4.静态代码块
使用static修饰的初始化代码块.
在主方法执行之前执行静态代码块,而且只执行一次.main方法是程序的入口,为什么静态代码块优先于main方法执行.--->:静态成员随着字节码的加载也加载进JVM,此时main方法还没执行,因为方法需要JVM调用.先把字节码加载进JVM, 而后JVM再调用main方法.一般的,我们用来做初始化操作,加载资源,加载配置文件等.
class CodeBlockDemo {//静态代码块static {System.out.println("静态代码块执行");}//构造函数CodeBlockDemo(){System.out.println("构造方法");}public static void main(String[] args) {CodeBlockDemo cbd = new CodeBlockDemo();CodeBlockDemo cbd2 = new CodeBlockDemo();CodeBlockDemo cbd3 = new CodeBlockDemo();}}运行结果:(可以看到静态代码块优先于构造器,只执行一次)
阅读全文
0 0
- Java的代码块
- JAVA的代码块
- Java的代码块
- Java的代码块
- java的代码块
- java的代码块优先级 (静态代码块,构造代码块,普通代码块)
- java的静态代码块
- java代码块的理解
- java代码块的理解
- java代码块及代码块的执行顺序
- Java中静态代码块、构造代码块的区别
- Java中普通代码块,构造代码块,静态代码块的代码示例及区分
- Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
- java中普通代码块,静态代码块,构造代码块的区别及代码示例
- Java的静态代码块、构造代码块、局部代码块
- Java中普通代码块、构造代码块、静态代码块的区别
- Java的构造方法和构造代码块,静态代码块,代码块
- Java中父类与子类的普通代码块,构造代码块,静态代码块 初始化
- java跨平台的原理
- 输入输出 端口类型
- C++最全string与char *的转换
- Android中View绘制过程(一) decorView绘制
- 方法和数组
- Java的代码块
- Matlab code for Gauss-Seidel and Successive over relaxation iterative methods
- OpenGL蓝宝书源码学习(二十)第六章——Dissolve
- unlink之64位下有保护措施的利用
- csdn如何转载别人的博客
- 模仿百度API接口搜索框
- C++ Primer 练习 12.19
- Android Loader的机制以及源码分析
- ubuntu 16.04 安装ROS时的依赖问题的解决