0 0

Java 类的字段和类的构造方法哪个先生成?10

我们的一道作业题:编程证明类的字段是否比类的构造方法先生成。
本人想的是,在类中写个public static的字段,并初赋值。再写个构造方法,方法内对该字段进行修改。在main方法内,不创建对象,直接输出字段的值,如果值没有改变,说明构造方法先生成,如果字段改变了,说明字段先生成。
但是个人觉得这种方法并不可行,希望大家给点帮助。

问题补充:
xiaolongfeixiang 写道

试试这样??
public class T {

	String check = "Hello";

	T() {
		if ("Hello".equals(check)) {
			System.out.println("字段先于构造方法产生");
		} else {
			System.out.println("构造方法先于字段产生");
		}
	}

	public static void main(String args[]){
		new T();
	}
}

能明白你意思,我回去试下。谢谢。

问题补充:
greatwqs 写道
臧圩人的这么经典的帖子你不看是你的损失:

JAVA面试题解惑系列(一)——类的初始化顺序http://zangweiren.iteye.com/blog/208122

果然经典,受益匪浅。谢谢。但是xiaolongfeixiang先回答,并且没有错,所以不好意思啦。
2010年4月20日 09:49

5个答案 按时间排序 按投票排序

0 0

采纳的答案


这样是否更具有说服力?

public class T {

	T() {
		if (check == null) {
			check = "world";
		}

		if ("Hello".equals(check)) {
			System.out.println("字段先于构造方法产生");
		} else if ("world".equals(check)) {
			System.out.println("构造方法先于字段产生");
		} else {
			System.out.println("Confused");
		}
	}

	String check = "Hello";

	public static void main(String args[]) {
		new T();
	}
}

2010年4月20日 18:21
0 0

臧圩人的这么经典的帖子你不看是你的损失:

JAVA面试题解惑系列(一)——类的初始化顺序http://zangweiren.iteye.com/blog/208122

2010年4月20日 22:32
0 0

这样会不会更好??

public class T {

	T() {
		System.out.println("构造方法");
	}
	Nothing check = new Nothing();
	
	public static void main(String args[]) {
		new T();
	}
}

class Nothing {
	Nothing(){
		System.out.println("字段在初始化时,要用到");
	}
}

2010年4月20日 18:26
0 0

不是吧,我想楼上的代码看似有道理,实际上应该不能出现LZ想要的正确的结果,当它加载构造方法的时候,发现了check这个变量,就会在该类中查找并加载它,我记得Java核心技术一中是这样说的,在加载时,先是静态代码块,然后是非静态的,在方法与属性的加载中,先是方法,然后才是属性。所以Java代码规范中一个类的规范写法中有一点是这样说的:先定义方法,后属性。解释(根据书中意思,按自己的语言描述):避免加载并非用到的Java代码块。。。

2010年4月20日 15:09
0 0


试试这样??

public class T {

	String check = "Hello";

	T() {
		if ("Hello".equals(check)) {
			System.out.println("字段先于构造方法产生");
		} else {
			System.out.println("构造方法先于字段产生");
		}
	}

	public static void main(String args[]){
		new T();
	}
}

2010年4月20日 10:06

