局部变量与成员变量:

局部变量分为:

  行参:在方法签名中定义的局部变量,随方法的结束而凋亡。

  方法内的局部变量:必须在方法内对其显示初始化,从初始化后开始生效,随方法的结束而凋亡。
  代码块内的局部变量:必须在代码块内对其显示初始化,从初始化后开始生效,随代码块的结束而凋亡。

成员变量:

  静态属性:类加载时初始化,随着类的存在而存在;

  非静态属性:随着实例的属性存在而存在;

关于他两的区别:

  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对象初始化顺序的更多相关文章

  1. Java中的成员初始化顺序和内存分配过程

    Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...

  2. java类的成员初始化顺序和初始化块知识

    java类的成员初始化顺序和初始化块知识 转自:http://blog.csdn.net/lgfeng218/article/details/7606735 属性.方法.构造方法和自由块都是类中的成员 ...

  3. Java 类成员的初始化顺序

    Java 类成员的初始化顺序 前言:开发中碰到一个Java文件中有很多的成员变量,包括静态和非静态的,还有很多的初始化方法,很好奇这些成员的初始化顺序,在这里作个研究.   1  无继承情况下的Jav ...

  4. Java类的成员初始化顺序

    Java类的成员初始化顺序 2017-06-01 代码: public class InitializeSequence { public static void main(String[] args ...

  5. Java对象初始化顺序

    最近我发现了一个有趣的问题,这个问题的答案乍一看下骗过了我的眼睛.看一下这三个类: package com.ds.test;   public class Upper { String upperSt ...

  6. 一文理解java对象初始化顺序

    例子 ​ Talk is cheap, Show you the code! public class ParentClass { static int parentStaticField = 1; ...

  7. java面试扫盲:对象初始化顺序(真的未必能答对)

    记录下面试里面遇到的一些java盲区,一方面扫描自己的知识盲区,一方面也可以给后面面试的朋友一些警示,以免面试的时候出现不知道的尴尬情况. 提出问题:父类静态属性,父类属性,父类构造方法,子类静态属性 ...

  8. Java类和对象初始化

    类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...

  9. 深度剖析Java变量栈&对象堆

    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...

随机推荐

  1. 51nod1117【贪心】

    思路:哈夫曼树~~哇塞,那么有道理. 利用堆维护:每次从堆里取两个最小加起来,然后还是最小的两个,最后只剩一根总的 #include <bits/stdc++.h> using names ...

  2. Spring Boot Dubbo 构建分布式服务

    概述: 节点角色说明 节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数 ...

  3. tinkphp5使用中碰到的问题 持续更新

    1.使用助手函数(如controller(),model(),validate())进行实例化时只需要引入think\Controller或think\Model或think\Validate即可,无 ...

  4. FileUtils简化你的文件操作

    前言: 在工作当中我们往往遇到很多文件的操作,我们也习惯写一些自己定义的工具类来简化文件操作,其实apache的commons的FileUtils类就是这样一个工具类,使用它能大大的简化我们对文件的操 ...

  5. Python随笔---return与print,全局变量与局部变量

    Return是指返回一个数值,一般在函数中应用较多 Print则是指把结果打印出来,显示在屏幕上 def sum(a,b): total=a+b print('函数内:',total) return ...

  6. Python 工具包 werkzeug 初探

    首先,先向大家介绍一下什么是 werkzeug,Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库.这里稍微说一下, werkzeug 不是一个web服务器,也不是一个web框架, ...

  7. 开发中mybatis的一些常见问题记录

    一.oracle数据库通过mybatis的批量插入的两种方式 方式1 insert into table_tmp (id,v1,v2,v3,v4) SELECT A.*,OSM_VIID_DEVICE ...

  8. shell 获得调用的python脚本的print值和错误log

    1. shell 获得调用的python脚本的print值 python test.py > out.log 2.shell 获得调用的python脚本的错误log python test.py ...

  9. openstack安装newton版本创建虚拟机(五)

    一.创建网络: 1.在控制节点上创建一个单一扁平网络(名字:flat),网络类型为flat,网络适共享的(share),网络提供者:physnet1,它是和eth0关联起来的 [root@linux- ...

  10. ssh登录出现 Host key verification failed. 问题

    我们使用ssh链接linux主机时,可能出现“Hostkey verification failed.“的提示,ssh连接不成功.可能的提示信息如下: @@@@@@@@@@@@@@@@@@@@@@@@ ...