java初始化实例变量_Java类变量、实例变量的初始化顺序

题目:

public class InitTest{

public static int k = 0;

public static InitTest t1 = new InitTest("t1");

public static InitTest t2 = new InitTest("t2");

public static int i = print("i");

public static int n = 99;

public int j = print("j");

{

print("Creat");

}

static {

print("Static");

}

public InitTest(String str) {

System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);

++n; ++ i;

}

public static int print(String str){

System.out.println((++k) +":" + str + " i=" + i + " n=" + n);

++n;

return ++ i;

}

public static void main(String[] args){

InitTest t = new InitTest("init");

}

}

输出结果:

1:j   i=0   n=0

2:Creat   i=1   n=1

3:t1    i=2  n=2

4:j   i=3   n=3

5:Creat   i=4   n=4

6:t2    i=5  n=5

7:i   i=6   n=6

8:Static   i=7   n=99

9:j   i=8   n=100

10:Creat   i=9   n=101

11:init    i=10  n=102

类记载过程:加载 -> 链接(验证 -> 准备 -> 解析) -> 初始化 -> 实例化

其中准备过程会给static成员变量赋初值,一般为0,如果是static final的话为所赋的值

另外,实例化不一定发生在完全初始化之后,因为某些初始化伴随着实例化。

类实例化过程:父类 构造块/实例变量->父类 构造方法 -> 子类 构造块/实例变量->子类 构造方法。

原因在于构造方法中可能就需要使用到实例变量,因此这个时候实例变量一定要先完成初始化操作。

java 实例变量的初始化

1.对于实例变量,该类没创建一次实例,就需要为实例变量分配一块内存空间:2.程序通过Person对象来访问eyeNum类变量时,底层依然会转换为通过Person访问eyeNum类变量:3.当Perso ...

Spring boot变量的初始化顺序

起因是Spring建议”总是在您的bean中使用构造函数建立依赖注入.总是使用断言强制依赖”,而且之前用@Autowired时idea总是给警告,于是全部改成了构造器注入,运行时发生了循环注入,于是找 ...

Java&&(面试题)初始化顺序总结

1  无继承情况下的Java初始化顺序: class Sample {       Sample(String s)       {             System.out.println(s) ...

C++成员变量的初始化顺序问题

问题来源: 由于面试题中,考官出了一道简单的程序输出结果值的题:如下, class A { private: int n1; int n2; public: A():n2(0),n1(n2+2){} ...

Java笔记 #04# 类的初始化顺序补充

参考java中的类的初始化顺序详解 package org.sample; class Bread { Bread() { System.out.println("Bread()" ...

[C++基础] 成员变量的初始化顺序

转载链接:https://blog.csdn.net/qq_37059483/article/details/78608375 1.成员变量在使用初始化列表初始化时,只与定义成员变量的顺序有关,与构造 ...

Java中类变量和实例变量的初始化

1. 类变量和实例变量 类变量即类成员变量中的静态变量,它们可以通过类名来直接访问. 实例变量是类成员变量中的非静态变量,只有在实例化对象之后通过对象来访问. 2. 空间分配的时间不同 类变量是在类加 ...

Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序

实例化子类时,父类与子类中的静态代码块.实例代码块.静态变量.实例变量.构造函数的执行顺序是怎样的? 代码执行的优先级为: firest:静态部分 second:实例化过程 详细顺序为: 1.父类静态 ...

浅谈Java变量的初始化顺序详解

规则1(无继承情况下):对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器证明代码: 复制代码 代码如下: p ...

随机推荐

SVD java 算法实现

https://github.com/Richard-Cao/MatrixSvdDemo/blob/master/app/src/main/java/me/ele/caolicheng/matrixs ...

js千分位的函数

不错的js千分位函数,适用于将金额每3位用“,”分隔 /*for price using thousands separator */ function fprice(s,n){ s = parseF ...

hdu - 1180 诡异的楼梯 (bfs+优先队列)

http://acm.hdu.edu.cn/showproblem.php?pid=1180 注意点就是楼梯是在harry移动完之后才会改变方向,那么只要统计到达这个点时间奇偶性,就可以知道当前楼梯是 ...

搭建java开发环境

windows 去Oracle官网下载exe文件,双击安装. 修改系统环境变量(我的电脑 -> 属性 -> 高级 -> 环境变量). JAVA_HOME: D:\Java\jdk1. ...

java——输入流FileInputStream

写一个简单的程序,实现从电脑中的一个盘里的文件中往程序中输入内容. package com.liaojianya.chapter5; import java.io.FileInputStream; i ...

AFNetworking使用总结

AFNetworking使用总结   关于AFNetworking使用总结 以及一些错误的解决办法. AD:WOT2015 互联网运维与开发者大会 热销抢票 AFNetworking使用总结 分享类型 ...

[Oracle] Data Guard 系列(5) - 创建逻辑备库

在创建逻辑备库之前,必须得先创建物理备库,关于如何创建物理备库,请参考. 1. 在物理备库上停止日志应用服务 SYS ...

Android - 使用Intent来启动Activity

本文地址: http://blog.csdn.net/caroline_wendy/article/details/21455141 Intent 的用途是 绑定 应用程序组件, 并在应用程序之间进行 ...

python 接口自动化测试--代码实现(八)

用例读入数据库: #! /usr/bin/python # coding:utf-8 import sys,os from Engine import DataEngine reload(sys) s ...

docker 安装 mongodb

1.docker search mongo 2.docker pull mongo 3.//docker run -d --name mymongo -p 27017:27017 -v /home/h ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值