一道关于java 类初始化 成员初始化的笔试题的解析
代码如下:

java笔试题public class Mapplication {
private static int n;
private static Mapplication m1 = new Mapplication("m1");
private static Mapplication m2 = new Mapplication("m2");
private static int i = print("i");
private int j = print("j");
{
print("控制块");
}
static{
print("静态块");
}
public Mapplication(String s){
System.out.println(s+""+"i="+i+" n="+n);
i++;
n++;
}
public static int print(String s){
System.out.println(s+""+"i="+i+" n="+n);
n++;
return ++i;
}
public static void main(String[] args) {
Mapplication m = new Mapplication("init");
}
}
程序执行结果如下:

java笔试题结果j i=0 n=0
控制块 i=1 n=1
m1 i=2 n=2
j i=3 n=3
控制块 i=4 n=4
m2 i=5 n=5
i i=6 n=6
静态块 i=7 n=7
j i=8 n=8
控制块 i=9 n=9
init i=10 n=10
此笔试题考查:
JAVA的静态变量、静态方法、静态类
关于这个知识点参考如下博文:
1、JAVA的静态变量、静态方法、静态类,
http://blog.csdn.net/zhandoushi1982/article/details/8453522
2、Java类变量和成员变量初始化过程,
http://www.cnblogs.com/lmtoo/archive/2012/04/08/2437918.html
那么分析程序可知:
静态都是用来修饰类的内部成员的。比如静态方法、静态成员变量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。
编译器转换成class文件后,会转换成类似下面的代码:

个人理解public class Mapplication {
private static int n;
private static Mapplication m1 = new Mapplication("m1");
private static Mapplication m2 = new Mapplication("m2");
private static int i = print("i");
static{
print("静态块");
}
public Mapplication(String s){
private int j = print("j");
{
print("控制块");
}
System.out.println(s+""+"i="+i+" n="+n);
i++;
n++;
}
public static int print(String s){
System.out.println(s+""+"i="+i+" n="+n);
n++;
return ++i;
}
public static void main(String[] args) {
Mapplication m = new Mapplication("init");
}
}
首先: 初始化n=0;
初始化m1, 打印 j i=0 n=0 打印 控制块 i=1 n=1 打印 m1 i=2 n=2
初始化m2, 打印 j i=3 n=3 打印 控制块 i=4 n=4 打印 m2 i=5 n=5
初始化i,打印 i i=6 n=6
初始化 静态块, 打印 静态块 i=7 n=7
静态部分初始化结束,开始执行main函数中m对象的实例化,
初始化m,打印 j i=8 n=8 打印 控制块 i=9 n=9 打印 init i=10 n=10
黑体部分即为 程序输出结果。
注:作者有限,文中若有不对之处,请批评指正。
一道关于java 类初始化 成员初始化的笔试题的解析的更多相关文章
- Java类的成员初始化顺序
Java类的成员初始化顺序 2017-06-01 代码: public class InitializeSequence { public static void main(String[] args ...
- java类的成员初始化顺序和初始化块知识
java类的成员初始化顺序和初始化块知识 转自:http://blog.csdn.net/lgfeng218/article/details/7606735 属性.方法.构造方法和自由块都是类中的成员 ...
- Java 类的成员初始化顺序
做个简单笔录,就当是重温下基础知识. 1.先看代码: package com.test; public class Test { public static void main(String[] ar ...
- Java中的成员初始化顺序和内存分配过程
Java中的成员初始化顺序和内存分配过程 原帖是这样描述的: http://java.dzone.com/articles/java-object-initialization?utm_source= ...
- Java类和对象初始化
类的生命周期: Java类的初始化: 本阶段负责为类变量赋正确的初始值.(类变量即静态变量) Java编译器把所有的类变量初始化语句和静态初始化器通通收集到<clinit>方法中,该方法只 ...
- C++类的成员初始化
C++类的成员初始化 学到一个类的成员初始化,目前已知的用途是给类内部的const类型变量进行赋值. 首先,如果像这么干,编译器会报错. class MyClass{ public: Myclass( ...
- Java类及成员
Java类及成员 类 类是对一类事物的的描述,是抽象的概念上的定义:类是创建对象的模板: public class TestClass { public static void main(String ...
- java类中成员的初始化顺序(一)
类被创建之后的成员的初始化顺序到底是怎么样的? 首先 不考虑继承 package com; public class DemoOne { /** * 关于类的初始化顺序 */ //不考虑继承结构的情况 ...
- C#类的成员初始化顺序
首先我们来看看引用类型的成员初始化过程 我们来看一个例子吧 class Program { static void Main(string[] args) { Driv ...
随机推荐
- Linux音频编程指南
Linux音频编程指南 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序 ...
- 利用SOLR搭建企业搜索平台 之——MultiCore
Solr Multicore 是 solr 1.3 的新特性.其目是一个solr实例,可以有多个搜索应用. 下面着手来将solr给出的一个example跑出来.这篇文章是基于<利用SOLR搭建企 ...
- ubuntu10.04共享文件夹
ubuntu10.04共享文件夹 参考http://jingyan.baidu.com/album/9989c746084c70f648ecfe99.html,共享了home文件夹,然后把共享文件夹映 ...
- [HDOJ1043]Eight(康托展开 BFS 打表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 八数码问题,因为固定了位置所以以目标位置开始搜索,把所有情况(相当于一个排列)都记录下来,用康托 ...
- linux 查看程序是否运行
命令格式:ps -ax|grep program_name 如查看包含python的程序是否运行: ps -ax|grep python ? Sl : python ToServer.py pts/ ...
- Itext导出PDF,word,图片案例
iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...
- css新增UI样式
1.圆角 border-radius <style> .box{width:200px;height:300px;border:1px solid #000;border-radius:1 ...
- A*寻路初探 GameDev.net 转载
A*寻路初探 GameDev.net 译者序:很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码,只是脑子里有个模糊的概念.这次决定从头开始,研究一下这个被人推崇备至的简单方法,作为 ...
- I.MX6 ov5640 camera
/************************************************************************ * I.MX6 ov5640 camera * 说明 ...
- 免费Gif图片录制工具
/************************************************************************* * 免费Gif图片录制工具 * 说明: * 最近在 ...