`
bailangfei3344
  • 浏览: 42379 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面试题(一) 实例化,初始化 vs static

阅读更多

 今天第一天去面试就碰鼻子.. 还是基础不扎实,  几下点吧..    下面是一个让我这个小菜费脑筋的题

 运行如下代码:

package test1;

public class  A {
	
	B b = new B();
	
	A(){
		System.out.println("a");
	}
	
	
}

 

package test1;

public class B {
	B(){
		System.out.println("b");
	}
	
}

 

package test1;

public class C {
	public static void main(String[] args) {
		A a =  new A();
	}
}

 !--  在这里输出的应该是 b a , A类在实例化之前先初始化, 所以B先被实例化,输出b   然后调用A的构造方法输出a。

如果想调用普通方法 不想类被初始化, 把方法写成static的就可以了,不实例化直接调用方法,避开了初始化。--!

-------------------------------------------------------------------------------------------------------------------------------

 

 

评论怎么只能删除不能回复呢?  就在这里回复吧。 上面说的太粗糙,今天又问了理论强的网友,我想实例化这个过程应该理解的差不多了。

C类中main方法执行的时候,虚拟机在把A类读入内存后,会先验证是不是class文件,然后做好准备工作,其实就是去分配内存,然后开始解析class文件到java运行时内存区,解析class文件的时候,首选是magic number(魔数),然后是版本号,然后是常量池,后来是方法等。在常量池初始化的时候,如果需要用到其他的类B,这个时候虚拟机实例主进程等待,然后加载B,把B解析后创建实例,然后把A实例的成员变量b的引用指向刚刚创建的B的实例。初始化成员变量完成后,开始分配内存到堆空间中,然后实例完成后,会把A类的实例的引用执行C类中的a,把引用实例替换为直接实例。

 

如果我理解的还是不到位,有错误的地方,请留个言,明天详详细细的请教老师。谢谢

1
0
分享到:
评论
2 楼 zhxing 2010-03-23  
你的理解很错。。
1 楼 lkf520java 2010-03-22  
劝你好看看 java编程思想里面对象初始化的部分
你就明白,你现在的理解也是错的

相关推荐

    JAVA面试题解惑系列(一)——类的初始化顺序-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    JAVA面试题解惑系列(一)——类的初始化顺序 JAVA 是一门面向对象的编程语言,类的初始化顺序是 JAVA 程序员和 JAVA 工程师面试中一个非常重要的知识点。本文将详细讲解类的初始化顺序,并提供了相关的测试代码,...

    Android 高级开发面试题以及答案 整理

    JVM 的工作流程包括类加载、链接、初始化、运行和卸载等几个阶段。在运行时数据区中,JVM 将 Java 程序 Counterpart 分为方法区、堆、栈、PC 寄存器和本地方法栈等五个部分。其中,方法区用于存储类信息、变量信息和...

    2023年java面试题(含答案).docx

    Java 面试题知识点解析 Java 语言是目前软件开发中最流行的语言之一,具有强大、灵活、跨平台等特点。 Java 面试题是 Java 开发者在面试时常见的问题,本文将从 Java 面试题中提取出关键知识点,并进行详细解析。 ...

    【Java高频面试题】–类的初始化过程以及实例的初始化过程

    要创建一个类的实例,必须加载和初始化该类。 main()方法所在的类,会被优先加载并初始化 子类初始化前,会先加载并初始化它的父类 初始化一个类,其实质上就是执行了()方法 ()方法包含了,静态变量显式赋值代码以及...

    2023最新前端面试题总结

    "前端面试题总结" 以下是根据给定文件信息生成的相关知识点: 浏览器兼容性 在前端开发中,浏览器兼容性是一个非常重要的问题。不同的浏览器对 HTML、CSS、JavaScript 的解析和执行方式不同,这导致了同一个页面...

    C#.NET面试题基础篇答案

    静态构造函数(Static Constructor)是类中的特殊构造函数,用于在类加载时执行一些初始化操作。静态构造函数的执行顺序是:静态变量 > 静态构造函数 > 实例变量 > 实例构造函数。 四、CTS、CLS、CLR CTS(Common ...

    java面试题静态加载顺序构造方法

    Java中的继承与静态static等的执行先后顺序的面试题 java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); ...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    JAVA面试题 static关键字详解

    使用 static 修饰的属性,静态属性是在类的加载期间初始化的,使用类名.属性访问 案例说明 ①修饰成员变量 package com.ant.param; public class StaticFieldDemo { public static void main(String[] args) { ...

    java软件工程师面试题

    第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 。。。。。。。。

    java高级工程师-17道面试题及答案.docx

    Java 高级工程师面试题及答案解析 一、选择题解析 1. 关于以下程序代码的说明正确的是( D ) 这道题考察了 Java 中的静态变量和实例变量的概念。HasStatic 类中的 x 是私有的静态变量,它可以被同类中的所有实例...

    JavaSE 面试题 .docx

    饿汉式是 Singleton 模式的一种实现方式,在类初始化时直接创建实例对象,不管你是否需要这个对象都会创建。例如,在上面的代码中,我们可以看到饿汉式的实现,例如 `public static final Singleton1 INSTANCE = new...

    Java100个面试题.doc

    当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。 5. Java支持的数据类型有哪些?...

    java中级工程师面试题.doc

    Java 中级工程师面试题 本文总结了 Java 中级工程师面试的常见问题和知识点,涵盖了 Java 基础知识、面向对象编程、接口、多线程、垃圾回收等方面。通过本文,可以帮助读者快速了解 Java 中级工程师面试的主要考点...

    华为java笔试题面试题

    构造器是一种特殊的方法,它的名称与类名相同,用于初始化对象的状态, constructor 在一个对象被 new 时执行。 4. 提供 Java 存取数据库能力的包是() 答案:A.java.sql 本题考查 Java 语言的数据库编程。Java...

    java基础非常典型的面试题目.wps

    如果编译器能够确认一个局部变量在使用之前可能没有被初始化,编译器将报错。 如果局部变量没有被初始化,并且在方法中一直没有被使用,编译和运行都会通过。 可以改正为:String s = null ;

    java 面试题 总结

    Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。 22、JSP中动态INCLUDE与静态INCLUDE的区别? 动态INCLUDE用jsp:...

    java面试题pdf版本

    Java 面试题 PDF 版本 Java 是一种广泛使用的编程语言,具有平台独立性、对象oriented、分布式、多线程和动态加载等特点。下面是 Java 面试题 PDF 版本中的一些重要知识点: 1. Java 源文件中可以包括多个类,但...

    Java常考面试题

    Java中的构造函数是一个特殊的方法,用于初始化对象的状态。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。Java中的构造函数重载和方法重载很相似。...

    【。net 专业】 面试题

    【面试题库网整理 .net 面试题(附答案)(四)】 7. 某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则: (1) 密码单词的最小长度是两个字母,可以相同,也可以不同 ...

Global site tag (gtag.js) - Google Analytics