- 浏览: 1229679 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
http://quicker.iteye.com/blog/548770
http://quicker.iteye.com/blog/548787
前两文已经对JAVA初始化作了说明,本文以一个例子进行补充。
规则:
-
Java程序执行前必须先加载,先定位加载开始类(public的类),若存在继承关系,由父类开始加载,加载时必须初始化static成员变量。
-
加载时若遇到新的类,必须先对该类进行加载,方法如上。
-
加载完后再执行,执行时由main()方法开始。若存在继承,调用子类的构造方法,必须先执行其父类的构造方法。
-
执行构造函数前必须先初始化该类的成员变量,但static成员变量只需要初始化一次。
-
成员变量不能用自身的构造函数进行初始化,除非声明其为static
代码示例:
class Goods{ Goods(){ System.out.println("goods"); } } class Meal { static Meal ml = new Meal(1); // private Meal s = new Meal(2); // stackOverFlow exception //成员变量不能用自身的构造函数,除非声明为static. private Bread b = new Bread(3); Meal() { System.out.println("Meal()"); } Meal(int i) { System.out.println("Meal()" + i); } } class Bread { static Bread ml = new Bread(2); Goods g = new Goods(); Bread() { System.out.println("Bread()"); } Bread(int i) { System.out.println("Bread()" + i); } } class Lunch extends Meal { Lunch() { System.out.println("Lunch()"); } } class PortableLunch extends Lunch { PortableLunch() { System.out.println("PortableLunch()"); } } public class SandWich extends PortableLunch { static Bread bb = new Bread(); private Bread b = new Bread(); public SandWich() { System.out.println("SandWich()"); } public static void main(String[] args) { System.out.println("---------------------------------------"); new SandWich(); } }
如果能说出代码结果就表明过关。。
goods Bread()2 goods Bread()3 Meal()1 goods Bread() --------------------------------------- goods Bread()3 Meal() Lunch() PortableLunch() goods Bread() SandWich()
针对代码中:
class Meal { static Meal ml = new Meal(1); // private Meal s = new Meal(2); // stackOverFlow exception //成员变量不能用自身的构造函数,除非声明为static. private Bread b = new Bread(3); Meal() { System.out.println("Meal()"); } Meal(int i) { System.out.println("Meal()" + i); } }
// private Meal s = new Meal(2); // stackOverFlow exception
上面代码当声明为static的时候,只初如化一次,而非static声明Meal的实例,在调用构造函数之前需要初始化Meal类的成员变量,这样会不断地重复动作,最后抛出异常。
类似下面这段代码:
class Meal { static Meal ml = new Meal(1); // private Meal s = new Meal(2); // stackOverFlow exception //成员变量不能用自身的构造函数,除非声明为static. private Bread b = new Bread(3); Meal() { System.out.println("Meal()"); } Meal(int i) { System.out.println("Meal()" + i); } public static void main(String[] args) { new Meal(); } }
这个问题下贴有表述:
http://hi.baidu.com/yang1101190/blog/item/beb856c34c47865eb219a875.html
发表评论
-
JVM内存管理及性能调优(内存溢出、内存泄漏)
2015-09-02 07:14 692JAVA内存管理(内存溢出、内存泄漏)相关参考: JA ... -
JAVA可变参数对重载的影响
2014-01-27 15:28 925package com.lwf.test; publi ... -
有关String类创建几个对象的问题
2013-07-09 23:18 1327试题一: String s = new String(& ... -
JDK1.5下实现JDK1.6的Arrays.copyOfRange() 方法
2012-08-29 10:59 1754public static void test(){ i ... -
JAVA四舍五入的处理
2012-02-11 10:47 1009如下,保留两个小数位 double f = 3 ... -
Comparator实现排序
2011-11-16 01:23 1234转自:Comparator实现排序 在java.util包 ... -
JAVA定时器使用
2011-08-19 11:05 772http://hualong.iteye.com/blog/5 ... -
JDK5.0 Annotation学习笔记
2011-07-26 22:48 744http://linliangyi2007.iteye.com ... -
JAVA CP命令
2010-12-31 11:51 10288java -cp .;c:\dir1\lib.jar Test ... -
JDK1.5的新特性及应用
2010-07-13 12:49 998以下两文: http://heaven-arch.iteye ... -
JAVA面试题150例
2010-05-19 11:44 2048一、Java基础方面 1、作用域public,priva ... -
JAVA编程思想第四版完整下载地址
2010-05-18 18:35 1256http://hi.baidu.com/yang1101190 ... -
JAVA多线程学习一
2010-04-13 17:21 923http://renyangok.iteye.com/blog ... -
JAVA常用误区整理
2008-01-09 13:12 9051、 float f=1.3;是不对的,编译时会出错,java ... -
try与finally块中return的问题
2008-12-05 14:37 1245针对以下情况进行测试: 情况1:try{} catch( ... -
简单克隆与深度克隆的思考
2008-12-19 16:44 1025白话简单克隆和深度克隆一文 http://blog.csd ... -
一道面试题引发的思考之:类的初始化
2008-12-29 16:23 709本人曾写过JAVA基础方面的blog,也是针对类的初始化的, ... -
JAVA基础学习篇----对象串行化及Transient关键字的使用
2009-01-08 18:07 0http://blog.csdn.net/scruffybea ... -
!JAVA学习提高之---- JAVA日期格式化及相关操作
2009-01-13 17:02 790http://blog.csdn.net/gubaohua/a ... -
JAVA学习提高之---- List toArray学到的
2009-01-19 16:34 680最近结合一个事例掌握到ArrayList 的方法toArray ...
相关推荐
4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 switch 4.9 总结 第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以...
- **第4章:初始化与清理**:讨论对象的创建过程、初始化顺序以及资源释放的最佳实践。 ##### 第二部分:面向对象进阶 - **第5章:隐藏实现细节**:介绍抽象与封装的概念,学习如何设计具有良好隐藏机制的类。 - *...
### 《Thinking in Java》第四版重要知识点概览 #### 第1章 对象入门 - **对象的概念**:介绍面向对象编程的基本概念,包括对象、类、实例等。 - **创建对象**:详解如何在Java中创建对象,包括使用`new`关键字。 -...
#### 第四章 初始化和清理 1. **构造函数(Constructor)** - 构造函数确保对象创建时执行必要的初始化。 - 当类中有构造函数时,Java会在创建对象时自动调用它。 2. **函数重载(Method Overloading)** - **区分...
- **第4章:类的创建与使用** - **4.1 成功证明开始**:通过实例验证所学知识。 - **4.2 类的定义与使用**: - **4.2.1 类的基本定义**:类的定义语法。 - **4.2.2 类成员的可见性**:public、protected、...
### Thinking in Java 第四版 — 初始化与清理 #### 核心知识点概述 - **初始化的重要性**:在程序设计中,确保变量和对象被正确初始化至关重要,可以避免运行时错误和安全漏洞。 - **C 语言中的初始化问题**:C ...
第4章"初始化和清除"主要关注对象的初始化,特别是通过构造器来确保初始化。介绍了方法过载的概念,包括如何区分不同签名的方法,以及this关键字的使用。同时,章节讨论了垃圾收集和finalizer方法,以及成员初始化...
##### 第4章 初始化和清除 1. **由构建器保证初始化**:解释构造函数的作用以及如何使用构造函数初始化对象。 2. **清除:收尾和垃圾收集**:讨论对象生命周期结束时的清理工作,包括finalize()方法的作用。 3. **...
第四章“初始化和清除”关注对象的生命周期,包括构造器保证的初始化、方法过载、成员初始化和数组初始化。finalize()方法用于垃圾收集前的清理工作,但不保证一定会执行。 第五章“隐藏实施过程”引入了Java的包和...
根据提供的文件信息,我们可以将《Thinking in Java》第四版中的主要内容和知识点进行详细的解析与总结。本书由Bruce Eckel编写,是学习Java编程语言的经典教材之一。以下是对书中的几个关键章节及其涵盖的重要知识...
- **第五章:初始化与清理**(Initialization & Cleanup):本章着重于C#中的对象生命周期管理,包括如何初始化对象以及在对象不再需要时如何进行适当的清理工作,这对于避免内存泄漏等问题至关重要。 - **第六章:...
第4章《初始化和清除》讨论了对象的初始化,特别是通过构造函数来确保初始化。还涉及方法的重载、成员初始化、数组初始化以及垃圾收集和finalize()方法。理解何时以及如何进行对象的清理是防止内存泄漏的重要部分。 ...
《Thinking in Java》是Bruce Eckel的经典之作,第二版对初学者和经验丰富的开发者都具有极高的价值。这本书深入浅出地介绍了Java编程语言的核心概念和技术,帮助读者建立起扎实的面向对象编程思想。 1. 面向对象...
- **第五章:初始化与清理**:介绍了对象的生命周期管理,包括构造函数、析构函数的使用。 - **第六章:耦合与内聚**:分析了模块化设计原则中的耦合性和内聚性,强调了良好的设计模式的重要性。 - **第七章:类的...
3. **初始化与清理**:详细介绍了Java中对象的创建过程以及如何有效地进行资源清理,确保程序的健壮性和安全性。 4. **隐藏实现细节**:强调了封装的重要性,展示了如何通过封装隐藏对象内部的具体实现,提供一个...
4. **chap4 初始化与清理.pdf**:讨论了对象的生命周期,包括构造函数、初始化块、垃圾收集机制以及 finalize 方法,这些都是理解对象生命周期和内存管理的关键。 5. **chap7 多态性.pdf**:多态性是面向对象的重要...