Java变量、Java对象初始化顺序
局部变量与成员变量:
局部变量分为:
行参:在方法签名中定义的局部变量,随方法的结束而凋亡。
成员变量:
静态属性:类加载时初始化,随着类的存在而存在;
非静态属性:随着实例的属性存在而存在;
关于他两的区别:
1.局部变量不可以加static;
2.局部变量不可以加public、protected、private;
3.局部变量必须赋初始值;
4.局部变量存在于栈中;
5.只写了局部变量,成员变量对比懂的。
实例变量与类变量:
实例变量:局部变量、非静态成员变量;
类变量:静态成员变量;
区别:
就是是不是静态的区别;
实例的总是可以引用类的;
涉及到原理的一丢丢:
在JVM中,每个类对应一个class,但是一个类可以创建多个java对象;
jvm的类变量只需要一块内存空间;
这个类有几个实例,就要分配几块内存空间。
static可以修饰:
1.只能修饰类里的成员部分;
2.成员部分包括:成员变量;成员方法;内部类;初始化块;内部枚举类。
实例变量初始化的时机:
1.定义变量时
2.非静态初始化块
3.构造方法
4.注意:第1、2种方式比第3种方式更早执行,1、2种方式的执行属性与他们在源程序中的排序相同。
5.第4点是因为下面一点
Java对象初始化顺序:
1.先初始化静态的
2.同静态先初始化父类的
3.静态中先初始化变量,再初始化代码块
4.非静态的也是先变量,再代码块,再构造函数
5.所以初始化顺序可以看下面那张图
6.子类构造器执行体内执行第一行代码使用super显示调用父类构造器,系统将根据super调用里传入的参数列表判断调用哪个构造器
7.子类构造器执行体的第一行代码使用this调用本类中重载的构造器,根据传入参数判断调用哪个本类构造器
8.子类构造器中既没有super调用也没有this调用,系统将会在执行子类构造器前,隐式调用父类无参数的构造器。
9.super和this都只能在构造器中使用,而且super和this都必须作为构造器中的第一行,因此super和this只能调用其中之一,且最多只能调用一次。
Java变量、Java对象初始化顺序的更多相关文章
- Java中的成员初始化顺序和内存分配过程
Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...
- java类的成员初始化顺序和初始化块知识
java类的成员初始化顺序和初始化块知识 转自:http://blog.csdn.net/lgfeng218/article/details/7606735 属性.方法.构造方法和自由块都是类中的成员 ...
- Java 类成员的初始化顺序
Java 类成员的初始化顺序 前言:开发中碰到一个Java文件中有很多的成员变量,包括静态和非静态的,还有很多的初始化方法,很好奇这些成员的初始化顺序,在这里作个研究. 1 无继承情况下的Jav ...
- Java类的成员初始化顺序
Java类的成员初始化顺序 2017-06-01 代码: public class InitializeSequence { public static void main(String[] args ...
- Java对象初始化顺序
最近我发现了一个有趣的问题,这个问题的答案乍一看下骗过了我的眼睛.看一下这三个类: package com.ds.test; public class Upper { String upperSt ...
- 一文理解java对象初始化顺序
例子 Talk is cheap, Show you the code! public class ParentClass { static int parentStaticField = 1; ...
- java面试扫盲:对象初始化顺序(真的未必能答对)
记录下面试里面遇到的一些java盲区,一方面扫描自己的知识盲区,一方面也可以给后面面试的朋友一些警示,以免面试的时候出现不知道的尴尬情况. 提出问题:父类静态属性,父类属性,父类构造方法,子类静态属性 ...
- Java类和对象初始化
类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...
- 深度剖析Java变量栈&对象堆
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...
随机推荐
- UIButton和UINavigationItem设置图片和文字位置
1.UIButton设置文字位置 有些时候我们想让UIButton的title居左对齐,我们设置 btn.textLabel.textAlignment = UITextAlignmentLeft 是 ...
- 获得HttpWebResponse请求的详细错误内容
try { } catch (WebException ex) { HttpWebResponse response = (HttpWebResponse)ex.Response; Console.W ...
- 洛谷P4768 [NOI2018]归程(克鲁斯卡尔重构树+最短路)
传送门 前置技能,克鲁斯卡尔重构树 我们按道路的高度建一个最大生成树,然后建好克鲁斯卡尔重构树 那么我们需要知道一颗子树内到1点距离最近是多少(除此之外到子树内任何一个点都不需要代价) 可以一开始直接 ...
- SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
一.Mybatis框架 1.mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获 ...
- spingmvc实现在程序启动时调用数据库数据
直接上代码: package com.java.zxf.servlet; import java.text.ParseException; import java.text.SimpleDateFor ...
- thinkphp 2.1代码执行及路由分析
Dispatcher.class.php这个文件中是url路由,由于第一次正式看路由那块,所以就从头开始一行一行看把. 首先是dispatch函数 是37行到140行 这个函数是做映射用,把url映射 ...
- [Java]HashSet的工作原理
概述 This class implements the Set interface, backed by a hash table (actually a HashMap instance). It ...
- HDU-3639-Hawk-and-Chicken(强连通,缩点,DFS)
链接:https://vjudge.net/problem/HDU-3639 题意: 有n个小朋友在一个班级中,现在要选择班长.收集了小朋友们的意见,一条意见表示为A认为B合适.这个是具备传递性的,A ...
- NET Core应用中实现与第三方IoC/DI框架的整合?
NET Core应用中实现与第三方IoC/DI框架的整合? 我们知道整个ASP.NET Core建立在以ServiceCollection/ServiceProvider为核心的DI框架上,它甚至提供 ...
- block size大小
1.用tune2fs查看block size大小: 1 2 tune2fs -l /dev/sda1 |grep "Block size" Block size: 1024 2.用 ...