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 INFO CPU 信息详解

    一.INFO CPU 通过INFO CPU命令可以查看Redis进程对于CPU的使用情况,如下: 这几个字段的含义如下所示: used_cpu_sys: System CPU consumed by ...

  2. 【死磕 NIO】— Proactor模式是什么?很牛逼吗?

    大家好,我是大明哥. 上篇文章我们分析了高性能 IO模型Reactor模式,了解了什么是Reactor 模式以及它的三种常见的模式,这篇文章,大明再介绍另外一种高性能IO模型: Proactor. 为 ...

  3. CentOS7 hadoop3.3.1安装(单机分布式、伪分布式、分布式)

    @ 目录 前言 预先设置 修改主机名 关闭防火墙 创建hadoop用户 SSH安装免密登陆 单机免密登陆--linux配置ssh免密登录 linux环境配置Java变量 配置Java环境变量 安装Ha ...

  4. Centos8 Docker部署ElasticSearch集群

    ELK部署 部署ElasticSearch集群 1.拉取镜像及批量生成配置文件 # 拉取镜像 [root@VM-24-9-centos ~]# docker pull elasticsearch:7. ...

  5. jpg与jpeg的区别在哪

    JPG文件的优点是体积小巧,并且兼容性好,因为大部分的程序都能读取这种文件,这是因为JPG格式不仅是一个工业标准格式,而且更是web的标准文件格式.JPG文件如此拥有如此便利的条件,难怪得到了业余玩家 ...

  6. [loj3032]馕

    (直接贪心会导致分子和分母过大) 令$S_{i}=\sum_{j=1}^{L}V_{i,j}$(即其独吞整个馕的快乐度),对第$i$个人求出$n$个位置$x_{1},x_{2},...,x_{n-1} ...

  7. [noi38]游戏

    用线段数维护一段区间内的两个信息:1.需要多少经验就可以让有一个人升级,2.等级和.单点修改直接暴力做就可以,区间修改考虑如果这个区间不会产生升级就不递归下去而是打上懒标记. 考虑这个算法的时间复杂度 ...

  8. could not extract ResultSet

    使用jpa进行代码更新:update的时候发现代码出现了异常:could not extract ResultSet 在数据库看数据并没有更新,后发现更新操作需要加一个注解 注释:当设置nativeQ ...

  9. SpringCloud微服务实战——搭建企业级开发框架(二十四):集成行为验证码和图片验证码实现登录功能

    随着近几年技术的发展,人们对于系统安全性和用户体验的要求越来越高,大多数网站系统都逐渐采用行为验证码来代替图片验证码.GitEgg-Cloud集成了开源行为验证码组件和图片验证码,并在系统中添加可配置 ...

  10. IDEA 2021.2.3 安装与破解教程

    首先说明,大部分情况下,花10块钱都可以在淘宝找人直接帮你完美解决这个资源问题 所以千万不要相信一些所谓的百度结果,一般都是花费了时间却最后无法解决破解的问题 我相信任何一个想要学习软件开发的人一定要 ...