JAVA静态数据的初始化;
①:Java首次会自动对变量进行初始化,其顺序优于构造器;
②:如果一个域是静态的的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初值,如果它是一个对象引用,那么他的默认初始化值为null;
③:Java在执行一个类时,会冲main方法入口开始,在执行main()之前,需要加载包含main()方法的类,此时编译器会先对该类的变量进行初始化,静态的优与非静态的,如果只基本类型直接初始化,如果是应用类型,则对静态的引用进行初始化,
比如:
class A{
public static void main(){
print("dddddddddd");
}
static Table=new Table();
}
class Table {
static Bow bow1=new Bow();
Table(){
printf("table初始化");
}
static Bow bow2=new Bow();
}
类似上面的代码,在执行main()函数之前会先执行main函数后面的一条静态语句,在执行静态语句时,会调用相应的Table的类,在执行Table的构造器之前会对Table类中的静态语句进行初始化,执行完Table构造器之后的静态语句之后再执行Table的构造器(
静态的对象只会被初始化一次,如果第二次牵扯到静态的域时,程序不会对它进行二次初始化)
总结:①构造器可以看成是静态的
②:初始化的顺序是先静态对象,然后非静态,
③:对象的创建过程:1):当创建一个对象时,Java解释器会先定位到该对象的.class文件;2)加载该.class文件,该过程会对有关静态初始化的操作会被完成(也就是说只在被加载时进行一次)。
3):在内存中开辟一个空间用于放置这个对象,并对基本的变量进行初始化(基本类型的初始化为初始值,引用对象初始化为null),
4) : 执行完所有的变量初始化后,就开始执行构造器方法:
详细内容可以参见 《Java 编程思想——p95--p96》
最新文章
- 前端知识杂烩(Javascript篇)
- #HTML:無序、有序與定義清單
- storyboard在ios模拟器无法显示的问题
- xss实例-什么都没过滤的情况
- 个人博客Week3
- java 构造函数内部的多态方法 完全剖析
- eclipse4.2 UI换回 3.6版本的UI
- CTE Recursion Performance
- 解决vsftpd 530 Permission denied报错
- Spark SQL原理及实战
- java:数组操作工具类 java.util.Arrays包 主要方法详解
- python笔记24-os模块
- C++中:(*p)++和*(p++)和*p++的区别
- 论文阅读笔记二十七:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(CVPR 2016)
- Android Retrofit 2.0使用
- 实习培训——Java多线程(9)
- 前端框架VUE----模板字符串
- Linux常用基本命令(cut)
- ubuntu ndk 开发
- bzoj1941 hdu5992
热门文章
- vlan linux内核数据流程
- JDBC概述及JDBC完成对Oracle的增删改查
- python网络编程:socket半连接池、UDP通讯模板
- Hadoop_11_HDFS的流式 API 操作
- python学习笔记-(十三)线程、进程、多线程&;多进程
- python+Appium自动化:各种元素定位方法
- Windows下Redis如何永久更改密码
- Springboot定时任务实现动态配置Cron参数(从外部数据库获取)
- IOS下图片不能显示问题的解决办法
- Java 中 &;&; 和 &; 的区别