static{}(静态代码块)与{}(非静态代码块)的异同点
相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,
一般在代码块中对一些static变量进行赋值。
不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new
一次就执行一次。非静态代码块可在普通方法中定义(不过作用不大);而静态代码块不行。
例:
public class PuTong {
public PuTong(){
System.out.print("默认构造方法!-->");
}
//非静态代码块
{ System.out.print("非静态代码块!-->"); }
//静态代码块
static{
System.out.print("静态代码块!-->");
}
public static void test(){
{
System.out.println("普通方法中的代码块!");
}
}
}
public class TestClass {
/** * 区别两次new静态与非静态代码块执行情况 */
public static void main(String[] args) {
PuTong c1 = new PuTong();
c1.test();
PuTong c2 = new PuTong();
c2.test();
}
}
/*运行输出结果是:静态代码块!-->非静态代码块!-->默认构造方法!-->普通方法中的代码块!非静态代码块!-->默认构造方法!-->普通方法中的代码块!*/
引自:http://www.cnblogs.com/rgky/archive/2011/03/17/1986907.html
分享到:
相关推荐
2. 初始化执行顺序:父静态变量、父静态代码块、子静态变量、子静态代码块、父非静态变量、父非静态代码块、父类构造函数、子非静态变量、子非静态代码块、子类构造函数 五、构造函数: 1. 与类同名,无返回值 2. ...
- 内部类(非静态)与外部类有紧密的关联,每个内部类对象都有一个对应的外部类对象。它们可以访问外部类的私有成员,而静态内部类则不行。 4. **& 和 &&**: - `&`是位运算符,用于按位进行与操作,适用于整型或...
静态方法与非静态方法的区别是静态方法与非静态方法的语法上的区别在于是否被 static 关键字修饰。final 成员变量一般在声明时进行初始化,一旦最终成员变量被赋值,则在整个程序执行过程中都不能被改变,final 方法...
1. **Java接口与C++虚类的异同** Java接口与C++的虚类都是用于实现多态性。Java接口仅包含抽象方法和常量,不允许有任何实现代码,而C++的虚类可以有成员变量和方法实现。Java中的类可以实现多个接口,但C++的类...
- **静态代码块**:类加载时执行,用于初始化静态变量。 - **静态成员**:属于类,而非类的实例,所有实例共享。 11. **面向对象的特征**: - **封装**:隐藏对象的属性和实现细节,仅对外提供公共访问方式。 -...
- 共同点:它们都提供了线程同步机制,确保同一时间只有一个线程访问特定代码块。 - 区别:`synchronized`是Java内置关键字,使用简单,但粒度较粗;`Lock`接口提供更细粒度的控制,如尝试获取锁、可中断等待、可...
用在代码块和方法上有什么区别? 80 【多线程】Volatile的理解 82 【*多线程】synchronized底层如何实现的? 82 【多线程】Callable 和 Runnable接口 82 【多线程】Java四种线程池的创建方法 83 【多线程】线程池...
动态游标与静态游标的区别? 84.dotnet由哪几个基本框架组成? 85.Oracle中SGA是什么? 86.web servers是什么? 87.UNIX中QT是什么意思? 88.在软件开发生命周期中的哪个阶段开始测试? 89.dotnet与J2EE的比较? 90....
13、是否可以从一个static方法内部发出对非static方法的调用? 14、Integer与int的区别 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 16、下面的代码有什么不妥之处? 17、请说出作用域public,...
13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...
13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...
61. 是否可以从一个static方法内部发出对非static方法的调用? 14 62. 写clone()方法时,通常都有一行代码,是什么? 14 63. 在JAVA中,如何跳出当前的多重嵌套循环? 14 64. List、Map、Set三个接口,存取元素时,各有什么...
13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...
13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...
13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...
13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 14 16、下面的代码有什么不妥之处? 14 17、请说出作用域...
13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用...
13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...