java初探之初始化
首先明确,变量初始化是在任何方法(包括构造器)被调用之前进行的。
1、实例变量的初始化
实例变量只有当它所属的类实例化后才会存在,构造器被执行就意味着对象就被创建。
1.1、指定初始化。
class Dog
{
Dog(){
System.out.println("Constructor is coming!");
}
String a = "dog's name is Lily.";
String b = "dog's attribute is big.";
}
1.2、构造器初始化。
class Dog
{
String a;
String b;
Dog(){
a = "dog's name is Lily.";
b = "dog's attribute is big.";
System.out.println("Constructor is coming!");
}
}
显然,构造器初始化方法,能够保证初始值必为构造器中的设定值(构造器初始化后于指定初始化及实例代码块初始化);
1.3、实例代码块初始化。
class Dog
{
Dog(){
System.out.println("Constructor is coming!");
}
String a;
String b;
{
a = "dog's name is Lily.";
b = "dog's attribute is big.";
System.out.println(a);
System.out.println(b);
}
Dog(int a){
System.out.println("Constructor "+a+" is coming!");
}
public static void main(String args[]){
Dog dog = new Dog();
}
}
实例代码块初始化中,变量定义和赋值语句位置可以颠倒。按笔者水平看来,代码块初始化和指定初始化并无区别,都先于构造器之前被执行,并都是按定义的先后顺序来决定初始化的先后顺序。
2.静态数据的初始化
静态是相对于内存而言的,静态变量仅初始化一次,并且只有在必要时刻才会被初始化。
指定初始化和静态块代码初始化与非静态变量类似,同样的执行优先级,这里不再细分。构造器初始化与非静态变量相同,不在赘述。
class Dog
{
Dog(){
System.out.println("Constructor is coming!");
}
String a1;
String b1;
{
a1 = "The dog is not static.";
b1 = "The dog's name is Jack.";
System.out.println(a1);
System.out.println(b1);
}
static String b;
static String a = "dsada";
static {
a = "dog's name is Lily.";
b = "dog's attribute is big.";
System.out.println(a);
System.out.println(b);
}
Dog(int a){
System.out.println("Constructor "+a+" is coming!");
}
public static void main(String args[]){
Dog dog = new Dog(666);
}
}
3.总结
初始化顺序为,父类先于子类,静态数据先于非静态数据,构造器初始化总在最后。
java初探之初始化的更多相关文章
- Java继承的初始化
/** * Created by xfyou on 2016/11/2. * Java继承的初始化 */ public class Beetle extends Insect { int k = pr ...
- JAVA字段的初始化规律
JAVA字段的初始化规律 1.类的构造方法 (1)“构造方法”,也称为“构造函数”,当创建一个对象时,它的构造方法会被自动调用.构造方法与类名相同,没有返回值. (2)如果类没有定义构造函数,Java ...
- Java 类加载与初始化
Java系列笔记(1) - Java 类加载与初始化 目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理 ...
- java类的初始化
转载:http://blog.csdn.net/moreevan/article/details/6968718 我们知道一个类(class)要被使用必须经过装载,连接,初始化这样的过程.下面先对这三 ...
- [转]java static final 初始化
http://tanbing1986411.blog.163.com/blog/static/7259798220103610224434/ java static final 初始化 1.stati ...
- 【转载】Java系列笔记(1) - Java 类加载与初始化
Java系列笔记(1) - Java 类加载与初始化 原文地址:http://www.cnblogs.com/zhguang/p/3154584.html 目录 类加载器 动态加载 链接 初始化 示例 ...
- 图示Java类的初始化顺序
Java类的初始化顺序 在开发中,知道Java类的初始化顺序才能让我们更加清楚地掌握程序的执行流程.先把结论贴出来,Java里,从图里的1~6,分别按顺序执行. 以下为代码验证阶段,一共三个类 ...
- 【软件构造】-<笔记>-浅谈java中类的初始化过程
编写java程序时,每创建一个新的对象,都会对对象的内容进行初始化. 每一个类的方法中的局部变量都有严格的初始化要求,因此假如写出下面的程序: void f(){ int i; i++; } 编译时就 ...
- java创建对象 的初始化顺序
java创建对象 的初始化顺序 1.初始化块 初始化块通常写在类的构造方法之前,由花括号括起来,通常包含对成员属性进行初始化的语句: 初始化块分为instance初始化块和static初始化块,初始化 ...
随机推荐
- 使用ubuntu自带的Remmina Remote Desktop Client远程登录服务器配置
1.配置:点击new , 配置服务器ip地址.名称.密码 2.打开本机终端执行一下命令: echo xfce4-session>.session echo xfce4-session>.x ...
- poj1734Sightseeing trip——无向图求最小环
题目:http://poj.org/problem?id=1734 无向图求最小环,用floyd: 在每个k点更新f[i][j]之前,以k点作为直接连到i,j组成一个环的点,这样找一下最小环: 注意必 ...
- tyvj1061移动服务——DP
题目:http://www.joyoi.cn/problem/tyvj-1061 DP记录状态为当前任务时不在此任务位置上的两个人的位置(因为一定有一个人在此任务位置上): 不妨设初始位置p[0]=3 ...
- ffmpeg 合并文件
ffmpeg文件合并 文件1.ts~ 100.ts 流媒体文件1.txt 格式 file .ts file .ts ... file .ts 命 令 (-vcodec copy -acodec ...
- Scala Beginner
开始学习Scala,下面的内容大部分从Scala官网翻译过来,有几个地方翻译的不是很好,表述不清楚的地方大家可以浏览Scala官网,多指教. Scala offical website is http ...
- npm下载模块提速方法
通过config配置指向国内镜像源,命令如下 npm config set registry https://registry.npm.taobao.org 然后可以查看是否配置成功 npm conf ...
- POJ-3176
Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19864 Accepted: 13172 Des ...
- sorted matrix - search & find-k-th
sorted matrix ( Young Matrix ) search for a given value in the matrix: 1) starting from upper-right ...
- linux忘记登陆密码的两种破解办法
对于使用grub引导的linux系统.在开机自检后,出现grub引导界面时,按E键进入编辑模式,如下图所示: 把光标移到带有“kernel”字样的那一行,然后按E键编辑,如图: 在末尾按一个空 ...
- 2. DVWA亲测文件包含漏洞
Low级: 我们分别点击这几个file.php文件 仅仅是配置参数的变化: http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file3.php 如 ...