相关推荐

    Reflection_in_Java.zip_in_java 反射_java 反射机制_java反射_反射机制

    一旦有了`Class`对象,我们就可以获取类的元数据,包括类名、包名、父类、接口、字段和方法等信息。 `Constructor`类代表类的构造函数。通过`Class`对象的`getConstructors()`或`getDeclaredConstructors()`方法,...

    java笔试题java笔试题java笔试题

    - 抽象类(abstract class)可以有构造函数、字段、非抽象方法,可以包含具体实现,可以被实例化(除非所有方法都是抽象的)。 - 接口(interface)只能包含抽象方法和常量,不能有具体实现,不能实例化,用于定义...

    疯狂java讲义源码

    《疯狂Java讲义》是李刚先生撰写的一本深度解析Java编程语言的教材,由新东方教育科技集团出版。这本书以其深入浅出的讲解方式,深受广大Java学习者喜爱。通过对压缩包文件“疯狂java讲义”的分析,我们可以提炼出一...

    java编程那些事儿-陈跃峰31-70

    类的定义包括属性(字段)和方法,通过构造器来初始化对象。在书中,"类(一)"和"类(二)"分别深入讲解了类的创建、继承、封装和多态等概念。 对象是类的实例,它具有类定义的属性和行为。理解对象的生命周期、创建和...

    ITjob就业培训JAVA教材

    每个类可以包含方法(函数)和字段(变量)。理解类和对象的概念对于掌握Java至关重要。 【异常处理】 Java提供了强大的异常处理机制,通过`try-catch-finally`语句块来捕获和处理程序运行时可能出现的错误。这有...

    Java程序设计教程(第3版)源代码 雍俊海

    这包括类的属性(字段)和方法,构造函数,访问修饰符(public、private、protected、默认),以及封装、继承和多态等概念。 3. **封装**:封装是面向对象编程的核心特性之一,通过源代码,你可以看到如何使用访问...

    myeclipse/eclipse设置java文档注释

    */”的形式出现,并包含多种标签来描述类、方法、字段等元素的信息。 #### 三、在 Eclipse 中设置 Java 文档注释 为了实现统一的 Java 文档注释风格,我们可以利用 Eclipse 的 Code Templates 功能来自定义注释...

    开源报表打印组件JasperReports用法详解

    这一过程要求先生成用于报表的XML文件。 为了确保数据的一致性和准确性,报表设计过程中会包含一系列的验证措施。 #### iReport的作用与集成 iReport是另一个开源工具,同样属于SourceForge.net项目之一,它的...

    001-dog-class-stidd:001-dog-class-stidd由GitHub Classroom创建

    使用构造函数创建至少三个Dog对象,并使用getter方法打印其字段/状态。 添加一个toString方法,该方法仅返回您的狗的名称和狗表情符号 :dog_face: 需要一些帮助? 请访问我们的CSAwesome教科书,codeHS或Tidd先生...

    java-examples:例子

    7. **反射机制**:在运行时动态访问和修改类、接口、字段和方法的能力。 8. **注解(Annotation)**:用于提供元数据,用于编译时和运行时的处理。 9. **Java标准库**:例如IO、NIO、XML解析、JSON处理、日期时间...

    J2SE6.0 冷冬大雪&英文版

    API文档通常会详细描述每个类的方法、构造函数、字段,以及它们的工作原理和使用示例,这对于理解和使用Java API至关重要。 其次,"J2SE6.0 API(冷冬大雪).chm"则可能是一位名为“冷冬大雪”的技术专家编写的中文...

    2021-2022计算机二级等级考试试题及答案No.3947.docx

    这是Java语言的一个重要特性,使得内部类能够灵活地访问外部类的数据,增加了代码的灵活性和封装性。 ### 3. 触发器的相关概念 触发器是一种特殊的存储过程,用于响应特定类型的事件(如INSERT、UPDATE或DELETE)...

    MyBatis代码生成工具-MyBatisTool

    数据实体类(DO)是用于封装数据库表中的字段和值的对象。MyBatisTool可以自动生成这些类,每个字段对应表中的一个列,这样在处理数据时就更加方便。此外,它还会生成getter和setter方法,便于属性的访问和设置。 ...

    Hibernate资料

    **Hibernate 框架详解** Hibernate 是一个开源的...理解并熟练掌握 Hibernate 的核心概念和使用方法,对于 Java 开发者来说至关重要。在实际项目中,根据需求选择合适的配置和策略,可以更好地发挥 Hibernate 的优势。

    SpringMVC-9 处理JSON数据

    2. User类:与JSON对象对应的Java类,使用`@JsonProperty`注解映射JSON字段。 ```java public class User { @JsonProperty("name") private String name; @JsonProperty("age") private int age; // 构造器、...

    夏昕.深入浅出Hibernate.zip

    实体类通常包含属性,对应数据库表的字段,而getter和setter方法则提供了访问这些属性的途径。 4. CRUD操作:Hibernate简化了数据库的增删改查操作。Create(创建)是将Java对象持久化到数据库,Update(更新)是...

    Android校招面试指南 2018最新版本

    - **Java类加载机制及类加载器详解**:类是如何被加载、链接和初始化的。 - **JVM中垃圾收集算法及垃圾收集器详解**:不同的垃圾回收算法及它们的特点。 - **JVM怎么判断对象是否已死?**:对象存活状态的判定条件。...

    MyBatis-06 逆向工程

    此外,还会生成构造函数和toString()方法,方便日志输出和调试。 Mapper接口定义了数据库操作的方法,如查询、插入、更新和删除。MBG会为每个数据表生成一个Mapper接口,其中的方法名与SQL语句的意图相对应。这些...

Global site tag (gtag.js) - Google Analytics