static 关键字:
使用static修饰的变量是类变量,属于该类本身,没有使用static修饰符的成员变量是实例变量,属于该类的实例。
由于同一个JVM内只对应一个Class对象,因此同一个JVM内的一个类的类变量只需要一块内存空间,但对应实例变量而言,该类每创建一次实例,就需要为实例变量分配一块内存空间.

实例变量的初始化时机:

1.定义实例变量时进行初始化;2,非静态初始化块中对实例变量指定初始值;3,构造器总对实例变量指定初始值。

非静态初始化块将先获得执行的机会,在构造器执行之前执行。

 1 public class InitTest
2 {
3
4 public static void main(String[] args)
5 {
6 Cat cat = new Cat("Kitty",2);
7 System.out.println(cat);
8 Cat c2 = new Cat("Jatfield",3);
9 System.out.println(c2);
10 }
11 }
12
13 class Cat
14 {
15 String name;
16 int age;
17
18 public Cat(String name,int age)
19 {
20 System.out.println("执行构造器!");
21 this.name =name;
22 this.age= age;
23 }
24
25 //非静态初始化块总是在构造器执行之前获得执行。
26 {
27 System.out.println("执行非静态初始化块");
28 weight=2.0;
29 age =0;
30 //System.out.println("weight =:"+weight);
31 }
32
33 double weight = 2.3;
34 public String toString()
35 {
36 return "cat [name = "+name+" age = "+age+" ,weight = "+weight+"]";
37 }
38
39 }

运行:

  执行非静态初始化块
  执行构造器!
  cat [name = Kitty age = 2 ,weight = 2.3]
  执行非静态初始化块
  执行构造器!
  cat [name = Jatfield age = 3 ,weight = 2.3]

隐式调用和显式调用:

当调用某个类的构造器来创建JAVA对象时,系统总是会先调用父类的非静态初始化块进行初始化,这个调用是隐式执行的,而且父类的静态初始化块总是会先执行,接着会调用父类的一个或多个构造器执行初始化,这个调用既可以通过super显式调用,也可以隐式调用。

     类的继承关系: Object <---Parent<----Mid<---- Sub

程序会按如下步骤进行初始化:

  1),执行Object类的非静态初始化块(如果有的话)

  2),隐式或显式调用Object类的一个或多个构造器进行初始化,

  3),执行Parent累非静态初始化块(如果有的话)

  4),隐式或显式调用Parent类的一个或者多个构造器进行初始化,

  5),执行Mid类非静态初始化块(如果有的话)

  6),隐式或显式调用Mid类的一个或多个构造器执行初始化,

  7),执行Sub类非静态初始化块(if have)

  8),隐式或显式调用Sub类的一个或多个构造器执行初始化。

只要在程序创建java对象,系统总会先调用最顶层父类的初始化操作,包括初始化块和构造器,然后依次向下调用所有父类的初始化操作,最终执行本类的初始化操作返回本类的实例。对于调用父类的哪个构造器进行初始化,则分:

  1),子类构造器执行体的第一行代码使用super显式调用父类的 构造器,系统将根据super调用里出传入的实参列表来确定调用父类的哪个构造器;

  2),子类构造器中使用this显式调用本类中重载的构造器,系统将根据this调用里传入的实参列表来确定本类的另一个构造器;

  3),子类构造器中 既没有super 也没有this调用,系统将会在执行子类构造器之前,隐式调用父类无参数的构造器。

static JAVA的更多相关文章

  1. Java关键字:static

    通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...

  2. java中的static关键词

    以下来自:http://www.cnblogs.com/codc-5117/archive/2011/12/04/2275298.html Static基本规则:             (1)一个类 ...

  3. Java中static的用法

    static静态,作为修饰符,最初是由c引入,一开始static表示退出一个块后依然存在的局部变量.随后,static表示不能被其他文件访问的全局变量和函数.到了C++和java,static表示属于 ...

  4. Java基础知识强化02:import static 和 import

    1.import static静态导入是JDK1.5中的新特性.一般我们导入一个类都用 import com.....ClassName;而静态导入是这样:import static com..... ...

  5. java中static关键字的作用

    java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...

  6. Java基础系列--static关键字

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8477914.html 一.概述 static关键字是Java诸多关键字中较常使用的一个,从 ...

  7. Java关于static的作用

    概述 只要是有学过Java的都一定知道static,也一定能多多少少说出一些作用和注意事项.如果已经对static了如指掌的请点击关闭按钮,看下去也只是浪费您宝贵时间而已.这篇随笔只是个人的习惯总结. ...

  8. Java高阶语法---static

    背景:听说static Java高阶语法是挺进BAT必经之路. static: 静态static,很多时候会令我望文生义,但是get到了static最重要的一点,其他的理解都还ok. static最重 ...

  9. 再议Java中的static关键字

    再议Java中的static关键字 java中的static关键字在很久之前的一篇博文中已经讲到过了,感兴趣的朋友可以参考:<Java中的static关键字解析>. 今天我们再来谈一谈st ...

随机推荐

  1. 说Redis

    一:简单介绍 Redis(Remote Dictionary Server 远程字典服务器) key-value 内存数据库 key是一个string value可以是string,list,hash ...

  2. Salesforce Consumer Goods Cloud 浅谈篇二之门店产品促销的配置

    本篇参考:https://documentation.b2c.commercecloud.salesforce.com/DOC1/index.jsp?topic=%2Fcom.demandware.d ...

  3. 1组-Alpha冲刺-2/6

    一.基本情况 队名:震震带着六菜鸟 组长博客:https://www.cnblogs.com/Klein-Wang/p/15535649.html 小组人数:7人 二.冲刺概况汇报 王业震 过去两天完 ...

  4. python3排序 sorted(key=lambda)--实现对字典按value值排序

    使用python对列表(list)进行排序,说简单也简单,说复杂也复杂,我一开始学的时候也搞不懂在说什么,只能搜索一些英文文章看看讲解,现在积累了一些经验,写在这里跟大家分享, 1.sorted函数首 ...

  5. nrf52832蓝牙开发踩过的坑

    接触nrf52832芯片已经有一段时间了,记录我踩过的坑.这些坑大多都补回来了,愿后来的开发者没有坑~ 先来点开胃小菜 一.环境问题 安装离线包遇到的错误--svdconv exited with a ...

  6. [luogu5665]划分

    暴力dp,用f[i][j]表示前i个数,最后一个区间是(j,i]的最小答案,转移方程用可以用前缀和来优化,复杂度为$o(n^3)$(然后可以各种优化到$o(n^2)$,但这不需要)输出f[i][j], ...

  7. 查询多个count展示结果

    <select id="getCountByDISC" resultType="com.rm.algo.entity.AlgoResult"> SE ...

  8. tomcat去除项目访问路径限制

    首先打开tomcat的\apache-tomcat-7.0.73\confserver.xml文件 在 </ <Host name="localhost" appBas ...

  9. 洛谷 P6295 - 有标号 DAG 计数(生成函数+容斥+NTT)

    洛谷题面传送门 看到图计数的题就条件反射地认为是不可做题并点开了题解--实际上这题以我现在的水平还是有可能能独立解决的( 首先连通这个条件有点棘手,我们尝试把它去掉.考虑这题的套路,我们设 \(f_n ...

  10. [NOI Online 2021 提高组] 积木小赛

    思路不说了. 想起来自己打比赛的时候,没睡好.随便写了个\(HASH\),模数开小一半分都没有. 然后学了\(SAM\),发现这个判重不就是个水题. \(SAM\)是字串tire的集合体. 随便\(d ...