在Java面向对象的内容中, 会引出代码块的相关概念. 在这里, 我总结了代码块的概述和分类情况以及区别.(个人感觉, 面试的时候可能会问, 但在开发中不用或者很少用, 不过, 理解相关原理更为重要!)
A: 代码块概述
在Java中,使用{ }括起来的代码被称为 代码块.
B: 代码块分类
根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(由于涉及多线程的内容, 在这里就不具体讲).
C: 常见代码块的应用
a: 局部代码块
在方法中出现, 限定变量生命周期,及早释放,提高内存利用率.
b: 构造代码块 (也叫初始化块)
在类中方法外出现, 多个构造方法中相同的代码存放到一起,每次创建对象时, 构造代码块都执行,并且在构造方法前执行
c: 静态代码块(一般用于加载驱动)
在类中方法外出现, 并加上static修饰, 用于给类进行初始化,在类加载的时候就执行,并且只执行一次。
程序实例:
我是局部代码块
10
我是静态代码块
我是构造代码块
我是空参构造方法
===============
我是构造代码块
我是有参构造方法
再附上一个另外的测试程序及结果:
本文小结:
当然, 通过对代码块的学习和程序执行顺序的了解, 更能加深对局部变量的生命周期和在内存中加载一个类以及创建其对象的理解, 对后续学习也有帮助!
本文源自: http://blog.csdn.net/menglanyingfei?viewmode=contents
希望大家能多多评论和指点我的文章, 以相互交流和学习, 也欢迎大家到我的博客里看看对您有帮助的文章, 也欢迎转载,但希望在明确位置注明超链接的出处! 谢谢!
A: 代码块概述
在Java中,使用{ }括起来的代码被称为 代码块.
B: 代码块分类
根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(由于涉及多线程的内容, 在这里就不具体讲).
C: 常见代码块的应用
a: 局部代码块
在方法中出现, 限定变量生命周期,及早释放,提高内存利用率.
b: 构造代码块 (也叫初始化块)
在类中方法外出现, 多个构造方法中相同的代码存放到一起,每次创建对象时, 构造代码块都执行,并且在构造方法前执行
c: 静态代码块(一般用于加载驱动)
在类中方法外出现, 并加上static修饰, 用于给类进行初始化,在类加载的时候就执行,并且只执行一次。
程序实例:
package org.lxy.test_class;
/**
* @author menglanyingfei
* @date 2017-2-11
*/
public class Demo1_Person {
public static void main(String[] args) {
{
System.out.println("我是局部代码块");
int x = 10; // 限定变量的生命周期
System.out.println(x + "\n");
}
Person s1 = new Person();
System.out.println("===============");
Person s2 = new Person("小李", 20);
}
}
class Person {
private String name;
private int age;
public Person() { // 空参构造
System.out.println("我是空参构造方法");
}
public Person(String name, int age) { // 有参构造
this.name = name;
this.age = age;
System.out.println("我是有参构造方法");
}
{
System.out.println("我是构造代码块");
}
static {
System.out.println("我是静态代码块");
}
}
运行结果:
我是局部代码块
10
我是静态代码块
我是构造代码块
我是空参构造方法
===============
我是构造代码块
我是有参构造方法
再附上一个另外的测试程序及结果:
package org.lxy.test_class;
/**
* @author menglanyingfei
* @date 2017-2-11
*/
public class Demo2_Student {
static {
System.out.println("Demo2_Student主类中 静态代码块");
}
public static void main(String[] args) {
System.out.println("Demo2_Student主类中 main方法");
System.out.println("==========================");
Student s1 = new Student();
Student s2 = new Student();
}
}
class Student {
static {
System.out.println("Student类中 静态代码块");
}
{
System.out.println("Student类中 构造代码块");
}
public Student() {
System.out.println("Student类中 构造方法");
}
}
本文小结:
当然, 通过对代码块的学习和程序执行顺序的了解, 更能加深对局部变量的生命周期和在内存中加载一个类以及创建其对象的理解, 对后续学习也有帮助!
本文源自: http://blog.csdn.net/menglanyingfei?viewmode=contents
希望大家能多多评论和指点我的文章, 以相互交流和学习, 也欢迎大家到我的博客里看看对您有帮助的文章, 也欢迎转载,但希望在明确位置注明超链接的出处! 谢谢!