- 浏览: 1206634 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 651JAVA内存管理(内存溢出、内存泄漏)相关参考: JA ... -
JAVA可变参数对重载的影响
2014-01-27 15:28 885package com.lwf.test; publi ... -
有关String类创建几个对象的问题
2013-07-09 23:18 1305试题一: String s = new String(& ... -
JDK1.5下实现JDK1.6的Arrays.copyOfRange() 方法
2012-08-29 10:59 1722public static void test(){ i ... -
JAVA四舍五入的处理
2012-02-11 10:47 979如下,保留两个小数位 double f = 3 ... -
Comparator实现排序
2011-11-16 01:23 1206转自:Comparator实现排序 在java.util包 ... -
JAVA定时器使用
2011-08-19 11:05 741http://hualong.iteye.com/blog/5 ... -
JDK5.0 Annotation学习笔记
2011-07-26 22:48 723http://linliangyi2007.iteye.com ... -
JAVA CP命令
2010-12-31 11:51 10257java -cp .;c:\dir1\lib.jar Test ... -
JDK1.5的新特性及应用
2010-07-13 12:49 962以下两文: http://heaven-arch.iteye ... -
JAVA面试题150例
2010-05-19 11:44 2022一、Java基础方面 1、作用域public,priva ... -
JAVA编程思想第四版完整下载地址
2010-05-18 18:35 1233http://hi.baidu.com/yang1101190 ... -
JAVA多线程学习一
2010-04-13 17:21 894http://renyangok.iteye.com/blog ... -
JAVA常用误区整理
2008-01-09 13:12 8781、 float f=1.3;是不对的,编译时会出错,java ... -
try与finally块中return的问题
2008-12-05 14:37 1215针对以下情况进行测试: 情况1:try{} catch( ... -
简单克隆与深度克隆的思考
2008-12-19 16:44 991白话简单克隆和深度克隆一文 http://blog.csd ... -
一道面试题引发的思考之:类的初始化
2008-12-29 16:23 687本人曾写过JAVA基础方面的blog,也是针对类的初始化的, ... -
JAVA基础学习篇----对象串行化及Transient关键字的使用
2009-01-08 18:07 0http://blog.csdn.net/scruffybea ... -
!JAVA学习提高之---- JAVA日期格式化及相关操作
2009-01-13 17:02 767http://blog.csdn.net/gubaohua/a ... -
JAVA学习提高之---- List toArray学到的
2009-01-19 16:34 658最近结合一个事例掌握到ArrayList 的方法toArray ...
相关推荐
java ,thinking in java ,源码,thinking in java 第四版源码。。欢迎使用
Thinking In Java 第四版 【练习题答案 完整版】+ 章节标签 pdf格式
Thinking In Java第四版中文版.pdf,Thinking In Java第四版中文版.pdfThinking In Java第四版中文版.pdfThinking In Java第四版中文版.pdf
Thinking in Java 4Edition 练习题答案
英文版Thinking in java Thinking in Java Fourth Edition Bruce Eckel President, MindView, Inc.
thinking in java 第四版中文版高清pdf,很好的一本书,推荐使用ipad或者平板观看
thinking in java 第四版习题答案
Thinking In Java-Java 编程思想(中英文版 第四版) Thinking In Java-Java 编程思想(中英文版 第四版)
Thinking in Java(java编程思想) 第三版+第四版(完整中文版电子书+配套习题答案) 本资料包括四部分内容: 1、Thinking in Java 3th Edition.pdf为java编程思想第三版,是中文版,pdf格式,不是扫描版,非常清晰...
英文版的Thinking in Java 第四版 txt版绝对是第四版!! 适合放到手机上,在零碎的时间看看!!
Thinking in Java 4th Edition Annotated Solutions Guide!
Thinking In Java 练习题答案 (第四版) 配套答案,学习大师的编程思想
Thinking in C: Foundations for Java & C++ by Chuck Allison produced by Bruce Eckel Chapter 1: Introduction and Getting Started40 MinutesStart Lecture Chapter 2: Fundamental Data Types41 ...
第4章 初始化和清除 4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 ...
Thinking in java 电子书,经典java书籍
Thinking in Java 第四版 习题答案有很多代码,可供学习参考
Thinking in java 第三版+第四版(中英文版) 习题答案
第4 章 初始化和清除 第5 章 隐藏实施过程 第6 章 类再生 第7 章 多形性 第8 章 对象的容纳 第9 章 违例差错控制 第10 章 JAVA IO 系统 第11 章 运行期类型鉴定 第12 章 传递和返回对象 第十三章 创建窗口和程序片 ...
thinking in java thinking in java thinking in java thinking in java thinking in java
该书是thinking in java高清第四版 欢迎大家下载,找资源不容易