代码如下:

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 类初始化 成员初始化的笔试题的解析的更多相关文章

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

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

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

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

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

    做个简单笔录,就当是重温下基础知识. 1.先看代码: package com.test; public class Test { public static void main(String[] ar ...

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

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

  5. Java类和对象初始化

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

  6. C++类的成员初始化

    C++类的成员初始化 学到一个类的成员初始化,目前已知的用途是给类内部的const类型变量进行赋值. 首先,如果像这么干,编译器会报错. class MyClass{ public: Myclass( ...

  7. Java类及成员

    Java类及成员 类 类是对一类事物的的描述,是抽象的概念上的定义:类是创建对象的模板: public class TestClass { public static void main(String ...

  8. java类中成员的初始化顺序(一)

    类被创建之后的成员的初始化顺序到底是怎么样的? 首先 不考虑继承 package com; public class DemoOne { /** * 关于类的初始化顺序 */ //不考虑继承结构的情况 ...

  9. C#类的成员初始化顺序

    首先我们来看看引用类型的成员初始化过程 我们来看一个例子吧 class Program {     static void Main(string[] args)     {         Driv ...

随机推荐

  1. python -- 一致性Hash

    python有一个python模块--hash_ring,即python中的一致性hash,使用起来也挺简单. 可以参考下官方例子:https://pypi.python.org/pypi/hash_ ...

  2. Java日志框架 (commons-logging,log4j,slf4j,logback)

    转自:http://blog.csdn.net/kobejayandy/article/details/17335407 如果对于commons-loging.log4j.slf4j.LogBack等 ...

  3. 第三方登录(1)OAuth(开放授权)简介及授权过程

    3个角色:服务方,开发者,用户 a.用户在第在服务注册填写个人信息, b.服务方开放OAuth, c.开发者在服务方申请第3方登录,在程序中得到令牌后,经用户同意,可得到用户的个人信息. OAuth ...

  4. 三方贸易-drop ship

    一.三方贸易的简单理解 三方贸易:即当客户向我方下达采购订单要求订购货物,我方再向供应商下达相同采购订单,并要求供应商直接送货至客户处的交易形式,待交易完成后,由供应商向我方开具应收票据,我方向客户开 ...

  5. 通过两个GPS计算两个GPS点的距离

    public static double GetDistance(double lat1, double lng1, double lat2, double lng2) { double radLat ...

  6. UVa 11090 Going in Cycle!!【Bellman_Ford】

    题意:给出n个点m条边的加权有向图,求平均值最小的回路 自己想的是用DFS找环(真是too young),在比较找到各个环的平均权值,可是代码实现不了,觉得又不太对 后来看书= =好巧妙的办法, 使用 ...

  7. HTML元素margin、padding的默认值

    HTML元素margin.padding的默认值 element margin(单位像素) padding html 0 0 body 8 0 div 0 0 h1 21 0 h2 19 0 19 0 ...

  8. acdream 1681 跳远女王(BFS,暴力)

    Problem Description 娜娜觉得钢琴很无趣了,就抛弃了钢琴,继续往前走,前面是一片湖,娜娜想到湖的对岸,可惜娜娜找了好久都没找到小桥和小船,娜娜也发现自己不是神仙,不能像八仙过海一样. ...

  9. (二)win7下用Intelij IDEA 远程调试spark standalone 集群

    关于这个spark的环境搭建了好久,踩了一堆坑,今天 环境: WIN7笔记本  spark 集群(4个虚拟机搭建的) Intelij IDEA15 scala-2.10.4 java-1.7.0 版本 ...

  10. (六) 6.1 Neurons Networks Representation

    面对复杂的非线性可分的样本是,使用浅层分类器如Logistic等需要对样本进行复杂的映射,使得样本在映射后的空间是线性可分的,但在原始空间,分类边界可能是复杂的曲线.比如下图的样本只是在2维情形下的示 ...