static关键字修饰变量的加载和初始化过程(Java)
来源:互联网 发布:sql联合主键查询 编辑:程序博客网 时间:2024/05/29 12:37
static关键字修饰变量的加载和初始化过程(Java)
一、static修饰变量
1. 第一种情况
public static int i; //声明静态变量ipublic static void main(String args[]) { System.out.println(i); //输出 0}
说明:声明了一个静态变量,但没有初始化操作;所以编译器不会提供默认的static来初始化静态变量 i;即在main函数没调用之前 i 没有初始化,当main函数加载到内存栈中后, 静态变量 i 同时被加载到堆中,在堆中 i 被默认初始化为 0 ;
注:整型初始化为 0 ,应用类型初始化为 null
2. 第二种情况
//声明静态变量i,并有初始化操作,//编译时,编译器会提供默认的static块来初始化ipublic static int i=6; //上面一行代码等价于public static int i; //静态变量的声明, static{ i = 6; //静态变量的初始化 }//主函数public static void main(String args[]) { System.out.println(i); //输出 6}
- 第三种情况:执行顺序的理解
static{ i = 10; //初始化为10 } public static int i = 11; //静态变量的声明, public static void main(String args[]) { System.out.println(i); //输出 11 }//以上代码等价于;static{ i = 10; // 2.按顺序,先执行该static块,初始化为10 }public static int i; //1.此时i声明,未初始化static{ i = 11; // 3.按顺序,再执行该static块,初始化为11 }
结果:最终输出为11;静态变量 i 的值改变了两次。
4. 第四种情况 :和第三种进行比较理解
public static int i = 11; //静态变量的声明, static{ i = 10; //初始化为10 } public static void main(String args[]) { System.out.println(i); //输出 10 }//以上代码等价于public static int i; //1.此时i声明,未初始化static{ i = 11; // 2.按顺序,先执行该static块,初始化为11 }static{ i = 10; // 3.按顺序,再执行该static块,初始化为10 }
- 根据以上分析来理解一下代码;
static{ i = 18;}public static int i = 34;static{ i = 40; }
说明: 静态变量 i的初始化过程: 18 –> 34 –> 40。所以最后的输出结果是40。
阅读全文
0 0
- static关键字修饰变量的加载和初始化过程(Java)
- Java - Static和Final修饰类属性变量及初始化
- 关于static和final修饰类的属性变量以及变量的初始化
- 关于static和final修饰类的属性变量以及变量的初始化
- (5)this和static关键字及对象初始化过程
- java认证:Static和Final修饰类属性变量及初始化
- Java static修饰变量
- Static和Final修饰类属性变量及初始化
- static和final修饰类属性变量及初始化
- Static和Final修饰类属性变量及初始化(转载)
- Static和Final修饰类属性变量及初始化
- Java类加载和static修饰符
- Java的static修饰变量,方法,代码块的初始化顺序
- 5.5static(修饰和初始化顺序)
- java序列化(transient和static修饰的变量的序列化实现)
- java 中static修饰变量的初始值
- Static修饰的函数和变量
- static修饰的全局变量和局部变量
- [性能调优]PeopleSoft Trace 分析工具
- HDOJ HDU 1060 Leftmost Digit
- cxf整合Spring框架进行服务端开发,并且通过cxf生成客户端代码进行调用
- JavaScript对象要点
- 数据结构之栈的使用
- static关键字修饰变量的加载和初始化过程(Java)
- 正则表达式 零宽断言(正向和负向)
- [HNOI]2003 消防局的建立
- hive 中的二级分区表和动态分区表
- leetcode#2-Add Two Numbers-java
- ListView
- 正则表达式 贪婪与懒惰
- Android面试——AsyncTask
- Android四大组件之BroadcastReceiver