﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-小亮的网络日志-随笔分类-Java</title><link>http://www.blogjava.net/zool/category/1051.html</link><description> 没有副标题,真的没有副标题.-__-! 技术与我无缘，转帖ing.....！！！！</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 08:50:25 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 08:50:25 GMT</pubDate><ttl>60</ttl><item><title>何为：鲁棒性？</title><link>http://www.blogjava.net/zool/archive/2005/08/15/10164.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Mon, 15 Aug 2005 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/08/15/10164.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/10164.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/08/15/10164.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/10164.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/10164.html</trackback:ping><description><![CDATA[<FONT size=2>所谓“鲁棒性”，是指控制系统在一定（结构，大小）的参数摄动下，维持某些性能的特性。</FONT><img src ="http://www.blogjava.net/zool/aggbug/10164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-08-15 17:17 <a href="http://www.blogjava.net/zool/archive/2005/08/15/10164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习JAVA，你是那种人？</title><link>http://www.blogjava.net/zool/archive/2005/08/02/8995.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 02 Aug 2005 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/08/02/8995.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/8995.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/08/02/8995.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/8995.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/8995.html</trackback:ping><description><![CDATA[<P><FONT color=#000000 size=2>凭作者对java的折服，凭着对java的兴趣，我想我会做大学里的第三种人。原blog下面还又一堆评论，不妨看看，呵呵</FONT></P>
<P><!--StartFragment --><FONT color=#000000 size=2>&nbsp;<!--StartFragment --> </FONT><A href="http://blog.csdn.net/kerry365/archive/2005/07/26/435488.aspx"><FONT color=#000000 size=2>一年以来对Java的一些感想!!</FONT></A><FONT size=2><FONT color=#000000>&nbsp;&nbsp; by<!--StartFragment --></FONT></FONT><A class=headermaintitle id=Header1_HeaderTitle href="http://blog.csdn.net/kerry365/"><FONT color=#000000 size=2>龚磊的Blog</FONT></A></P>
<P><FONT color=#800080 size=2></FONT>&nbsp;</P>
<P><FONT color=#800080 size=2>在Java的世界里面摸爬滚打也有一年多了,相比Java诞生十年来,一年真的算不了什么,Java的前五年就像一个初生的婴儿,似乎在软件开发领域找不到它应有的位置,除了在netscape浏览器中嵌入一些小小的applet之外,桌面应用基本上没有它的位置,虽然它是为了桌面应用的跨平台而设计的,但是没有设计得很完美,无法与C/C++,dephi相比,性能上来说它也不是一种很好的语言,因为与操作系统中夹了一层虚拟层,它的缓慢让很多人望而却步,但是,它的语言机制对程序语言设计来说是一种革命,而不仅仅是一种新的语言,除了语言的健壮性和安全性之外,使得我们程序员也从那些烦人的语言细节上面得以解放.直到99年J2EE的出现,才彻底改变了这种语言,jAVA也找到了它在应用开发中应有的位置.后面五年Java的发展,对软件开发领域来说是一陈风暴,席卷了整个软件业的开发,也成了高端企业开发的代表词...</FONT></P>
<P><FONT color=#800080 size=2>很庆幸,我选择了Java,从短时间上面讲,它解决了我的就业问题,常常自己想,如果我没有接触到Java,也许我还在苦苦的学MFC,我对此并不感兴趣,那种基于C/S的开发,对我没有多大的吸引力.有时觉得真的很神奇,一种那么简单的无状态的http协议竞争能构建这么大一个复杂的企业级的B/S 系统,有时我真的是被深深的折服.也许这就是带领我来到这个Java世界的一个很重要的原因,因为实现这样一个复杂的系统一直是我梦寐以求的事情,能做出这样的一个庞大的系统的时候也是我最有成就的时候..</FONT></P>
<P><FONT color=#800080 size=2>Java现在很火,学Java的人很多,软件公司需要会Java的人也很多,但是并不是说会Java就能找到好工作..经过大学几年的学习,结合自己的亲身体会,和自己做程序员的日子,总感觉自己总是被一些东西牵着鼻子在走,这些东西并不只是高的新的技术,还有很多很多......大学里学的计算机只是一些基础的基础,我并没有把这些基础学得有多好,现在也一直很后悔..其实大学里面计算机专业有两种人,一种是死守阵地,把大学里面的那计算机课程学得死死的,考试成绩很好,证书也拿了几个,但是没有开发过项目,使用的开发技术也很古老,开发效率极低,这种人出来找工作没有多大的优势可言,当然除了再回到学校里面去教书之外.还有一种人,对新技术盲目的崇拜,总是很浮躁,认为大学里面学的东西都没有用,过时了,今天想学Java,明天又想学.net,当听到.一种新的技术,又在怀疑以前学的东西是不是以后有用,是不是会淘汰,结果,什么都没有,这种人,永远 只有在IT业中被拖着走,开技术根本不行,做技术咨询到不错,反正他们都是一知半解...</FONT></P>
<P><FONT color=#800080 size=2>不知道为什么,大学里面女生的计算机成绩都很好,但是在IT公司很少很少看到女生,我们公司就一个,呵呵,看她的样子,写代码很扎实,但是并不擅长做设计....</FONT></P>
<P><FONT color=#800080 size=2>谈了这么一些,感觉危机感又来了,struts并未完全精通,hibernate才用过几次,感受到了它的强大,spring等AOP又出来了,我又要去学了... 其实我认为这并不像一些人说的这样很累很辛苦,正是因为我们年轻,我们才有这样的激情在这种世界前沿科技领域去奉献我们的青春....我觉得很值...祝 Java十周年生日快乐..</FONT></P>
<P><BR><BR><FONT color=#800080 size=2>本文引用通告地址： http://blog.csdn.net/kerry365/services/trackbacks/435488.aspx </FONT></P><img src ="http://www.blogjava.net/zool/aggbug/8995.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-08-02 10:47 <a href="http://www.blogjava.net/zool/archive/2005/08/02/8995.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>教你如何快速成为一名Java初级程序员</title><link>http://www.blogjava.net/zool/archive/2005/04/19/3485.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 19 Apr 2005 11:03:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/19/3485.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3485.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/19/3485.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3485.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3485.html</trackback:ping><description><![CDATA[<FONT size=2>目前，JAVA是开发人员的热宠，很多论坛都有不少热爱JAVA的开发人员，也有不少想成为 <BR>JAVA程序员，但苦于不知道该如何学习，也不清楚该学些什么知识才能成为一个JAVA程序 <BR>员。本人在这里抛砖引玉，和大 家讨论成为一个JAVA初级程序员应该具有的知识，与大家 <BR>共享。 <BR>个人认为想成为一个合格的JAVA初级程序员应该具备如下知识： <BR><BR>一、面向对象的知识：JAVA是一个面向对象的开发语言，因此熟悉面向对象对学习JAVA很 <BR>有必要，您要了解：什么是对象，什么是类；什么是封装，什么是多态，什么是继承；什 <BR>么是抽象类，什么是接口。了解了概念后，您还需要这些概念是如何体现的，如类和对象 <BR>有什么区别？类是如何封装的？ <BR><BR>二、JAVA语法：如果您已经有了开发经验，恭喜您，您学习JAVA语法来将比较容易。如果 <BR>您有C++等面向对象语言的开发经验，您只需简单的翻看一下介绍JAVA的相关书籍就可以了 <BR>。如果您是新手，没有关系，您下些工夫，好好研究一本JAVA初级教程之类的书就可以了 <BR>。 <BR><BR>学习了JAVA语法，加上面向对象的知识，只有您用心，您就可以写出来比较好的JAVA代码 <BR>了。如果您再抽出时间熟悉一下JAVA编程规范，您代码的水平就应该不俗了。 <BR><BR>三、JSP和HTML：在我国的绝大多数公司，做JAVA程序员都少不了和JSP以及HTML打交道。 <BR>因此，想成为JAVA程序员就不可避免的要熟悉JSP和HTML，您最好能知道JSP的几个内置对 <BR>象，如Session，Request，Reponse，，以及常用的JSP标签，如 include,userBean等。尽 <BR>管一些工具会帮您生成HTML代码，但您还是要熟悉比如title，，&lt;table&gt;，&lt; tr&gt;，&lt;td&gt;等 <BR>。如果您再熟悉一下JS和CSS就更好了，那会使您制作的页面更友好。 <BR><BR>四、WebServer:熟悉了以上三种，可以肯定的说您已经可以制作出来JSP页面了，您也可以 <BR>在您的页面里使用自己开发的JAVA类 (JAVABEAN)了，但您的页面总要跑起来才能看到您要 <BR>的效果，这就要求您必须熟悉一种WebServer，比如：TOMCAT，RESIN等。您要熟悉如何发 <BR>布您的应用，如何利用WebServer的数据库资源等。 <BR><BR>五、开发工具：大家都知道，开发工具可以帮助您更好更快地开发，因此熟悉几种开发工 <BR>具很有必要。目前JAVA的开发工具比较流行的有JBuilder,IDEA,Eclipse，HTML的开发工具 <BR>有Dreamweaver等。 <BR><BR>六、熟悉一种框架：熟悉一种框架其实是成为JAVA程序员的一种可选知识，但目前开发B/ <BR>S结构的应用的开发小组，都差不多会采用一种框架来构建自己的应用系统。框架都会有许 <BR>多可重用的代码，良好的层次关系和业务控制逻辑，基于框架的开发使你可以省出很多的 <BR>开发成本。目前比较流行的框架有 Struts和WAF等。 　 </FONT><img src ="http://www.blogjava.net/zool/aggbug/3485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-19 19:03 <a href="http://www.blogjava.net/zool/archive/2005/04/19/3485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java学习路径</title><link>http://www.blogjava.net/zool/archive/2005/04/19/3484.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 19 Apr 2005 11:01:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/19/3484.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3484.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/19/3484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3484.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3484.html</trackback:ping><description><![CDATA[<FONT size=2><FONT color=#006400>Java学习路径三篇 <BR></FONT><BR><FONT color=#ff0000>Java学习路径（一）工具篇 <BR></FONT><BR>一、 JDK (Java Development Kit) <BR><BR>　　JDK是整个Java的核心，包括了Java运行环境（Java Runtime Envirnment），一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK，除了Sun之外，还有很多公司和组织都开发了自己的JDK，例如IBM公司开发的JDK，BEA公司的Jrocket，还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM（Java Virtual Machine）运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说，我们还是需要先把Sun JDK掌握好。 <BR><BR>　　1、 JDK的下载和安装 <BR><BR>　　JDK又叫做J2SE（Java2 SDK Standard Edition），可以从Sun的Java网站上下载到，http://java.sun.com/j2se/downloads.html ，JDK当前最新的版本是J2SDK1.4.2，建议下载该版本的JDK，下载页面在这里：http://java.sun.com/j2se/1.4.2/download.html。 <BR><BR>　　下载好的JDK是一个可执行安装程序，默认安装完毕后会在C:\Program Files\Java\目录下安装一套JRE（供浏览器来使用），在C:\j2sdk1.4.2下安装一套JDK（也包括一套JRE）。然后我们需要在环境变量PATH的最前面增加java的路径C:\j2sdk1.4.2\bin。这样JDK就安装好了。 <BR><BR>　　2、 JDK的命令工具 <BR><BR>　　JDK的最重要命令行工具： <BR><BR>　　java： 启动JVM执行class <BR><BR>　　javac： Java编译器 <BR><BR>　　jar： Java打包工具 <BR><BR>　　javadoc： Java文档生成器 <BR><BR>　　这些命令行必须要非常非常熟悉，对于每个参数都要很精通才行。对于这些命令的学习，JDK Documentation上有详细的文档。 <BR><BR>　　二、 JDK Documentation <BR><BR>　　Documentation在JDK的下载页面也有下载连接，建议同时下载Documentation。Documentation是最最重要的编程手册，涵盖了整个Java所有方面的内容的描述。可以这样说，学习Java编程，大部分时间都是花在看这个Documentation上面的。我是随身携带的，写Java代码的时候，随时查看，须臾不离手。 <BR><BR>　　三、 应用服务器(App Server) <BR><BR>　　App Server是运行Java企业组件的平台，构成了应用软件的主要运行环境。当前主流的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的Jboss，选择其中一个进行学习就可以了，个人推荐Weblogic，因为它的体系结构更加干净，开发和部署更加方便，是Java企业软件开发人员首选的开发平台。下面简要介绍几种常用的App Server： <BR><BR>　　1、 Tomcat <BR><BR>　　Tomcat严格意义上并不是一个真正的App Server，它只是一个可以支持运行Serlvet/JSP的Web容器，不过Tomcat也扩展了一些App Server的功能，如JNDI，数据库连接池，用户事务处理等等。Tomcat被非常广泛的应用在中小规模的Java Web应用中，因此本文做一点下载、安装和配置Tomcat的介绍： <BR><BR>　　Tomcat是Apache组织下Jakarta项目下的一个子项目，它的主网站是：http://jakarta.apache.org/tomcat/ ，Tomcat最新版本是Tomcat5.0.16，软件下载的连接是：http://www.apache.org/dist/jakarta/tomcat-5/v5.0.16/ 。 <BR><BR>　　下载Tomcat既可以直接下载zip包，也可以下载exe安装包（个人建议zip更干净些），不管哪种情况，下载完毕安装好以后（zip直接解压缩就可以了）。需要设置两个环境变量： <BR><BR>　　JAVA_HOME=C:\j2sdk1.4.2 <BR><BR>　　CATALINA_HOME=D:\tomcat4 (你的Tomcat安装目录) <BR><BR>　　这样就安装好了，启动Tomcat运行CATALINA_HOME\bin\startup.bat，关闭Tomcat运行shutdown.bat脚本。Tomcat启动以后，默认使用8080端口，因此可以用浏览器访问http://localhost:8080来测试Tomcat是否正常启动。 <BR><BR>　　Tomcat提供了两个Web界面的管理工具，URL分别是： <BR><BR>　　http://localhost:8080/admin/index.jsp <BR><BR>　　http://localhost:8080/manager/html <BR><BR>　　在启用这两个管理工具之前，先需要手工配置一下管理员用户和口令。用一个文本工具打开CATALINA_HOME\conf\tomcat-users.xml这个文件，加入如下几行： <BR><BR>　　&lt;role rolename="manager"/&gt; <BR>　　&lt;role rolename="admin"/&gt; <BR>　　&lt;user username="robbin" password="12345678" roles="admin,manager,tomcat"/&gt; <BR><BR>　　这样用户“robbin”就具备了超级管理员权限。重新启动Tomcat以后，你就可以使用该用户来登陆如上的两个管理工具，通过Web方式进行Tomcat的配置和管理了。 <BR><BR>　　2、 BEA Weblogic <BR><BR>　　Weblogic可以到BEA的网站上免费注册之后下载到Weblogic8.1企业版，License可以免费使用1年时间，其实这已经完全足够了。Weblogic的下载连接：http://commerce.bea.com/index.jsp，Weblogic的在线文档：http://edocs.bea.com/ 。 <BR><BR>　　3、 IBM Webshpere <BR><BR>　　Websphere同样可以下载到免费的试用版本，到IBM的developerWorks网站可以看到Websphere试用产品的下载和相关的Websphere的资料，developerWorks中文网站的连接是：http://www-900.ibm.com/developerWorks/cn/wsdd/ ，Websphere的下载连接：http://www7b.software.ibm.com/wsdd/downloads/WASsupport.html 。 <BR><BR>　　4、 Jboss <BR><BR>　　Jboss是免费开源的App Server，可以免费的从Jboss网站下载：http://www.jboss.org/index.html，然而Jboss的文档是不免费，需要花钱购买，所以为我们学习Jboss设置了一定的障碍。在Jdon上有几篇不错的Jboss配置文档，可以用来参考：http://www.jdon.com/idea.html <BR><BR>　　四、 Java应用的运行环境 <BR><BR>　　Java的应用可以简单分为以下几个方面： <BR><BR>　　1、 Java的桌面应用 <BR><BR>　　桌面应用一般仅仅需要JRE的支持就足够了。 <BR><BR>　　2、 Java Web应用 <BR><BR>　　Java的Web应用至少需要安装JDK和一个web容器（例如Tomcat），以及一个多用户数据库，Web应用至少分为三层： <BR><BR>　　Browser层：浏览器显示用户页面 <BR><BR>　　Web层：运行Servlet/JSP <BR><BR>　　DB层：后端数据库，向Java程序提供数据访问服务 <BR><BR>　　3、 Java企业级应用 <BR><BR>　　企业级应用比较复杂，可以扩展到n层，最简单情况会分为4层： <BR><BR>　　Browser层：浏览器显示用户页面 <BR><BR>　　Client层：Java客户端图形程序（或者嵌入式设备的程序）直接和Web层或者EJB层交互 <BR><BR>　　Web层：运行Servlet/JSP <BR><BR>　　EJB层：运行EJB，完成业务逻辑运算 <BR><BR>　　DB层：后端数据库，向Java程序提供数据访问服务 <BR><BR>　　4、 Java嵌入式应用 <BR><BR>　　Java嵌入式应用是一个方兴未艾的领域，从事嵌入式开发，需要从Sun下载J2ME开发包，J2ME包含了嵌入式设备专用虚拟机KVM，和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。 <BR><BR><BR>Java学习路径（二）书籍篇 <BR><BR>学习一门新的知识，不可能指望只看一本，或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。 <BR><BR>　　在这里我只想补充一点看法，很多人学习Java是从《Thinking in Java》这本书入手的，但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Java的整个体系，而是一种跳跃式的写作方法，是一种类似tips的方法来对Java很多知识点进行了深入的分析和解释。 <BR><BR>　　对于初学者来说，最好是找一本Java入门的书籍，但是比较完整的循序的介绍Java的语法，面向对象的特性，核心类库等等，在看这本书的同时，可以同步来看《Thinking in Java》，来加深对Java的理解和原理的运用，同时又可以完整的了解Java的整个体系。 <BR><BR>　　对于Java的入门书籍，蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition》 或者《Java in a Nutshell,2nd Edition（针对C++背景）》，我并没有看过这两本书。其实我觉得电子工业出版社的《Java 2编程详解》或者《Java 2从入门到精通》就很不错。 <BR><BR>　　在所有的Java书籍当中，其实最最有用的，并不是O´reilly的 Java Serials，真正最最有用处是JDK的Documentation！几乎你想获得的所有的知识在Documentation里面全部都有，其中最主要的部分当然是Java基础类库的API文档，是按照package来组织的，对于每一个class都有详细的解释，它的继承关系，是否实现了某个接口，通常用在哪些场合，还可以查到它所有的public的属性和方法，每个属性的解释，意义，每个方法的用途，调用的参数，参数的意义，返回值的类型，以及方法可能抛出的异常等等。可以这样来说，所有关于Java编程方面的书籍其实都不过是在用比较通俗易懂的语言，和良好的组织方式来介绍Documentation里面的某个package里面包含的一些类的用法而已。所以万变不离其宗，如果你有足够的能力来直接通过Documentation来学习Java的类库，那么基本上就不需要看其他的书籍了。除此之外，Documentation也是编程必备的手册，我的桌面上有三个Documentation的快捷方式，分别是J2SDK1.4.1的Documentation，Servlet2.3的Documentation和J2SDKEE1.3.1的Documentation。有了这个三个Documentation，什么其他的书籍都不需要了。 <BR><BR>　　对于Java Web 编程来说，最核心的是要熟悉和掌握HTTP协议，这个就和Java无关了，在熟悉HTTP协议之后，就需要熟悉Java的实现HTTP协议的类库，也就是Servlet API，所以最重要的东西就是Servlet API。当然对于初学者而言，直接通过Servlet API来学习Web编程有很大的难度，我推荐O´reilly的《Java Server Pages 》这本书来学习Web 编程。 <BR><BR>　EJB的书籍当中，《Enterprise Java Beans?, 2nd Edition》是一本很不错的书， EJB的学习门槛是比较高，入门很难，但是这本书完全降低了学习的难度，特别重要的一点是，EJB的学习需要结合一种App Server的具体实现，所以在学习EJB的同时，必须同步的学习某种App Server，而这本书相关的出了三本书，分别是Weblogic6.1，Websphere4.0和JBoss3.0上面部署书中例子的实做。真是既有理论，又有实践。在学习EJB的同时，可以边看边做，EJB的学习会变得很轻松。 <BR><BR>　　但是这本书也有一个问题，就是版本比较旧，主要讲EJB1.1规范和部分EJB2.0的规范。而Ed Roman写的《Mastering EJB 2.0》这本书完全是根据EJB2.0规范写的，深入浅出，覆盖了EJB编程的各个方面，并且还有很多编程经验tips，也是学习EJB非常推荐的书籍之一。 <BR><BR>　　如果是结合Weblogic来学习J2EE的话，《J2EE应用与BEA Weblogic Server》绝对是首选读物，虽然是讲述的Weblogic6.0，仍然值得购买，这本书是BEA官方推荐的教材，作者也是BEA公司的工程师。现在中文版已经随处可见了。这本书结合Weblogic介绍了J2EE各个方面的技术在Weblogic平台上的开发和部署，实践指导意义非常强。 <BR><BR>　　在掌握了Java平台基础知识和J2EE方面的知识以后，更进一步的是学习如何运用OO的方法进行软件的设计，那么就一定要学习“设计模式”。Sun公司出版了一本《J2EE核心模式》，是每个开发Java企业平台软件的架构师必备的书籍。这本书全面的介绍了J2EE体系架构的各种设计模式，是设计师的必读书籍。 <BR><BR><BR>Java学习路径（三）过程篇 <BR><BR>每个人的学习方法是不同的，一个人的方法不见得适合另一个人，我只能是谈自己的学习方法。因为我学习Java是完全自学的，从来没有问过别人，所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法，只能给大家提供一点参考了。 <BR><BR>　　学习Java的第一步是安装好JDK，写一个Hello World， 其实JDK的学习没有那么简单，关于JDK有两个问题是很容易一直困扰Java程序员的地方：一个是CLASSPATH的问题，其实从原理上来说，是要搞清楚JRE的ClassLoader是如何加载Class的；另一个问题是package和import问题，如何来寻找类的路径问题。把这两个问题摸索清楚了，就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的《Java深度历险》，对这两个问题进行了深入的探讨。 <BR>　　第二步是学习Java的语法。Java的语法是类C++的，基本上主流的编程语言不是类C，就是类C++的，没有什么新东西，所以语法的学习，大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法，public，protected，private，static，什么时候用，为什么要用，怎么用，这可能需要有人来指点一下，我当初是完全自己琢磨出来的，花了很久的时间。不过后来我看到《Thinking in Java》这本书上面是讲了这些概念的。 <BR><BR>　　第三步是学习Java的面向对象的编程语言的特性的地方。比如继承，构造器，抽象类，接口，方法的多态，重载，覆盖，Java的异常处理机制。对于一个没有面向对象语言背景的人来说，我觉得这个过程需要花很长很长时间，因为学习Java之前没有C++的经验，只有C的经验，我是大概花了一个月左右吧，才彻底把这些概念都搞清楚，把书上面的例子反复的揣摩，修改，尝试，把那几章内容反复的看过来，看过去，看了不下5遍，才彻底领悟了。不过我想如果有C++经验的话，应该一两天时间足够了。那么在这个过程中，可以多看看《Thinking in Java》这本书，对面向对象的讲解非常透彻。可惜的是我学习的时候，并没有看到这本书，所以自己花了大量的时间，通过自己的尝试和揣摩来学会的。 <BR><BR>　　第四步就是开始熟悉Java的类库。Java的基础类库其实就是JDK安装目录下面jre\lib\rt.jar这个包。学习基础类库就是学习rt.jar。基础类库里面的类非常非常多。据说有3000多个，我没有统计过。但是真正对于我们来说最核心的只有4个，分别是 <BR><BR>　　java.lang.*; <BR><BR>　　java.io.*; <BR><BR>　　java.util.*; <BR><BR>　　java.sql.*; <BR><BR>　　这四个包的学习，每个包的学习都可以写成一本厚厚的教材，而O´reilly也确实是这样做的。我觉得如果时间比较紧，是不可能通过读四本书来学习。我觉得比较好的学习方法是这样的： <BR><BR>　　首先要通读整个package的框架，了解整个package的class，interface，exception的构成，最好是能够找到介绍整个包框架的文章。这些专门介绍包的书籍的前几章应该就是这些总体的框架内容介绍。 <BR><BR>　　对包整体框架的把握并不是要熟悉每个类的用法，记住它有哪些属性，方法。想记也记不住的。而是要知道包有哪些方面的类构成的，这些类的用途是什么，最核心的几个类分别是完成什么功能的。我在给人培训的时候一般是一次课讲一个包，所以不可能详细的介绍每个类的用法，但是我反复强调，我给你们讲这些包的不是要告诉你们类的方法是怎么调用的，也不要求你们记住类的方法调用，而是要你们了解，Java给我们提供了哪些类，每个类是用在什么场合，当我遇到问题的时候，我知道哪个类，或者哪几个类的组合可以解决我的问题，That´all！，当我们具体写程序的时候，只要你知道该用哪个类来完成你的工作就足够了。编码的时候，具体的方法调用，是边写代码，边查Documentation，所有的东西都在Documentation里面，不要求你一定记住，实际你也记不住3000多个类的总共将近10万个方法调用。所以对每个包的总体框架的把握就变得极为重要。 <BR><BR>　　第五步，通过上面的学习，如果学的比较扎实的话，就打好了Java的基础了，剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到这一步，Java的自学能力已经被培养出来了，可以到了直接学习Documentation的水平了。除了要做GUI编程之外，JDK里面其他会有用处的包是这些： <BR><BR>　　java.text.*; <BR><BR>　　java.net.*; <BR><BR>　　javax.naming.*; <BR><BR>　　这些包里面真正用的比较多的类其实很少，只有几个，所以不需要花很多时间。 <BR><BR>　　第六步，Java Web 编程 <BR><BR>　　Web编程的核心是HTTP协议，HTTP协议和Java无关，如果不熟悉HTTP协议的话，虽然也可以学好Servlet/JSP编程，但是达不到举一反三，一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话，又有了Java编程的良好的基础，学习Servlet/JSP简直易如反掌，我学习Servlet/JSP就用了不到一周的时间，然后就开始用JSP来做项目了。 <BR><BR>　　在Servlet/JSP的学习中，重头仍然是Servlet Documentation。Servlet API最常用的类很少，花比较少的时间就可以掌握了。把这些类都看一遍，多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过HTTP协议在Web Server和Brower之间交谈。另外对JSP，还需要熟悉几个常用JSP的标记，具体的写法记不住的话，临时查就是了。 <BR><BR>　　此外Java Web编程学习的重点要放在Web Application的设计模式上，如何进行业务逻辑的分析，并且进行合理的设计，按照MVC设计模式的要求，运用Servlet和JSP分别完成不同的逻辑层，掌握如何在Servlet和JSP之间进行流程的控制和数据的共享，以及Web Application应该如何配置和部署。 <BR><BR>　　第七步，J2EE编程 <BR><BR>　　以上的学习过程如果是比较顺利的话，进行到这一步，难度又陡然提高。因为上面的知识内容都是只涉及一个方面，而像EJB，JMS，JTA等核心的J2EE规范往往是几种Java技术的综合运用的结晶，所以掌握起来难度比较大。 <BR><BR>　　首先一定要学习好JNDI，JNDI是App Server定位服务器资源（EJB组件，Datasouce，JMS）查找方法，如果对JNDI不熟悉的话，EJB，JMS这些东西几乎学不下去。JNDI其实就是javax.naming.*这个包，运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置，就需要看看专门的文档规范了，比如web.xml的写法，ejb-jar.xml的写法等等。针对每种不同的App Server，还有自己的服务资源配置文件，也是需要熟悉的。 <BR><BR>　　然后可以学习JTA，主要是要理解JTA对于事务的控制的方法，以及该在什么场合使用JTA。这里可以简单的举个例子，我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setAutoCommit(false),....,conn.commit())，做为一个原子*作，但是假设我的业务需求是要把对两个不同数据库的*作做为一个原子*作，你能做的到吗？这时候只能用JTA了。假设*作过程是先往A数据库插一条记录，然后删除B数据库另一个记录，我们自己写代码是控制不了把整个*作做为一个原子*作的。用JTA的话，由App Server来完成控制。 <BR><BR>　　在学习EJB之前要学习对象序列化和RMI，RMI是EJB的基础。接着学习JMS和EJB，对于EJB来说，最关键是要理解EJB是如何通过RMI来实现对远端对象的调用的，以及在什么情况下要用到EJB。 <BR><BR>　　在学习完EJB，JMS这些东西之后，你可能会意识到要急不可待学习两个领域的知识，一个是UML，另一个是Design Pattern。Java企业软件的设计非常重视框架(Framework)的设计，一个好的软件框架是软件开发成功的必要条件。在这个时候，应该开始把学习的重点放在设计模式和框架的学习上，通过学习和实际的编程经验来掌握EJB的设计模式和J2EE的核心模式。 <BR><BR>　　J2EE规范里面，除了EJB，JMS，JTA，Servlet/JSP，JDBC之外还有很多很多的企业技术，这里不一一进行介绍了。 <BR><BR>　　另外还有一个最新领域Web Services。Web Services也完全没有任何新东西，它像是一种黏合剂，可以把不同的服务统一起来提供一个统一的调用接口，作为使用者来说，我只要获得服务提供者给我的WSDL（对服务的描述），就够了，我完全不知道服务器提供者提供的服务究竟是EJB组件，还是.Net组件，还是什么CORBA组件，还是其他的什么实现，我也不需要知道。Web Services最伟大的地方就在于通过统一的服务提供方式和调用方式，实现了整个Internet服务的共享，是一个非常令人激动的技术领域。Web Services好像目前还没有什么很好的书籍，但是可以通过在网络上面查资料的方式来学习。 <BR><BR>Java学习路径三篇 <BR><BR>Java学习路径（一）工具篇 <BR><BR>一、 JDK (Java Development Kit) <BR><BR>　　JDK是整个Java的核心，包括了Java运行环境（Java Runtime Envirnment），一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK，除了Sun之外，还有很多公司和组织都开发了自己的JDK，例如IBM公司开发的JDK，BEA公司的Jrocket，还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM（Java Virtual Machine）运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说，我们还是需要先把Sun JDK掌握好。 <BR><BR>　　1、 JDK的下载和安装 <BR><BR>　　JDK又叫做J2SE（Java2 SDK Standard Edition），可以从Sun的Java网站上下载到，http://java.sun.com/j2se/downloads.html ，JDK当前最新的版本是J2SDK1.4.2，建议下载该版本的JDK，下载页面在这里：http://java.sun.com/j2se/1.4.2/download.html。 <BR><BR>　　下载好的JDK是一个可执行安装程序，默认安装完毕后会在C:\Program Files\Java\目录下安装一套JRE（供浏览器来使用），在C:\j2sdk1.4.2下安装一套JDK（也包括一套JRE）。然后我们需要在环境变量PATH的最前面增加java的路径C:\j2sdk1.4.2\bin。这样JDK就安装好了。 <BR><BR>　　2、 JDK的命令工具 <BR><BR>　　JDK的最重要命令行工具： <BR><BR>　　java： 启动JVM执行class <BR><BR>　　javac： Java编译器 <BR><BR>　　jar： Java打包工具 <BR><BR>　　javadoc： Java文档生成器 <BR><BR>　　这些命令行必须要非常非常熟悉，对于每个参数都要很精通才行。对于这些命令的学习，JDK Documentation上有详细的文档。 <BR><BR>　　二、 JDK Documentation <BR><BR>　　Documentation在JDK的下载页面也有下载连接，建议同时下载Documentation。Documentation是最最重要的编程手册，涵盖了整个Java所有方面的内容的描述。可以这样说，学习Java编程，大部分时间都是花在看这个Documentation上面的。我是随身携带的，写Java代码的时候，随时查看，须臾不离手。 <BR><BR>　　三、 应用服务器(App Server) <BR><BR>　　App Server是运行Java企业组件的平台，构成了应用软件的主要运行环境。当前主流的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的Jboss，选择其中一个进行学习就可以了，个人推荐Weblogic，因为它的体系结构更加干净，开发和部署更加方便，是Java企业软件开发人员首选的开发平台。下面简要介绍几种常用的App Server： <BR><BR>　　1、 Tomcat <BR><BR>　　Tomcat严格意义上并不是一个真正的App Server，它只是一个可以支持运行Serlvet/JSP的Web容器，不过Tomcat也扩展了一些App Server的功能，如JNDI，数据库连接池，用户事务处理等等。Tomcat被非常广泛的应用在中小规模的Java Web应用中，因此本文做一点下载、安装和配置Tomcat的介绍： <BR><BR>　　Tomcat是Apache组织下Jakarta项目下的一个子项目，它的主网站是：http://jakarta.apache.org/tomcat/ ，Tomcat最新版本是Tomcat5.0.16，软件下载的连接是：http://www.apache.org/dist/jakarta/tomcat-5/v5.0.16/ 。 <BR><BR>　　下载Tomcat既可以直接下载zip包，也可以下载exe安装包（个人建议zip更干净些），不管哪种情况，下载完毕安装好以后（zip直接解压缩就可以了）。需要设置两个环境变量： <BR><BR>　　JAVA_HOME=C:\j2sdk1.4.2 <BR><BR>　　CATALINA_HOME=D:\tomcat4 (你的Tomcat安装目录) <BR><BR>　　这样就安装好了，启动Tomcat运行CATALINA_HOME\bin\startup.bat，关闭Tomcat运行shutdown.bat脚本。Tomcat启动以后，默认使用8080端口，因此可以用浏览器访问http://localhost:8080来测试Tomcat是否正常启动。 <BR><BR>　　Tomcat提供了两个Web界面的管理工具，URL分别是： <BR><BR>　　http://localhost:8080/admin/index.jsp <BR><BR>　　http://localhost:8080/manager/html <BR><BR>　　在启用这两个管理工具之前，先需要手工配置一下管理员用户和口令。用一个文本工具打开CATALINA_HOME\conf\tomcat-users.xml这个文件，加入如下几行： <BR><BR>　　&lt;role rolename="manager"/&gt; <BR>　　&lt;role rolename="admin"/&gt; <BR>　　&lt;user username="robbin" password="12345678" roles="admin,manager,tomcat"/&gt; <BR><BR>　　这样用户“robbin”就具备了超级管理员权限。重新启动Tomcat以后，你就可以使用该用户来登陆如上的两个管理工具，通过Web方式进行Tomcat的配置和管理了。 <BR><BR>　　2、 BEA Weblogic <BR><BR>　　Weblogic可以到BEA的网站上免费注册之后下载到Weblogic8.1企业版，License可以免费使用1年时间，其实这已经完全足够了。Weblogic的下载连接：http://commerce.bea.com/index.jsp，Weblogic的在线文档：http://edocs.bea.com/ 。 <BR><BR>　　3、 IBM Webshpere <BR><BR>　　Websphere同样可以下载到免费的试用版本，到IBM的developerWorks网站可以看到Websphere试用产品的下载和相关的Websphere的资料，developerWorks中文网站的连接是：http://www-900.ibm.com/developerWorks/cn/wsdd/ ，Websphere的下载连接：http://www7b.software.ibm.com/wsdd/downloads/WASsupport.html 。 <BR><BR>　　4、 Jboss <BR><BR>　　Jboss是免费开源的App Server，可以免费的从Jboss网站下载：http://www.jboss.org/index.html，然而Jboss的文档是不免费，需要花钱购买，所以为我们学习Jboss设置了一定的障碍。在Jdon上有几篇不错的Jboss配置文档，可以用来参考：http://www.jdon.com/idea.html <BR><BR>　　四、 Java应用的运行环境 <BR><BR>　　Java的应用可以简单分为以下几个方面： <BR><BR>　　1、 Java的桌面应用 <BR><BR>　　桌面应用一般仅仅需要JRE的支持就足够了。 <BR><BR>　　2、 Java Web应用 <BR><BR>　　Java的Web应用至少需要安装JDK和一个web容器（例如Tomcat），以及一个多用户数据库，Web应用至少分为三层： <BR><BR>　　Browser层：浏览器显示用户页面 <BR><BR>　　Web层：运行Servlet/JSP <BR><BR>　　DB层：后端数据库，向Java程序提供数据访问服务 <BR><BR>　　3、 Java企业级应用 <BR><BR>　　企业级应用比较复杂，可以扩展到n层，最简单情况会分为4层： <BR><BR>　　Browser层：浏览器显示用户页面 <BR><BR>　　Client层：Java客户端图形程序（或者嵌入式设备的程序）直接和Web层或者EJB层交互 <BR><BR>　　Web层：运行Servlet/JSP <BR><BR>　　EJB层：运行EJB，完成业务逻辑运算 <BR><BR>　　DB层：后端数据库，向Java程序提供数据访问服务 <BR><BR>　　4、 Java嵌入式应用 <BR><BR>　　Java嵌入式应用是一个方兴未艾的领域，从事嵌入式开发，需要从Sun下载J2ME开发包，J2ME包含了嵌入式设备专用虚拟机KVM，和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。 <BR><BR><BR>Java学习路径（二）书籍篇 <BR><BR>学习一门新的知识，不可能指望只看一本，或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。 <BR><BR>　　在这里我只想补充一点看法，很多人学习Java是从《Thinking in Java》这本书入手的，但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Java的整个体系，而是一种跳跃式的写作方法，是一种类似tips的方法来对Java很多知识点进行了深入的分析和解释。 <BR><BR>　　对于初学者来说，最好是找一本Java入门的书籍，但是比较完整的循序的介绍Java的语法，面向对象的特性，核心类库等等，在看这本书的同时，可以同步来看《Thinking in Java》，来加深对Java的理解和原理的运用，同时又可以完整的了解Java的整个体系。 <BR><BR>　　对于Java的入门书籍，蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition》 或者《Java in a Nutshell,2nd Edition（针对C++背景）》，我并没有看过这两本书。其实我觉得电子工业出版社的《Java 2编程详解》或者《Java 2从入门到精通》就很不错。 <BR><BR>　　在所有的Java书籍当中，其实最最有用的，并不是O´reilly的 Java Serials，真正最最有用处是JDK的Documentation！几乎你想获得的所有的知识在Documentation里面全部都有，其中最主要的部分当然是Java基础类库的API文档，是按照package来组织的，对于每一个class都有详细的解释，它的继承关系，是否实现了某个接口，通常用在哪些场合，还可以查到它所有的public的属性和方法，每个属性的解释，意义，每个方法的用途，调用的参数，参数的意义，返回值的类型，以及方法可能抛出的异常等等。可以这样来说，所有关于Java编程方面的书籍其实都不过是在用比较通俗易懂的语言，和良好的组织方式来介绍Documentation里面的某个package里面包含的一些类的用法而已。所以万变不离其宗，如果你有足够的能力来直接通过Documentation来学习Java的类库，那么基本上就不需要看其他的书籍了。除此之外，Documentation也是编程必备的手册，我的桌面上有三个Documentation的快捷方式，分别是J2SDK1.4.1的Documentation，Servlet2.3的Documentation和J2SDKEE1.3.1的Documentation。有了这个三个Documentation，什么其他的书籍都不需要了。 <BR><BR>　　对于Java Web 编程来说，最核心的是要熟悉和掌握HTTP协议，这个就和Java无关了，在熟悉HTTP协议之后，就需要熟悉Java的实现HTTP协议的类库，也就是Servlet API，所以最重要的东西就是Servlet API。当然对于初学者而言，直接通过Servlet API来学习Web编程有很大的难度，我推荐O´reilly的《Java Server Pages 》这本书来学习Web 编程。 <BR><BR>　EJB的书籍当中，《Enterprise Java Beans?, 2nd Edition》是一本很不错的书， EJB的学习门槛是比较高，入门很难，但是这本书完全降低了学习的难度，特别重要的一点是，EJB的学习需要结合一种App Server的具体实现，所以在学习EJB的同时，必须同步的学习某种App Server，而这本书相关的出了三本书，分别是Weblogic6.1，Websphere4.0和JBoss3.0上面部署书中例子的实做。真是既有理论，又有实践。在学习EJB的同时，可以边看边做，EJB的学习会变得很轻松。 <BR><BR>　　但是这本书也有一个问题，就是版本比较旧，主要讲EJB1.1规范和部分EJB2.0的规范。而Ed Roman写的《Mastering EJB 2.0》这本书完全是根据EJB2.0规范写的，深入浅出，覆盖了EJB编程的各个方面，并且还有很多编程经验tips，也是学习EJB非常推荐的书籍之一。 <BR><BR>　　如果是结合Weblogic来学习J2EE的话，《J2EE应用与BEA Weblogic Server》绝对是首选读物，虽然是讲述的Weblogic6.0，仍然值得购买，这本书是BEA官方推荐的教材，作者也是BEA公司的工程师。现在中文版已经随处可见了。这本书结合Weblogic介绍了J2EE各个方面的技术在Weblogic平台上的开发和部署，实践指导意义非常强。 <BR><BR>　　在掌握了Java平台基础知识和J2EE方面的知识以后，更进一步的是学习如何运用OO的方法进行软件的设计，那么就一定要学习“设计模式”。Sun公司出版了一本《J2EE核心模式》，是每个开发Java企业平台软件的架构师必备的书籍。这本书全面的介绍了J2EE体系架构的各种设计模式，是设计师的必读书籍。 <BR><BR><BR>Java学习路径（三）过程篇 <BR><BR>每个人的学习方法是不同的，一个人的方法不见得适合另一个人，我只能是谈自己的学习方法。因为我学习Java是完全自学的，从来没有问过别人，所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法，只能给大家提供一点参考了。 <BR><BR>　　学习Java的第一步是安装好JDK，写一个Hello World， 其实JDK的学习没有那么简单，关于JDK有两个问题是很容易一直困扰Java程序员的地方：一个是CLASSPATH的问题，其实从原理上来说，是要搞清楚JRE的ClassLoader是如何加载Class的；另一个问题是package和import问题，如何来寻找类的路径问题。把这两个问题摸索清楚了，就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的《Java深度历险》，对这两个问题进行了深入的探讨。 <BR>　　第二步是学习Java的语法。Java的语法是类C++的，基本上主流的编程语言不是类C，就是类C++的，没有什么新东西，所以语法的学习，大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法，public，protected，private，static，什么时候用，为什么要用，怎么用，这可能需要有人来指点一下，我当初是完全自己琢磨出来的，花了很久的时间。不过后来我看到《Thinking in Java》这本书上面是讲了这些概念的。 <BR><BR>　　第三步是学习Java的面向对象的编程语言的特性的地方。比如继承，构造器，抽象类，接口，方法的多态，重载，覆盖，Java的异常处理机制。对于一个没有面向对象语言背景的人来说，我觉得这个过程需要花很长很长时间，因为学习Java之前没有C++的经验，只有C的经验，我是大概花了一个月左右吧，才彻底把这些概念都搞清楚，把书上面的例子反复的揣摩，修改，尝试，把那几章内容反复的看过来，看过去，看了不下5遍，才彻底领悟了。不过我想如果有C++经验的话，应该一两天时间足够了。那么在这个过程中，可以多看看《Thinking in Java》这本书，对面向对象的讲解非常透彻。可惜的是我学习的时候，并没有看到这本书，所以自己花了大量的时间，通过自己的尝试和揣摩来学会的。 <BR><BR>　　第四步就是开始熟悉Java的类库。Java的基础类库其实就是JDK安装目录下面jre\lib\rt.jar这个包。学习基础类库就是学习rt.jar。基础类库里面的类非常非常多。据说有3000多个，我没有统计过。但是真正对于我们来说最核心的只有4个，分别是 <BR><BR>　　java.lang.*; <BR><BR>　　java.io.*; <BR><BR>　　java.util.*; <BR><BR>　　java.sql.*; <BR><BR>　　这四个包的学习，每个包的学习都可以写成一本厚厚的教材，而O´reilly也确实是这样做的。我觉得如果时间比较紧，是不可能通过读四本书来学习。我觉得比较好的学习方法是这样的： <BR><BR>　　首先要通读整个package的框架，了解整个package的class，interface，exception的构成，最好是能够找到介绍整个包框架的文章。这些专门介绍包的书籍的前几章应该就是这些总体的框架内容介绍。 <BR><BR>　　对包整体框架的把握并不是要熟悉每个类的用法，记住它有哪些属性，方法。想记也记不住的。而是要知道包有哪些方面的类构成的，这些类的用途是什么，最核心的几个类分别是完成什么功能的。我在给人培训的时候一般是一次课讲一个包，所以不可能详细的介绍每个类的用法，但是我反复强调，我给你们讲这些包的不是要告诉你们类的方法是怎么调用的，也不要求你们记住类的方法调用，而是要你们了解，Java给我们提供了哪些类，每个类是用在什么场合，当我遇到问题的时候，我知道哪个类，或者哪几个类的组合可以解决我的问题，That´all！，当我们具体写程序的时候，只要你知道该用哪个类来完成你的工作就足够了。编码的时候，具体的方法调用，是边写代码，边查Documentation，所有的东西都在Documentation里面，不要求你一定记住，实际你也记不住3000多个类的总共将近10万个方法调用。所以对每个包的总体框架的把握就变得极为重要。 <BR><BR>　　第五步，通过上面的学习，如果学的比较扎实的话，就打好了Java的基础了，剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到这一步，Java的自学能力已经被培养出来了，可以到了直接学习Documentation的水平了。除了要做GUI编程之外，JDK里面其他会有用处的包是这些： <BR><BR>　　java.text.*; <BR><BR>　　java.net.*; <BR><BR>　　javax.naming.*; <BR><BR>　　这些包里面真正用的比较多的类其实很少，只有几个，所以不需要花很多时间。 <BR><BR>　　第六步，Java Web 编程 <BR><BR>　　Web编程的核心是HTTP协议，HTTP协议和Java无关，如果不熟悉HTTP协议的话，虽然也可以学好Servlet/JSP编程，但是达不到举一反三，一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话，又有了Java编程的良好的基础，学习Servlet/JSP简直易如反掌，我学习Servlet/JSP就用了不到一周的时间，然后就开始用JSP来做项目了。 <BR><BR>　　在Servlet/JSP的学习中，重头仍然是Servlet Documentation。Servlet API最常用的类很少，花比较少的时间就可以掌握了。把这些类都看一遍，多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过HTTP协议在Web Server和Brower之间交谈。另外对JSP，还需要熟悉几个常用JSP的标记，具体的写法记不住的话，临时查就是了。 <BR><BR>　　此外Java Web编程学习的重点要放在Web Application的设计模式上，如何进行业务逻辑的分析，并且进行合理的设计，按照MVC设计模式的要求，运用Servlet和JSP分别完成不同的逻辑层，掌握如何在Servlet和JSP之间进行流程的控制和数据的共享，以及Web Application应该如何配置和部署。 <BR><BR>　　第七步，J2EE编程 <BR><BR>　　以上的学习过程如果是比较顺利的话，进行到这一步，难度又陡然提高。因为上面的知识内容都是只涉及一个方面，而像EJB，JMS，JTA等核心的J2EE规范往往是几种Java技术的综合运用的结晶，所以掌握起来难度比较大。 <BR><BR>　　首先一定要学习好JNDI，JNDI是App Server定位服务器资源（EJB组件，Datasouce，JMS）查找方法，如果对JNDI不熟悉的话，EJB，JMS这些东西几乎学不下去。JNDI其实就是javax.naming.*这个包，运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置，就需要看看专门的文档规范了，比如web.xml的写法，ejb-jar.xml的写法等等。针对每种不同的App Server，还有自己的服务资源配置文件，也是需要熟悉的。 <BR><BR>　　然后可以学习JTA，主要是要理解JTA对于事务的控制的方法，以及该在什么场合使用JTA。这里可以简单的举个例子，我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setAutoCommit(false),....,conn.commit())，做为一个原子*作，但是假设我的业务需求是要把对两个不同数据库的*作做为一个原子*作，你能做的到吗？这时候只能用JTA了。假设*作过程是先往A数据库插一条记录，然后删除B数据库另一个记录，我们自己写代码是控制不了把整个*作做为一个原子*作的。用JTA的话，由App Server来完成控制。 <BR><BR>　　在学习EJB之前要学习对象序列化和RMI，RMI是EJB的基础。接着学习JMS和EJB，对于EJB来说，最关键是要理解EJB是如何通过RMI来实现对远端对象的调用的，以及在什么情况下要用到EJB。 <BR><BR>　　在学习完EJB，JMS这些东西之后，你可能会意识到要急不可待学习两个领域的知识，一个是UML，另一个是Design Pattern。Java企业软件的设计非常重视框架(Framework)的设计，一个好的软件框架是软件开发成功的必要条件。在这个时候，应该开始把学习的重点放在设计模式和框架的学习上，通过学习和实际的编程经验来掌握EJB的设计模式和J2EE的核心模式。 <BR><BR>　　J2EE规范里面，除了EJB，JMS，JTA，Servlet/JSP，JDBC之外还有很多很多的企业技术，这里不一一进行介绍了。 <BR><BR>　　另外还有一个最新领域Web Services。Web Services也完全没有任何新东西，它像是一种黏合剂，可以把不同的服务统一起来提供一个统一的调用接口，作为使用者来说，我只要获得服务提供者给我的WSDL（对服务的描述），就够了，我完全不知道服务器提供者提供的服务究竟是EJB组件，还是.Net组件，还是什么CORBA组件，还是其他的什么实现，我也不需要知道。Web Services最伟大的地方就在于通过统一的服务提供方式和调用方式，实现了整个Internet服务的共享，是一个非常令人激动的技术领域。Web Services好像目前还没有什么很好的书籍，但是可以通过在网络上面查资料的方式来学习。 <BR><BR>Java学习路径三篇 <BR><BR>Java学习路径（一）工具篇 <BR><BR>一、 JDK (Java Development Kit) <BR><BR>　　JDK是整个Java的核心，包括了Java运行环境（Java Runtime Envirnment），一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK，除了Sun之外，还有很多公司和组织都开发了自己的JDK，例如IBM公司开发的JDK，BEA公司的Jrocket，还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM（Java Virtual Machine）运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说，我们还是需要先把Sun JDK掌握好。 <BR><BR>　　1、 JDK的下载和安装 <BR><BR>　　JDK又叫做J2SE（Java2 SDK Standard Edition），可以从Sun的Java网站上下载到，http://java.sun.com/j2se/downloads.html ，JDK当前最新的版本是J2SDK1.4.2，建议下载该版本的JDK，下载页面在这里：http://java.sun.com/j2se/1.4.2/download.html。 <BR><BR>　　下载好的JDK是一个可执行安装程序，默认安装完毕后会在C:\Program Files\Java\目录下安装一套JRE（供浏览器来使用），在C:\j2sdk1.4.2下安装一套JDK（也包括一套JRE）。然后我们需要在环境变量PATH的最前面增加java的路径C:\j2sdk1.4.2\bin。这样JDK就安装好了。 <BR><BR>　　2、 JDK的命令工具 <BR><BR>　　JDK的最重要命令行工具： <BR><BR>　　java： 启动JVM执行class <BR><BR>　　javac： Java编译器 <BR><BR>　　jar： Java打包工具 <BR><BR>　　javadoc： Java文档生成器 <BR><BR>　　这些命令行必须要非常非常熟悉，对于每个参数都要很精通才行。对于这些命令的学习，JDK Documentation上有详细的文档。 <BR><BR>　　二、 JDK Documentation <BR><BR>　　Documentation在JDK的下载页面也有下载连接，建议同时下载Documentation。Documentation是最最重要的编程手册，涵盖了整个Java所有方面的内容的描述。可以这样说，学习Java编程，大部分时间都是花在看这个Documentation上面的。我是随身携带的，写Java代码的时候，随时查看，须臾不离手。 <BR><BR>　　三、 应用服务器(App Server) <BR><BR>　　App Server是运行Java企业组件的平台，构成了应用软件的主要运行环境。当前主流的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的Jboss，选择其中一个进行学习就可以了，个人推荐Weblogic，因为它的体系结构更加干净，开发和部署更加方便，是Java企业软件开发人员首选的开发平台。下面简要介绍几种常用的App Server： <BR><BR>　　1、 Tomcat <BR><BR>　　Tomcat严格意义上并不是一个真正的App Server，它只是一个可以支持运行Serlvet/JSP的Web容器，不过Tomcat也扩展了一些App Server的功能，如JNDI，数据库连接池，用户事务处理等等。Tomcat被非常广泛的应用在中小规模的Java Web应用中，因此本文做一点下载、安装和配置Tomcat的介绍： <BR><BR>　　Tomcat是Apache组织下Jakarta项目下的一个子项目，它的主网站是：http://jakarta.apache.org/tomcat/ ，Tomcat最新版本是Tomcat5.0.16，软件下载的连接是：http://www.apache.org/dist/jakarta/tomcat-5/v5.0.16/ 。 <BR><BR>　　下载Tomcat既可以直接下载zip包，也可以下载exe安装包（个人建议zip更干净些），不管哪种情况，下载完毕安装好以后（zip直接解压缩就可以了）。需要设置两个环境变量： <BR><BR>　　JAVA_HOME=C:\j2sdk1.4.2 <BR><BR>　　CATALINA_HOME=D:\tomcat4 (你的Tomcat安装目录) <BR><BR>　　这样就安装好了，启动Tomcat运行CATALINA_HOME\bin\startup.bat，关闭Tomcat运行shutdown.bat脚本。Tomcat启动以后，默认使用8080端口，因此可以用浏览器访问http://localhost:8080来测试Tomcat是否正常启动。 <BR><BR>　　Tomcat提供了两个Web界面的管理工具，URL分别是： <BR><BR>　　http://localhost:8080/admin/index.jsp <BR><BR>　　http://localhost:8080/manager/html <BR><BR>　　在启用这两个管理工具之前，先需要手工配置一下管理员用户和口令。用一个文本工具打开CATALINA_HOME\conf\tomcat-users.xml这个文件，加入如下几行： <BR><BR>　　&lt;role rolename="manager"/&gt; <BR>　　&lt;role rolename="admin"/&gt; <BR>　　&lt;user username="robbin" password="12345678" roles="admin,manager,tomcat"/&gt; <BR><BR>　　这样用户“robbin”就具备了超级管理员权限。重新启动Tomcat以后，你就可以使用该用户来登陆如上的两个管理工具，通过Web方式进行Tomcat的配置和管理了。 <BR><BR>　　2、 BEA Weblogic <BR><BR>　　Weblogic可以到BEA的网站上免费注册之后下载到Weblogic8.1企业版，License可以免费使用1年时间，其实这已经完全足够了。Weblogic的下载连接：http://commerce.bea.com/index.jsp，Weblogic的在线文档：http://edocs.bea.com/ 。 <BR><BR>　　3、 IBM Webshpere <BR><BR>　　Websphere同样可以下载到免费的试用版本，到IBM的developerWorks网站可以看到Websphere试用产品的下载和相关的Websphere的资料，developerWorks中文网站的连接是：http://www-900.ibm.com/developerWorks/cn/wsdd/ ，Websphere的下载连接：http://www7b.software.ibm.com/wsdd/downloads/WASsupport.html 。 <BR><BR>　　4、 Jboss <BR><BR>　　Jboss是免费开源的App Server，可以免费的从Jboss网站下载：http://www.jboss.org/index.html，然而Jboss的文档是不免费，需要花钱购买，所以为我们学习Jboss设置了一定的障碍。在Jdon上有几篇不错的Jboss配置文档，可以用来参考：http://www.jdon.com/idea.html <BR><BR>　　四、 Java应用的运行环境 <BR><BR>　　Java的应用可以简单分为以下几个方面： <BR><BR>　　1、 Java的桌面应用 <BR><BR>　　桌面应用一般仅仅需要JRE的支持就足够了。 <BR><BR>　　2、 Java Web应用 <BR><BR>　　Java的Web应用至少需要安装JDK和一个web容器（例如Tomcat），以及一个多用户数据库，Web应用至少分为三层： <BR><BR>　　Browser层：浏览器显示用户页面 <BR><BR>　　Web层：运行Servlet/JSP <BR><BR>　　DB层：后端数据库，向Java程序提供数据访问服务 <BR><BR>　　3、 Java企业级应用 <BR><BR>　　企业级应用比较复杂，可以扩展到n层，最简单情况会分为4层： <BR><BR>　　Browser层：浏览器显示用户页面 <BR><BR>　　Client层：Java客户端图形程序（或者嵌入式设备的程序）直接和Web层或者EJB层交互 <BR><BR>　　Web层：运行Servlet/JSP <BR><BR>　　EJB层：运行EJB，完成业务逻辑运算 <BR><BR>　　DB层：后端数据库，向Java程序提供数据访问服务 <BR><BR>　　4、 Java嵌入式应用 <BR><BR>　　Java嵌入式应用是一个方兴未艾的领域，从事嵌入式开发，需要从Sun下载J2ME开发包，J2ME包含了嵌入式设备专用虚拟机KVM，和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。 <BR><BR><BR><FONT color=#ff0000>Java学习路径（二）书籍篇 <BR></FONT><BR>学习一门新的知识，不可能指望只看一本，或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。 <BR><BR>　　在这里我只想补充一点看法，很多人学习Java是从《Thinking in Java》这本书入手的，但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Java的整个体系，而是一种跳跃式的写作方法，是一种类似tips的方法来对Java很多知识点进行了深入的分析和解释。 <BR><BR>　　对于初学者来说，最好是找一本Java入门的书籍，但是比较完整的循序的介绍Java的语法，面向对象的特性，核心类库等等，在看这本书的同时，可以同步来看《Thinking in Java》，来加深对Java的理解和原理的运用，同时又可以完整的了解Java的整个体系。 <BR><BR>　　对于Java的入门书籍，蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition》 或者《Java in a Nutshell,2nd Edition（针对C++背景）》，我并没有看过这两本书。其实我觉得电子工业出版社的《Java 2编程详解》或者《Java 2从入门到精通》就很不错。 <BR><BR>　　在所有的Java书籍当中，其实最最有用的，并不是O´reilly的 Java Serials，真正最最有用处是JDK的Documentation！几乎你想获得的所有的知识在Documentation里面全部都有，其中最主要的部分当然是Java基础类库的API文档，是按照package来组织的，对于每一个class都有详细的解释，它的继承关系，是否实现了某个接口，通常用在哪些场合，还可以查到它所有的public的属性和方法，每个属性的解释，意义，每个方法的用途，调用的参数，参数的意义，返回值的类型，以及方法可能抛出的异常等等。可以这样来说，所有关于Java编程方面的书籍其实都不过是在用比较通俗易懂的语言，和良好的组织方式来介绍Documentation里面的某个package里面包含的一些类的用法而已。所以万变不离其宗，如果你有足够的能力来直接通过Documentation来学习Java的类库，那么基本上就不需要看其他的书籍了。除此之外，Documentation也是编程必备的手册，我的桌面上有三个Documentation的快捷方式，分别是J2SDK1.4.1的Documentation，Servlet2.3的Documentation和J2SDKEE1.3.1的Documentation。有了这个三个Documentation，什么其他的书籍都不需要了。 <BR><BR>　　对于Java Web 编程来说，最核心的是要熟悉和掌握HTTP协议，这个就和Java无关了，在熟悉HTTP协议之后，就需要熟悉Java的实现HTTP协议的类库，也就是Servlet API，所以最重要的东西就是Servlet API。当然对于初学者而言，直接通过Servlet API来学习Web编程有很大的难度，我推荐O´reilly的《Java Server Pages 》这本书来学习Web 编程。 <BR><BR>　EJB的书籍当中，《Enterprise Java Beans?, 2nd Edition》是一本很不错的书， EJB的学习门槛是比较高，入门很难，但是这本书完全降低了学习的难度，特别重要的一点是，EJB的学习需要结合一种App Server的具体实现，所以在学习EJB的同时，必须同步的学习某种App Server，而这本书相关的出了三本书，分别是Weblogic6.1，Websphere4.0和JBoss3.0上面部署书中例子的实做。真是既有理论，又有实践。在学习EJB的同时，可以边看边做，EJB的学习会变得很轻松。 <BR><BR>　　但是这本书也有一个问题，就是版本比较旧，主要讲EJB1.1规范和部分EJB2.0的规范。而Ed Roman写的《Mastering EJB 2.0》这本书完全是根据EJB2.0规范写的，深入浅出，覆盖了EJB编程的各个方面，并且还有很多编程经验tips，也是学习EJB非常推荐的书籍之一。 <BR><BR>　　如果是结合Weblogic来学习J2EE的话，《J2EE应用与BEA Weblogic Server》绝对是首选读物，虽然是讲述的Weblogic6.0，仍然值得购买，这本书是BEA官方推荐的教材，作者也是BEA公司的工程师。现在中文版已经随处可见了。这本书结合Weblogic介绍了J2EE各个方面的技术在Weblogic平台上的开发和部署，实践指导意义非常强。 <BR><BR>　　在掌握了Java平台基础知识和J2EE方面的知识以后，更进一步的是学习如何运用OO的方法进行软件的设计，那么就一定要学习“设计模式”。Sun公司出版了一本《J2EE核心模式》，是每个开发Java企业平台软件的架构师必备的书籍。这本书全面的介绍了J2EE体系架构的各种设计模式，是设计师的必读书籍。 <BR><BR><BR><FONT color=#ff0000>Java学习路径（三）过程篇 <BR></FONT><BR>每个人的学习方法是不同的，一个人的方法不见得适合另一个人，我只能是谈自己的学习方法。因为我学习Java是完全自学的，从来没有问过别人，所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法，只能给大家提供一点参考了。 <BR><BR>　　学习Java的第一步是安装好JDK，写一个Hello World， 其实JDK的学习没有那么简单，关于JDK有两个问题是很容易一直困扰Java程序员的地方：一个是CLASSPATH的问题，其实从原理上来说，是要搞清楚JRE的ClassLoader是如何加载Class的；另一个问题是package和import问题，如何来寻找类的路径问题。把这两个问题摸索清楚了，就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的《Java深度历险》，对这两个问题进行了深入的探讨。 <BR>　　第二步是学习Java的语法。Java的语法是类C++的，基本上主流的编程语言不是类C，就是类C++的，没有什么新东西，所以语法的学习，大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法，public，protected，private，static，什么时候用，为什么要用，怎么用，这可能需要有人来指点一下，我当初是完全自己琢磨出来的，花了很久的时间。不过后来我看到《Thinking in Java》这本书上面是讲了这些概念的。 <BR><BR>　　第三步是学习Java的面向对象的编程语言的特性的地方。比如继承，构造器，抽象类，接口，方法的多态，重载，覆盖，Java的异常处理机制。对于一个没有面向对象语言背景的人来说，我觉得这个过程需要花很长很长时间，因为学习Java之前没有C++的经验，只有C的经验，我是大概花了一个月左右吧，才彻底把这些概念都搞清楚，把书上面的例子反复的揣摩，修改，尝试，把那几章内容反复的看过来，看过去，看了不下5遍，才彻底领悟了。不过我想如果有C++经验的话，应该一两天时间足够了。那么在这个过程中，可以多看看《Thinking in Java》这本书，对面向对象的讲解非常透彻。可惜的是我学习的时候，并没有看到这本书，所以自己花了大量的时间，通过自己的尝试和揣摩来学会的。 <BR><BR>　　第四步就是开始熟悉Java的类库。Java的基础类库其实就是JDK安装目录下面jre\lib\rt.jar这个包。学习基础类库就是学习rt.jar。基础类库里面的类非常非常多。据说有3000多个，我没有统计过。但是真正对于我们来说最核心的只有4个，分别是 <BR><BR>　　java.lang.*; <BR><BR>　　java.io.*; <BR><BR>　　java.util.*; <BR><BR>　　java.sql.*; <BR><BR>　　这四个包的学习，每个包的学习都可以写成一本厚厚的教材，而O´reilly也确实是这样做的。我觉得如果时间比较紧，是不可能通过读四本书来学习。我觉得比较好的学习方法是这样的： <BR><BR>　　首先要通读整个package的框架，了解整个package的class，interface，exception的构成，最好是能够找到介绍整个包框架的文章。这些专门介绍包的书籍的前几章应该就是这些总体的框架内容介绍。 <BR><BR>　　对包整体框架的把握并不是要熟悉每个类的用法，记住它有哪些属性，方法。想记也记不住的。而是要知道包有哪些方面的类构成的，这些类的用途是什么，最核心的几个类分别是完成什么功能的。我在给人培训的时候一般是一次课讲一个包，所以不可能详细的介绍每个类的用法，但是我反复强调，我给你们讲这些包的不是要告诉你们类的方法是怎么调用的，也不要求你们记住类的方法调用，而是要你们了解，Java给我们提供了哪些类，每个类是用在什么场合，当我遇到问题的时候，我知道哪个类，或者哪几个类的组合可以解决我的问题，That´all！，当我们具体写程序的时候，只要你知道该用哪个类来完成你的工作就足够了。编码的时候，具体的方法调用，是边写代码，边查Documentation，所有的东西都在Documentation里面，不要求你一定记住，实际你也记不住3000多个类的总共将近10万个方法调用。所以对每个包的总体框架的把握就变得极为重要。 <BR><BR>　　第五步，通过上面的学习，如果学的比较扎实的话，就打好了Java的基础了，剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到这一步，Java的自学能力已经被培养出来了，可以到了直接学习Documentation的水平了。除了要做GUI编程之外，JDK里面其他会有用处的包是这些： <BR><BR>　　java.text.*; <BR><BR>　　java.net.*; <BR><BR>　　javax.naming.*; <BR><BR>　　这些包里面真正用的比较多的类其实很少，只有几个，所以不需要花很多时间。 <BR><BR>　　第六步，Java Web 编程 <BR><BR>　　Web编程的核心是HTTP协议，HTTP协议和Java无关，如果不熟悉HTTP协议的话，虽然也可以学好Servlet/JSP编程，但是达不到举一反三，一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话，又有了Java编程的良好的基础，学习Servlet/JSP简直易如反掌，我学习Servlet/JSP就用了不到一周的时间，然后就开始用JSP来做项目了。 <BR><BR>　　在Servlet/JSP的学习中，重头仍然是Servlet Documentation。Servlet API最常用的类很少，花比较少的时间就可以掌握了。把这些类都看一遍，多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过HTTP协议在Web Server和Brower之间交谈。另外对JSP，还需要熟悉几个常用JSP的标记，具体的写法记不住的话，临时查就是了。 <BR><BR>　　此外Java Web编程学习的重点要放在Web Application的设计模式上，如何进行业务逻辑的分析，并且进行合理的设计，按照MVC设计模式的要求，运用Servlet和JSP分别完成不同的逻辑层，掌握如何在Servlet和JSP之间进行流程的控制和数据的共享，以及Web Application应该如何配置和部署。 <BR><BR>　　第七步，J2EE编程 <BR><BR>　　以上的学习过程如果是比较顺利的话，进行到这一步，难度又陡然提高。因为上面的知识内容都是只涉及一个方面，而像EJB，JMS，JTA等核心的J2EE规范往往是几种Java技术的综合运用的结晶，所以掌握起来难度比较大。 <BR><BR>　　首先一定要学习好JNDI，JNDI是App Server定位服务器资源（EJB组件，Datasouce，JMS）查找方法，如果对JNDI不熟悉的话，EJB，JMS这些东西几乎学不下去。JNDI其实就是javax.naming.*这个包，运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置，就需要看看专门的文档规范了，比如web.xml的写法，ejb-jar.xml的写法等等。针对每种不同的App Server，还有自己的服务资源配置文件，也是需要熟悉的。 <BR><BR>　　然后可以学习JTA，主要是要理解JTA对于事务的控制的方法，以及该在什么场合使用JTA。这里可以简单的举个例子，我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setAutoCommit(false),....,conn.commit())，做为一个原子*作，但是假设我的业务需求是要把对两个不同数据库的*作做为一个原子*作，你能做的到吗？这时候只能用JTA了。假设*作过程是先往A数据库插一条记录，然后删除B数据库另一个记录，我们自己写代码是控制不了把整个*作做为一个原子*作的。用JTA的话，由App Server来完成控制。 <BR><BR>　　在学习EJB之前要学习对象序列化和RMI，RMI是EJB的基础。接着学习JMS和EJB，对于EJB来说，最关键是要理解EJB是如何通过RMI来实现对远端对象的调用的，以及在什么情况下要用到EJB。 <BR><BR>　　在学习完EJB，JMS这些东西之后，你可能会意识到要急不可待学习两个领域的知识，一个是UML，另一个是Design Pattern。Java企业软件的设计非常重视框架(Framework)的设计，一个好的软件框架是软件开发成功的必要条件。在这个时候，应该开始把学习的重点放在设计模式和框架的学习上，通过学习和实际的编程经验来掌握EJB的设计模式和J2EE的核心模式。 <BR><BR>　　J2EE规范里面，除了EJB，JMS，JTA，Servlet/JSP，JDBC之外还有很多很多的企业技术，这里不一一进行介绍了。 <BR><BR>　　另外还有一个最新领域Web Services。Web Services也完全没有任何新东西，它像是一种黏合剂，可以把不同的服务统一起来提供一个统一的调用接口，作为使用者来说，我只要获得服务提供者给我的WSDL（对服务的描述），就够了，我完全不知道服务器提供者提供的服务究竟是EJB组件，还是.Net组件，还是什么CORBA组件，还是其他的什么实现，我也不需要知道。Web Services最伟大的地方就在于通过统一的服务提供方式和调用方式，实现了整个Internet服务的共享，是一个非常令人激动的技术领域。Web Services好像目前还没有什么很好的书籍，但是可以通过在网络上面查资料的方式来学习。 <BR></FONT><img src ="http://www.blogjava.net/zool/aggbug/3484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-19 19:01 <a href="http://www.blogjava.net/zool/archive/2005/04/19/3484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Java新手上路大全(问问题之前请先看)</title><link>http://www.blogjava.net/zool/archive/2005/04/19/3482.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 19 Apr 2005 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/19/3482.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3482.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/19/3482.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3482.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3482.html</trackback:ping><description><![CDATA[<FONT color=#ff0000 size=2>Helloworld功略<BR><IMG src="http://www.matrix.org.cn/images/small/url.gif" align=absMiddle></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=84" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=84</FONT></A><BR><BR><FONT size=2><FONT color=red>path和classpath</FONT><BR>1.什么是java的path和classpath?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=904" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=904</FONT></A><BR><FONT size=2>2.如何一次把一个目录下的所有.jar加入到classpath?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=905" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=905</FONT></A><BR><FONT size=2>3.classspath&nbsp;的默认值是什么?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=906" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=906</FONT></A><BR><FONT size=2>4.怎样找到程序运行需要的类?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=907" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=907</FONT></A><BR><FONT size=2>5.&nbsp;Linux下Path和ClassPath是怎么设的?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=908" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=908</FONT></A><BR><FONT size=2>6.如何修改path和classpath?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=909" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=909</FONT></A><BR><BR><FONT size=2><FONT color=red>java的帮助和api文档</FONT><BR>1.什么是java的api参考?<BR>api是html格式的从sun的网站上可以找到一个包<BR>包括api的参考和user&nbsp;guide,本站有做成.chm格式的便于查找。<BR>api参考是用jdk的工具javadoc&nbsp;生成的是开发者必备的文档。<BR>2.哪里有JAVA基本类库的源代码?<BR>jdk的安装目录下有源码src.zip<BR>3.java&nbsp;web&nbsp;start&nbsp;是干什么用的?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=911" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=911</FONT></A><BR><BR><FONT size=2><FONT color=red>开发环境</FONT><BR>1.jre下的lib和jdk下的lib到底有什么区别？<BR>jre是JDK的一个子集。提供一个运行环境。JDK的lib目录是给JDK用的，例如JDK下有一些工具，可能要用该目录中的文件。例如，编译器等。JRE的lib目录是为JVM，运行时候用的。包括所有的标准类苦，和扩展类<BR>2.我的jbuilder光标对不齐?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=913" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=913</FONT></A><BR><FONT size=2>3.JDK版本冲突怎么办?<BR>要决定windows使用哪一个JDK（win2000），改注册表：<BR>HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java&nbsp;Development&nbsp;Kit\CurrentVersion<BR>的值，要决定JBuilder使用哪个JDK在project&nbsp;properties中可以设置。<BR>4.editplus能够编译java嘛?&nbsp;如何设置?<BR>&nbsp;&nbsp;&nbsp;&nbsp;先要将JAVA的运行环境安装并且调试好。<BR>&nbsp;&nbsp;&nbsp;&nbsp;首先，从菜单“工具（Tools）”-&gt;“配置用户工具...”进入用户工具设置。<BR>&nbsp;&nbsp;&nbsp;&nbsp;在类别里展开“工具”树形菜单-&gt;“用户工具”，选择“组和工具项目”中的“Group&nbsp;1”，点击面板右边的“组名称...”按钮，将文本“Group1”修改成“编译JAVA程序”。<BR>&nbsp;&nbsp;&nbsp;&nbsp;然后选择修改的组“编译JAVA程序”，点击“添加新工具”按钮，选择程序，建立“新建程序”，选中它。<BR>&nbsp;&nbsp;&nbsp;&nbsp;然后就是最重要的步骤（修改属性）：<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.1&nbsp;添加编译功能&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;“菜单文字”里的内容修改为“JAVAC”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;“命令”选择安装JDK后的BIN目录中的编译程序JAVAC.EXE，如果JDK&nbsp;安装路径为“c:\jdk”，那么此路径为“c:\jdk\bin\javac.exe”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;“参数”选择“文件名称”，即显示为“$(FileName)”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;“初始目录”选择“文件目录”，显示为“$(FileDir)”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;选择“捕获输出”复选框。<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.2&nbsp;添加执行功能<BR>&nbsp;&nbsp;&nbsp;&nbsp;“菜单文字”里的内容修改为“JAVA”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;“命令”选择安装JDK后的BIN目录中的编译程序JAVA.EXE，路径为“c:\jdk\bin\java.exe”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;“参数”选择“文件名（不含扩展名）”，即显示为“$(FileNameNoExt)”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;“初始目录”选择“文件目录”，显示为“$(FileDir)”；<BR>&nbsp;&nbsp;&nbsp;&nbsp;选择“捕获输出”复选框。<BR>&nbsp;&nbsp;&nbsp;&nbsp;这样就完成了基本的配置工作<BR><BR><FONT color=red>基础概念</FONT><BR>1.public,private,protect的访问机制<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=914" target=_blank><BR><FONT size=2><IMG src="http://www.matrix.org.cn/images/small/url.gif" align=absMiddle></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=914" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=914</FONT></A></A><BR><FONT size=2>2.Java中如何定义一个常量？<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=915" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=915</FONT></A><BR><FONT size=2>3.异常的throw和throws有什么区别<BR>throw是在程序中抛出异常，而throws是在方法的声明中声明抛出异常<BR>4.upcasting是什么意思<BR>upcasting就是上溯.也就是说把一个子类当作它的父类看待,比如:对方法void&nbsp;do(Object&nbsp;obj){...},你可以把任何对象作为参数来调用.<BR><BR><FONT color=red>编译运行</FONT><BR>1.怎么把多个.java源文件编译成一个.class?<BR>java&nbsp;-d&nbsp;.&nbsp;a.java&nbsp;b.java<BR>2.&nbsp;depreciated&nbsp;API&nbsp;是什么意思?<BR>java发展太快,所以你应该尽可能用最新的api,但是老的api还是兼容的,所以回waning&nbsp;你deprecated&nbsp;api<BR>3.怎么样编译一个目录下的所有java文件？<BR>ant或者jbuilder,或者自己写脚本.<BR>4.如何让执行程序时不会出现dos窗口?<BR>javaw<BR>5.如何运行jar文件?<BR>java&nbsp;-jar&nbsp;***.jar<BR>6.如何去掉JAVA的内存限制<BR>加&nbsp;-Xmx参数来设置maximum&nbsp;Java&nbsp;heap&nbsp;size,如:&nbsp;java&nbsp;-Xms10M&nbsp;MyClass<BR>7.什么是Java混淆编译器?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=916" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=916</FONT></A><BR><FONT size=2>8.如何将Java应用程序本地编译为EXE?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=917" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=917</FONT></A><BR><FONT size=2>9.jar命令?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=918" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=918</FONT></A><BR><BR><FONT size=2><FONT color=red>数据类型与转换</FONT><BR>1.int、char、double与byte如何相互转换?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=919" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=919</FONT></A><BR><FONT size=2>2.int与byte&nbsp;array之间的转换程序?<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=920" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=920</FONT></A><BR><FONT size=2>3.string和int之间的转换?<BR>a1=Integer.parseInt(s1);<BR>s1=Integer.toString(a1);<BR>4.java如何获得随机整数?<BR>首先利用random()获得一个随机浮点数，然后乘以你希望得到的整数<BR>的最大值，最后对得到的结果取整。<BR>5.怎么把String类型转换成16进制的整数?<BR>&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[]){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;x&nbsp;=&nbsp;"0x300C8";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;y&nbsp;=&nbsp;Integer.decode(x).intvalue();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(y);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>6.int和java.lang.Integer有和区别?<BR>int是数据类型，Integer是类Integer的功能更强，可以将整数转换为浮点数运算，在java这种强类型语言中是很有用的。可以利用Integer的构造函数Integer(int)来对一个整数建立对象。类似的类还有Float,Short,Long等等<BR><BR><FONT color=red>数据结构</FONT><BR>1.如何实现二维向量?<BR>Vector&nbsp;vector1=new&nbsp;Vector();<BR>Vector&nbsp;vector2=new&nbsp;Vector();<BR>...<BR>..<BR>HashTable&nbsp;numbers=new&nbsp;HashTable();<BR>numbers.put("vector1",vector1);<BR>numbers.put("vector2",vector2);<BR>2.&nbsp;JAVA中怎么得到现在的系统时间?<BR>比如,当前date,Date&nbsp;today=new&nbsp;Date(System.currentTimeMillis());<BR>3.如何将java.util.Date转化为java.sql.Date?<BR>转化：<BR>&nbsp;<BR>java.sql.Date&nbsp;sd;<BR>java.util.Date&nbsp;ud;<BR>//initialize&nbsp;the&nbsp;ud&nbsp;such&nbsp;as&nbsp;ud&nbsp;=&nbsp;new&nbsp;java.util.Date();<BR>&nbsp;<BR>sd&nbsp;=&nbsp;new&nbsp;java.sql.Date(ud.getTime());<BR>&nbsp;<BR>如果要插入到数据库并且相应的字段为Date类型<BR>那么可以用PreparedStatement.setDate(int&nbsp;,java.sql.Date)方法<BR>其中的java.sql.Date可以用上面的方法得到<BR>&nbsp;<BR>也可以用数据库提供TO_DATE函数<BR>比如&nbsp;现有&nbsp;ud<BR>TO_DATE(new&nbsp;SimpleDateFormat().format(ud,"yyyy-MM-dd&nbsp;HH:mm:ss"),<BR>"YYYY-MM-DD&nbsp;HH24:MI:SS")<BR>注意java中表示格式和数据库提供的格式的不同<BR><BR><FONT color=red>系统相关</FONT><BR>1.在JAVA中如何启动一个程序?<BR>String&nbsp;strCommand;<BR>String&nbsp;cmd&nbsp;=&nbsp;"cmd";<BR>if&nbsp;(!&nbsp;System.getProperty("os.name").equals("Windows&nbsp;NT"))&nbsp;cmd&nbsp;=&nbsp;"command";<BR>cmd&nbsp;=&nbsp;cmd&nbsp;+&nbsp;"&nbsp;/c&nbsp;"&nbsp;+&nbsp;strCommand;<BR>try&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Runtime.getRuntime().exec(cmd);<BR>}<BR>catch&nbsp;(IOException&nbsp;ex)&nbsp;{<BR>}<BR>&nbsp;<BR>strCommand&nbsp;为命令串，DOS&nbsp;底下怎么用，这儿就可以怎么用<BR>2.如何得到应用程序的路径<BR>Properties&nbsp;System.getProperties()里面有<BR>3.如何得到当前系统时间?<BR>&nbsp;&nbsp;&nbsp;1.SimpleDateFormat&nbsp;formatter=new&nbsp;SimpleDateFormat("yyyy-MM-dd");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;time=formatter.format(new&nbsp;Date());<BR>&nbsp;&nbsp;&nbsp;&nbsp;2.Calendar&nbsp;cal&nbsp;=&nbsp;Calendar.getInstance();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;year&nbsp;=&nbsp;cal.get(Calendar.YEAR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;month=..类推<BR><BR><BR><FONT color=red>输入输出</FONT><BR>1.是否可以用纯JAVA&nbsp;编写程序来访问串口?<BR>Sun提供了一个叫javax.comm的package,专门用来对serial&nbsp;port进行操作.<BR>2.writeutf和write的区别<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=921" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=921</FONT></A><BR><FONT size=2>3.如何利用FileWriter在文本中换行？<BR>\r\n<BR><BR><FONT color=red>网络相关</FONT><BR>1.如何让我的程序通过proxy访问外部网络?<BR>System.setProperty("java.proxyHost","your&nbsp;proxy&nbsp;here");&nbsp;<BR><BR><FONT color=red>本地相关</FONT><BR>1.如何调用本地的dll？<BR>&nbsp;&nbsp;jni<BR>2.如何用java编写扫描仪程序？<BR></FONT><A href="http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=2741" target=_blank><FONT size=2>http://www.matrix.org.cn/forum_view.asp?forum_id=19&amp;view_id=2741</FONT></A><BR><img src ="http://www.blogjava.net/zool/aggbug/3482.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-19 18:01 <a href="http://www.blogjava.net/zool/archive/2005/04/19/3482.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA初学[zool笔记整理](1)</title><link>http://www.blogjava.net/zool/archive/2005/04/19/3480.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 19 Apr 2005 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/19/3480.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3480.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/19/3480.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3480.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3480.html</trackback:ping><description><![CDATA[<P><FONT color=#808080 size=2><FONT color=#ff0000>几个概念:</FONT><BR>1.IDE&nbsp;:JAVA编译器,知道的有eclipse&nbsp;&nbsp; ,JCreator Pro .<BR>2.J2EE&nbsp;:J2EE全称为Java2 Platform, Enterprise Edition。J2EE平台本质上是一个分布式的服务器应用程序设计环境,用来建立电子商务程序.<BR>3.java web start 的作用:就是随时连接网络更新你的JAVA版本.</FONT></P><img src ="http://www.blogjava.net/zool/aggbug/3480.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-19 17:49 <a href="http://www.blogjava.net/zool/archive/2005/04/19/3480.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA基础--技术文章列表</title><link>http://www.blogjava.net/zool/archive/2005/04/19/3452.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 19 Apr 2005 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/19/3452.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3452.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/19/3452.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3452.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3452.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JAVA基础--技术文章列表 主栏目分栏目文章标题文章发布时间JAVA技术JAVA基础全面了解jar问题2005-01-19JAVA技术JAVA基础Java学习路径（一）工具篇2005-01-19JAVA技术JAVA基础HelloWorld 攻略2005-01-19JAVA技术...&nbsp;&nbsp;<a href='http://www.blogjava.net/zool/archive/2005/04/19/3452.html'>阅读全文</a><img src ="http://www.blogjava.net/zool/aggbug/3452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-19 11:46 <a href="http://www.blogjava.net/zool/archive/2005/04/19/3452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java,FAQ</title><link>http://www.blogjava.net/zool/archive/2005/04/19/3451.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 19 Apr 2005 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/19/3451.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3451.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/19/3451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3451.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3451.html</trackback:ping><description><![CDATA[一、入门<BR>1、下载和安装J2SDK&nbsp;&nbsp;&nbsp;&nbsp;<A href="http://java.sun.com/j2se/1.4.1/download.html"><A href="http://java.sun.com/j2se/1.4.1/download.html" target=_blank>http://java.sun.com/j2se/1.4.1/download.html</A></A><BR>2&nbsp;&nbsp;JAVA VM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="http://www.java.com/en/index.jsp"><A href="http://www.java.com/en/index.jsp" target=_blank>http://www.java.com/en/index.jsp</A></A> <BR>3&nbsp;&nbsp;API&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="http://java.sun.com/api/index.html"><A href="http://java.sun.com/api/index.html" target=_blank>http://java.sun.com/api/index.html</A></A><BR>1 首先下载J2SDK安装&nbsp;&nbsp;<BR>&nbsp;&nbsp;a&nbsp;&nbsp;更新PATH环境变量<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了能在任何目录下都能执行java命令（如javac、java、 等），需要将java的bin目录放入PATH环&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;境变量中。 对于Windows95/98, 打开“开始”菜单、选择“运行”、输入命令sysedit（调用系统配置编&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;辑程序），在C:\AUTOEXEC.BAT窗口中找到PATH设置并追加一项（c:\jdk1.3.1_01\bin）对于Windows NT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and Windows 2000 ，进入“开始”菜单，选择“设置/控制面板/系统”。对于Windows NT,选择“环境”&nbsp;&nbsp;&nbsp;&nbsp;页，对于Windows 2000，选择“高级”页，在环境变量设置中的用户变量栏中增加（如果原来没有PATH）&nbsp;&nbsp;&nbsp;&nbsp;或修改PATH环境变量，使其包含c:\jdk1.3.1_01\bin路径。<BR>&nbsp;&nbsp;b&nbsp;&nbsp; 更新CLASSPATH环境变量 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了使系统能找到用户定义的类，需要将用户类所在的目录（通常是当前目录即把 . 加入到&nbsp;&nbsp;&nbsp;&nbsp;classpath中）放入CLASSPATH变量中。具体更改方法同PATH修改过程，只是要找到 CLASSPATH环境&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 变量进行修改。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jdk Win2000下的环境变量设置<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="http://www.linuxdby.com/<a" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7045</A>&gt;<A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7045" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7045</A></A><BR>c&nbsp;&nbsp;&nbsp;&nbsp;确认系统安装<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在DOS提示符下，输入set命令可以查看PATH和CLASSPATH的设置是否成功 （ 如果是98者需运行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AUTOEXEC.BAT才能使修改的设置生效 如果是2000需把dos关闭重新运行 ）<BR>2 然后运行你的第一个java程序<BR>&nbsp;&nbsp; 写个类保存为.java文件&nbsp;&nbsp;一定记得如果是用记事本编辑器的话 保存时要选择保存类型为所有类型然后文件名字和你的类名字要一模一样&nbsp;&nbsp;或者也可以把类名.java加上引号就可以避免保存为.java.txt的类型了<BR><BR>3 常见错误处理 <BR>&nbsp;&nbsp;如果运行javac命令时出现can not read xxx.java 首先看看你的文件是否保存为.java.txt的类型了（右点文件看属性里的扩张名）&nbsp;&nbsp;重新保存 记得此时要把文件名.java加上引号 保存&nbsp;&nbsp; 。&nbsp;&nbsp;若运行java命令时提示exception in thread&nbsp;&nbsp;"main" java.lang.NoClassDefFoundErroe:的异常&nbsp;&nbsp;说明你的classpath里没有加入 .&nbsp;&nbsp;<BR><BR>二 、 常见错误<BR><BR>1&nbsp;&nbsp; can not read xxx.java<BR>&nbsp;&nbsp; 首先看看你的文件是否保存为.java.txt的类型了（右点文件看属性里的扩张名）&nbsp;&nbsp;重新保存 记得此时要把文件名.java加上引号 保存&nbsp;&nbsp; 。&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>2&nbsp;&nbsp; exception in thread&nbsp;&nbsp;"main" java.lang.NoClassDefFoundErroe:<BR>&nbsp;&nbsp; 说明你的classpath里没有加入 . <BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7233"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7233" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7233</A></A><BR><BR>3&nbsp;&nbsp; "=="和"equals()"的区别在哪里？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=16630&amp;show=0"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=16630&amp;show=0" target=_blank>http://www.chinajavaworld.net/forum/top...ic=16630&amp;show=0</A></A><BR><BR>4&nbsp;&nbsp; StringBuffer s1 = new StringBuffer("a");<BR>&nbsp;&nbsp; StringBuffer s2 = new StringBuffer("a");<BR>&nbsp;&nbsp; s1.equals(s2)//为什么是false<BR>&nbsp;&nbsp; String s1 = new String("a");<BR>&nbsp;&nbsp; String s2 = new String("a");<BR>&nbsp;&nbsp; s1.equals(s2)//为什么是true<BR><BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=14935"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=14935" target=_blank>http://www.chinajavaworld.net/forum/top...=20&amp;topic=14935</A></A><BR>&nbsp;&nbsp; String,和StringBuffer区别<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7007"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7007" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7007</A></A><BR><BR>5&nbsp;&nbsp; Java Web Start是什么？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=15868"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=15868" target=_blank>http://www.chinajavaworld.net/forum/top...=20&amp;topic=15868</A></A><BR><BR>6&nbsp;&nbsp; trim()函数的用法<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=10515"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=10515" target=_blank>http://www.chinajavaworld.net/forum/top...=20&amp;topic=10515</A></A><BR><BR>7&nbsp;&nbsp; 怎么提取系统时间?　　<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=734"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=734" target=_blank>http://www.chinajavaworld.net/forum/top...um=20&amp;topic=734</A></A><BR><BR>8&nbsp;&nbsp; 怎样让窗口始终在前<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=16587"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=16587" target=_blank>http://www.chinajavaworld.net/forum/top...=20&amp;topic=16587</A></A><BR><BR>9&nbsp;&nbsp; 日期的显示格式化<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=16750"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=16750" target=_blank>http://www.chinajavaworld.net/forum/top...=20&amp;topic=16750</A></A><BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 公历和阴历怎样转换？？？？？？？？？　　<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7101"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7101" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7101</A></A><BR>10&nbsp;&nbsp;静态和非静态的嵌套类有什么区别？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4721"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4721" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4721</A></A><BR><BR>11&nbsp;&nbsp;怎样判断输入的东东是字符还是数字啊?　　<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4687"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4687" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4687</A></A><BR><BR>12&nbsp;&nbsp;finalize()和System.gc()区别<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4656"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4656" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4656</A></A><BR><BR>13&nbsp;&nbsp;怎么键盘上输入2 ….竟印出50 ???&nbsp;&nbsp;System.in.read()用法<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4605"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4605" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4605</A></A><BR><BR>15&nbsp;&nbsp;类的多态　　<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4737"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4737" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4737</A></A><BR><BR>16&nbsp;&nbsp;如果一个程序包含了多个.java文件，而且他们是互相关联的，<BR>&nbsp;&nbsp; 现在要编译他们，该怎么办！<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=5000"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=5000" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=5000</A></A><BR><BR>17&nbsp;&nbsp;接口与类的讨论<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=5007"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=5007" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=5007</A></A><BR><BR>18&nbsp;&nbsp;关于汉字是怎么转成代码的？　　<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4991"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4991" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4991</A></A><BR><BR>19&nbsp;&nbsp;可不可以把JTextArea的内容一行一行读处来?　　<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4785"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4785" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4785</A></A><BR><BR>20&nbsp;&nbsp;两个日期的字符串怎么相加减<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4812"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4812" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4812</A></A><BR><BR>21&nbsp;&nbsp;"this"的功能和用处是什么？　　<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4780"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4780" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4780</A></A><BR><BR>22&nbsp;&nbsp;关于多态性和多级继承的问题　　<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4772"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=4772" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=4772</A></A><BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7154"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7154" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7154</A></A><BR><BR>23&nbsp;&nbsp;什么是面向对象的设计思想？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7069"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7069" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7069</A></A><BR><BR>24&nbsp;&nbsp;关于java内在类的一个问题<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=712"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=712" target=_blank>http://www.chinajavaworld.net/forum/top...um=20&amp;topic=712</A></A><BR><BR>25&nbsp;&nbsp;如何取得本机的IP<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7151"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7151" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7151</A></A><BR><BR>26&nbsp;&nbsp;throw和throws有什么区别呀？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7005"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7005" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7005</A></A><BR><BR>27&nbsp;&nbsp;在ｊａｖａ中为什么要引入抽象类这个问题？？<BR>&nbsp;&nbsp; 他的作用是什么，<BR>&nbsp;&nbsp; 有哪些优点？？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=160"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=160" target=_blank>http://www.chinajavaworld.net/forum/top...um=20&amp;topic=160</A></A><BR><BR>28&nbsp;&nbsp;final,private定义变量时表示什么意思<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7042"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7042" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7042</A></A><BR><BR>29&nbsp;&nbsp;java修饰符与字符输出的问题<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7054"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7054" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7054</A></A><BR><BR><BR>30&nbsp;&nbsp;什么是匿名类？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7070"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7070" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7070</A></A><BR><BR>31&nbsp;&nbsp;请问怎么样在一个APPLICATION 中运行硬盘上的另外一个可执行文件呢？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7066"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7066" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7066</A></A><BR><BR>32&nbsp;&nbsp;如何取今天日期???我想得到这样的格式:yyyy-mm--dd该怎么作？？？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7081"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7081" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7081</A></A><BR><BR>33&nbsp;&nbsp;十六进制如何转化为十进制？<BR>&nbsp;&nbsp; <A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7079"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7079" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7079</A></A><BR><BR>34&nbsp;&nbsp;怎样生成&nbsp;&nbsp;.jar文件？ <BR>&nbsp;&nbsp;<A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7073"><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=7073" target=_blank>http://www.chinajavaworld.net/forum/top...m=20&amp;topic=7073</A></A><BR><BR>35&nbsp;&nbsp;Final 是否可以继承覆盖<BR><A href="http://www.chinajavaworld.net/forum/topic.cgi?forum=20&amp;topic=25880&amp;show=0" target=_blank>http://www.chinajavaworld.net/forum/top...ic=25880&amp;show=0</A><BR><img src ="http://www.blogjava.net/zool/aggbug/3451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-19 11:42 <a href="http://www.blogjava.net/zool/archive/2005/04/19/3451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java经典答疑(全)</title><link>http://www.blogjava.net/zool/archive/2005/04/19/3447.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 19 Apr 2005 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/19/3447.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3447.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/19/3447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3447.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3447.html</trackback:ping><description><![CDATA[<P><FONT size=2>Q1.1 什么是Java、Java2、JDK？JDK后面的1.3、1.4版本号又是怎么回事？<BR>答：Java是一种通用的，并发的，强类型的，面向对象的编程语言（摘自Java规范第二版<BR>）。<BR>JDK是Sun公司分发的免费Java开发工具包，正式名称为J2SDK(Java2 Software Develop K<BR>it)。<BR>包括基本的java工具包和标准类库。<BR>到目前(2003年7月)为止，Java有3个主要版本，即1.0，1.1，2.0；<BR>JDK有1.0，1.1，1.2，1.3，1.4五个版本。<BR>从JDK1.2起，Sun公司觉得Java改变足够大而将java语言版本号提升为2.0。<BR>不同的JDK主要在于提供的类库不同。作为学习你可以下载最新的JDK1.4.2。<BR>真正开发时则应考虑向前兼容，比如1.3。下载请去</FONT><A href="http://java.sun.com/"><FONT size=2>http://java.sun.com</FONT></A><FONT size=2>。<BR>JDK1.5预计将在2004年推出，届时其中将包含若干崭新的特性。</FONT></P>
<P><FONT size=2>Q1.2 什么是JRE/J2RE？<BR>答：J2RE是Java2 Runtime Environment，即Java运行环境，有时简称JRE。<BR>如果你只需要运行Java程序或Applet，下载并安装它即可。<BR>如果你要自行开发Java软件，请下载JDK。在JDK中附带有JRE。<BR>注意由于Microsoft对Java的支持不完全，请不要使用IE自带的虚拟机来运行Applet，务必<BR>安装一个JRE或JDK。</FONT></P>
<P><FONT size=2>Q1.3 学习Java用什么工具比较好？<BR>答：作者建议首先使用JDK+文本编辑器，这有助你理解下列几个基础概念：path，classp<BR>ath，package <BR>并熟悉基本命令：javac和java。并且下载和你的JDK版本一致的API帮助。<BR>如果你不确定类或函数的用法，请先查阅API而不是发贴求助。<BR>当你熟悉Java之后，你可以考虑开始使用一个IDE。<BR>作者推荐eclipse，下载网址</FONT><A href="http://www.eclipse.org/"><FONT size=2>http://www.eclipse.org</FONT></A><FONT size=2>。因为eclispe是免费的，插件化的<BR>。<BR>eclispe的主要缺点是缺乏一个可视化的桌面程序开发工具，<BR>幸运的是IBM在2003年11月已经将部分代码捐给eclipse组织，可以预计这个缺点很快就会<BR>得到弥补。<BR>无论如何，请不要使用Microsoft的VJ++！众所周知Microsoft从来就没有认真支持过Java<BR>。<BR>最后但并非最不重要，要有一本好的参考书，并且英文要过关。</FONT></P>
<P><FONT size=2>Q1.4&nbsp; 学习Java有哪些好的参考书？<BR>答：作者首先推荐Thinking in Java，中文名《Java编程思想》，有中文版。<BR>目前的最新版本是第三版。<BR>在</FONT><A href="http://64.78.49.204/"><FONT size=2>http://64.78.49.204</FONT></A><FONT size=2>可以免费下载英文版。<BR>该书第一章介绍了很多面向对象的编程思想，作为新手应当认真阅读。<BR>除此以外，O'relly出版社和Wrox出版社的书也不错。作者本人不喜欢大陆作者的书。<BR>也许你觉得英文太难，但是网上大多数资料都是英文的。另外，你需要经常查阅API，而那<BR>也是英文的。</FONT></P>
<P><FONT size=2>Q1.5&nbsp; Java和C++哪个更好？<BR>答：这个问题是一个很不恰当的问题。你应该问：Java和C++哪个更适用于我的项目？<BR>Java的优点和缺点一样明显。<BR>跨平台是Java的主要优点，但代价是运行速度的下降。<BR>VC和Windows平台有良好的集成和足够快的速度，但是也只能局限在Windows平台上。<BR>和C++相比，Java学起来更快，开发人员不会碰到很多容易出错的特性。<BR>但是VB程序员甚至只需要拼装模块就可以了。</FONT></P>
<P><FONT size=2>Q1.6&nbsp; 什么是J2SE/J2EE/J2ME？<BR>答：J2SE就是一般的Java。<BR>J2ME是针对嵌入式设备的，比如支持Java的手机，它有自己的JRE和SDK。<BR>J2EE是一组用于企业级程序开发的规范和类库，它使用J2SE的JRE。<BR>Q2.1&nbsp; 我写了第一个Java程序，应该如何编译/运行？<BR>答：首先请将程序保存为xxx.java文件，注意你可能需要修改文件后缀名。<BR>然后在dos窗口下使用javac xxx.java命令，你会发现该目录下多了一个xxx.class文件，</FONT></P>
<P><FONT size=2>再使用java xxx命令，你的java程序就开始运行了。</FONT></P>
<P><FONT size=2>Q2.2&nbsp; 我照你说的做了，但是出现什么“'javac' 不是内部或外部命令，也不是可运行的<BR>程序或批处理文件。”。<BR>答：你遇到了path问题。操作系统在一定的范围(path)内搜索javac.exe，但是没能找到。</FONT></P>
<P><FONT size=2>请编辑你的操作系统环境变量，新增一个JAVA_HOME变量，设为你JDK的安装目录，<BR>再编辑Path变量，加上一项 %JAVA_HOME%\bin。<BR>然后保存并新开一个dos窗口，你就可以使用javac和java命令了。</FONT></P>
<P><FONT size=2>Q2.3&nbsp; 环境变量怎么设置？<BR>答：请向身边会设的人咨询。</FONT></P>
<P><FONT size=2>Q2.4&nbsp; 我在javac xxx.java的时候显示什么“unreported exception java.io.IOExcepti<BR>on;”。<BR>答：参见Q4.8以了解java中的异常机制。</FONT></P>
<P><FONT size=2>Q2.5&nbsp; javac xxx.java顺利通过了，但是java xxx的时候显示什么“NoClassDefFoundErr<BR>or”。<BR>答：1. 你遇到了classpath问题。java命令在一定的范围(classpath)内搜索你直接或间接<BR>使用的class文件，但是未能找到。<BR>首先请确认你没有错敲成java xxx.class，<BR>其次，检查你的CLASSPATH环境变量，其实你并不需要设置该变量，<BR>但如果你设置了该变量又没有包含.（代表当前目录）的项，<BR>你就会遇到这个问题。请在你的CLASSPATH环境变量中加入一项. 或干脆删掉这个变量。</FONT></P>
<P><FONT size=2>2. 如果你使用了并非JDK自带的标准包，比如javax.servlet.*包，也会遇到这个问题，请<BR>将相应的jar文件加入classpath。<BR>3. 如果你在java源文件中定义了package，请参见Q2.11。</FONT></P>
<P><BR><FONT size=2>Q2.6&nbsp; 我在java xxx的时候显示“Exception in thread "main" java.lang.NoSuchMetho<BR>dError: main”。<BR>答：首先，在你的程序中每个java文件有且只能有一个public类，<BR>这个类的类名必须和文件名的大小写完全一样。<BR>其次，在你要运行的类中有且只能有一个public static void main(String[] args)方法<BR>，<BR>这个方法就是你的主程序。</FONT></P>
<P><BR><FONT size=2>Q2.7&nbsp; 在java xxx的时候显示“Exception in thread "main" java.lang.NullPointerEx<BR>ception”。<BR>答：在程序中你试图在值为null的对象变量上调用方法，请检查你的程序确保你的对象被恰当的初始化。<BR>参见Q4.8以了解java中的异常机制。</FONT></P>
<P><BR><FONT size=2>Q2.8 package是什么意思？怎么用？<BR>答：为了唯一标识每个类并分组，java使用了package的概念。<BR>每个类都有一个全名，例如String的全名是java.lang.String，其中java.lang是包名，S<BR>tring是短名。按照java命名惯例，包名是全部小写的，而类名的第一个字母是大写的。<BR>这样，如果你自行定义了同样名字的类String，你可以把它放在mypackage中，<BR>通过使用全名mypackage.String和java.lang.String来区分这两个类。<BR>同时，将逻辑上相关的类放在同一个包中，可以使程序结构更为清楚。<BR>为了定义包，你要做的就是在java文件开头加一行“package mypackage;”。<BR>注意包没有嵌套或包含关系，mypackage包和mypackage.mysubpackage包对JRE来说是并列的两个包（虽然开发者可<BR>能暗示包含关系）。</FONT></P>
<P><FONT size=2>Q2.9 我没有声明任何package会怎么样？<BR>答：你的类被认为放在默认包中。这时全名和短名是一致的。</FONT></P>
<P><FONT size=2>Q2.10 在一个类中怎么使用其他类？<BR>答：如果你使用java.lang包或者默认包中的类，不用做任何事。<BR>如果你的类位于mypackage包中，并且要调用同一包中的其他类，也不用做任何事。<BR>如果你使用其他包中的类，在package声明之后，类声明之前使用import otherpackage1.Class<BR>1; 或 import otherpackage2.*;&nbsp; <BR>这里.*表示引入这个包中的所有类。然后在程序中你可以使用其他类的短名。<BR>如果短名间有重名冲突，必须使用全名来区分。<BR>注意在使用其他包中的类时，你只能使用public的类和接口，参见Q5.4。</FONT></P>
<P><FONT size=2>Q2.11 我用了package的时候显示"NoClassDefFoundError"，但是我把所有package去掉的<BR>时候能正常运行。<BR>答：将你的java文件按包名组织存放。<BR>比如你的工作目录是/work，你的类是package1.Class1，那么将它存放为/work/package1<BR>/Class1.java。<BR>如果没有声明包，那么直接放在/work下。<BR>在/work下执行javac package1/class1.java，再执行java package1.class1，你会发现一<BR>切正常。<BR>另外，如果你的类的个数已经多到了你需要使用包来组织的话，你可以考虑开始使用IDE。</FONT></P>
<P><FONT size=2>Q2.12 我想把java编译成exe文件，该怎么做？<BR>答：JDK只能将java源文件编译为class文件。<BR>class文件是一种跨平台的字节码，必须依赖平台相关的JRE来运行。Java以此来实现跨平<BR>台性。<BR>有些开发工具可以将java文件编译为exe文件。作者反对这种做法，因为这样就取消了跨平<BR>台性。<BR>如果你确信你的软件只在Windows平台上运行，你可以考虑使用C++/C#来编程。</FONT></P>
<P><FONT size=2>Q2.13 我在编译的时候遇到什么"deprecated API"，是什么意思？<BR>答：所谓deprecated是指已经过时，但是为了向前兼容起见仍然保留的方法。<BR>这些方法可能会在以后取消支持。你应当改用较新的方法。<BR>在API里面会说明你应当用什么方法来代替之。<BR></FONT></P>
<P><FONT size=2>Q3.1 我怎么给java程序加启动参数，就像dir /p/w那样？<BR>答：还记得public static void main(String[] args)吗？这里的args就是你的启动参数<BR>。<BR>在运行时你输入java package1.class1 arg1 arg2，args中就会有两个String，第一个是<BR>arg1，第二个是arg2。</FONT></P>
<P><FONT size=2>Q3.2 我怎么从键盘输入一个int/double/字符串？<BR>答：java的I/O操作比C++要复杂一点。如果要从键盘输入，样例代码如下：<BR>BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) );</FONT></P>
<P><FONT size=2>String s = cin.readLine();<BR>这样你就获得了一个字符串，如果你需要数字的话再使用：<BR>int n = Integer.parseInt( s ); 或者 double d = Double.parseDouble( s );<BR>来将字符串"534"转换成int或double。</FONT></P>
<P><FONT size=2>Q3.3 我怎么输出一个int/double/字符串？<BR>答：使用System.out.println(n)或者System.out.println("Hello")等等。</FONT></P>
<P><FONT size=2>Q3.4 我发现有些书上直接用System.in输入，比你要简单得多。<BR>答：java使用unicode，是双字节。而System.in是单字节的stream。<BR>如果你要输入双字节文字比如中文，请使用作者的做法。</FONT></P>
<P><FONT size=2>Q3.5 我怎么从文件输入/输出一个int/double/字符串？<BR>答：类似于从键盘输入，只不过换成<BR>BufferedReader fin = new BufferedReader( new FileReader(" myFileName " ) );<BR>PrintWriter fout = new PrintWriter( new FileWriter(" myFileName " ) );<BR>另外如果你还没下载API，请开始下载并阅读java.io包中的内容。</FONT></P>
<P><FONT size=2>Q3.6 我想读写文件的指定位置，该怎么办？<BR>答：java.io.RandomAccessFile可以满足你的需要。</FONT></P>
<P><FONT size=2>Q3.7 怎么判断要读的文件已经到了尽头？<BR>答：在Reader的read方法中明确说明返回-1表示流的结尾。</FONT></P>
<P><FONT size=2>四、 关键字篇</FONT></P>
<P><FONT size=2>Q4.1&nbsp; java里面怎么定义宏？<BR>答：java不支持宏，因为宏代换不能保证类型安全。<BR>如果你需要定义常量，可以将它定义为某个类的static final成员。参见Q4.2和Q4.6。</FONT></P>
<P><BR><FONT size=2>Q4.2&nbsp; java里面没法用const。<BR>答：你可以用final关键字。例如 final int m = 9。被声明为final的变量不能被再次赋<BR>值。唯一的例外是所谓blank final，如下例所示：<BR>public class MyClass1 {<BR>&nbsp;&nbsp;&nbsp; private final int a = 3;<BR>&nbsp;&nbsp;&nbsp; private final int b; // blank final</FONT></P>
<P><FONT size=2>&nbsp;&nbsp;&nbsp; public MyClass1() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = 5; // 不合法，final变量不能被再次赋值。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = 4; // 合法，这是b第一次被赋值。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = 6; // 不合法，b不能被再次赋值。<BR>&nbsp;&nbsp;&nbsp; }<BR>}<BR>final也可以用于声明方法或类，被声明为final的方法或类不能被继承。<BR>注意const是java的保留字以备扩充。</FONT></P>
<P><FONT size=2>Q4.3&nbsp; java里面也不能用goto。<BR>答：甚至在面向过程的语言中你也可以完全不用goto。请检查你的程序流程是否合理。</FONT></P>
<P><FONT size=2>如果你需要从多层循环中迅速跳出，java增强了（和C++相比）break和continue的功能，<BR>支持label。<BR>例如：<BR>outer : <BR>while( ... )<BR>{<BR>&nbsp;inner :<BR>&nbsp;for( ... )<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...&nbsp;&nbsp; break inner; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... continue outer; ...<BR>&nbsp;}<BR>}<BR>和const一样，goto也是java的保留字以备扩充。</FONT></P>
<P><FONT size=2>Q4.4&nbsp; java里面能不能重载操作符？<BR>答：不能。String的+号是唯一一个内置的重载操作符。你可以通过定义接口和方法来实现<BR>类似功能。</FONT></P>
<P><FONT size=2>Q4.5&nbsp; 我new了一个对象，但是没法delete掉它。<BR>答：java有自动内存回收机制，即所谓Garbarge Collection。你不需要删除对象。你再也<BR>不用担心指针错误，内存溢出了。</FONT></P>
<P><FONT size=2>Q4.6&nbsp; 我想知道为什么main方法必须被声明为public static？为什么在main方法中不能调<BR>用非static成员？<BR>答：声明为public是为了这个方法可以被外部调用，详情见Q5.4。<BR>static是为了将某个成员变量/方法关联到类（class）而非实例（instance）。<BR>你不需要创建一个对象就可以直接使用这个类的static成员，因而在static成员中不能调<BR>用非static成员，因为后者是关联到对象实例（instance）的。<BR>在A类中调用B类的static成员可以使用B.staticMember的写法。<BR>注意一个类的static成员变量是唯一的，被所有该类对象所共享的，在多线程程序设计中尤其要谨慎小心。<BR>类的static成员是在类第一次被JRE装载的时候初始化的。<BR>你可以使用如下方法来使用非static成员：<BR>public class A<BR>{<BR>&nbsp;&nbsp;&nbsp; private void someMethod() //非static成员<BR>&nbsp;&nbsp;&nbsp; {}<BR>&nbsp;&nbsp;&nbsp; public static void main(String args)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A a = new A();&nbsp; //创建一个对象实例<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.someMethod();&nbsp; //现在你可以使用非static方法了<BR>&nbsp;&nbsp;&nbsp; }<BR>}</FONT></P>
<P><BR><FONT size=2>Q4.7&nbsp; throw和throws有什么不同？<BR>答：throws用于方法声明中，声明一个方法会抛出哪些异常。而throw是在方法体中实际执行抛出异常的<BR>动作。<BR>如果你在方法中throw一个异常，却没有在方法声明中声明之，编译器会报错。<BR>注意Error和RuntimeException的子类是例外，无需特别声明。</FONT></P>
<P><FONT size=2>Q4.8&nbsp; 什么是异常？<BR>答：异常最早在Ada语言中引入，用于在程序中动态处理错误并恢复。<BR>你可以在方法中拦截底层异常并处理之，也可以抛给更高层的模块去处理。<BR>你也可以抛出自己的异常指示发生了某些不正常情况。常见的拦截处理代码如下：<BR>try<BR>{<BR>&nbsp;......//以下是可能发生异常的代码<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...... //异常被你或低层API抛出，执行流程中断并转向拦截代码。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...... <BR>}<BR>catch(Exception1 e) //如果Exception1是Exception2的子类并要做特别处理，应排在前<BR>面<BR>{<BR>&nbsp; //发生Exception1时被该段拦截<BR>}<BR>catch(Exception2 e)<BR>{<BR>&nbsp; //发生Exception2时被该段拦截<BR>}<BR>finally //这是可选的<BR>{<BR>&nbsp;&nbsp; //无论异常是否发生，均执行此段代码<BR>&nbsp;&nbsp; //即使在catch段中又向外抛出了新的exception，finally段也会得到执行。<BR>}</FONT></P>
<P><FONT size=2>5.1&nbsp; extends和implements有什么煌?BR&gt;答：对于class而言，extends用于（单）继承一个类（class），而implements用于实现一个接口（interf<BR>ace）。<BR>interface的引入是为了部分地提供多继承的功能。<BR>在interface中只需声明方法头，而将方法体留给实现的class来做。<BR>这些实现的class的实例完全可以当作interface的实例来对待。<BR>在interface之间也可以声明为extends（多继承）的关系。<BR>注意一个interface可以extends多个其他interface。</FONT></P>
<P><FONT size=2>Q5.2&nbsp; java怎么实现多继承？<BR>答：java不支持显式的多继承。<BR>因为在显式多继承的语言例如c++中，会出现子类被迫声明祖先虚基类构造函数的问题，</FONT></P>
<P><FONT size=2>而这是违反面向对象的封装性原则的。<BR>java提供了interface和implements关键字来部分地实现多继承。参见Q5.1。</FONT></P>
<P><FONT size=2>Q5.3 abstract是什么？<BR>答：被声明为abstract的方法无需给出方法体，留给子类来实现。<BR>而如果一个类中有abstract方法，那么这个类也必须声明为abstract。<BR>被声明为abstract的类无法实例化，尽管它可以定义构造方法供子类使用。</FONT></P>
<P><FONT size=2>Q5.4 public,protected,private有什么不同？<BR>答：这些关键字用于声明类和成员的可见性。<BR>public成员可以被任何类访问，<BR>protected成员限于自己和子类访问，<BR>private成员限于自己访问。<BR>Java还提供了第四种的默认可见性，一般称为package private，当没有任何public,protected,private修饰符时，成员<BR>是同一包内可见。<BR>类可以用public或默认来修饰。</FONT></P>
<P><FONT size=2>Q5.5 Override和Overload有什么不同？<BR>答：Override是指父类和子类之间方法的继承关系，这些方法有着相同的名称和参数类型<BR>。<BR>Overload是指同一个类中不同方法（可以在子类也可以在父类中定义）间的关系，<BR>这些方法有着相同的名称和不同的参数类型。</FONT></P>
<P><BR><FONT size=2>Q5.6 我继承了一个方法，但现在我想调用在父类中定义的方法。<BR>答：用super.xxx()可以在子类中调用父类方法。</FONT></P>
<P><FONT size=2>Q5.7 我想在子类的构造方法中调用父类的构造方法，该怎么办？<BR>答：在子类构造方法的第一行调用super(...)即可。</FONT></P>
<P><FONT size=2>Q5.8 我在同一个类中定义了好几个构造方法并且想在一个构造方法中调用另一个。<BR>答：在构造方法第一行调用this(...)。</FONT></P>
<P><FONT size=2>Q5.9 我没有定义构造方法会怎么样？<BR>答：自动获得一个无参数的构造方法。</FONT></P>
<P><FONT size=2>Q5.10 我调用无参数的构造方法失败了。<BR>答：如果你至少定义了一个构造方法，就不再有自动提供的无参数的构造方法了。<BR>你需要另外显式定义一个无参数的构造方法。<BR>另外一种可能是你的构造方法或者类不是public的，参见Q5.4了解java中的可见性。</FONT></P>
<P><FONT size=2>Q5.11 我该怎么定义类似于C++中的析构方法（destructor）？<BR>答：提供一个void finalize()方法。在Garbarge Collector回收该对象时会调用该方法。</FONT></P>
<P><FONT size=2>注意实际上你很难判断一个对象会在什么时候被回收。作者从未感到需要用到该方法。</FONT></P>
<P><BR><FONT size=2>Q5.12 我想将一个父类对象转换成一个子类对象该怎么做？<BR>答：强制类型转换。如<BR>public void meth(A a)<BR>{<BR>&nbsp;B b = (B)a;<BR>}<BR>如果a实际上并不是B的实例，会抛出ClassCastException。所以请确保a确实是B的实例。</FONT></P>
<P><BR><FONT size=2>Q5.13 其实我不确定a是不是B的实例，能不能分情况处理？<BR>答：可以使用instanceof操作符。例如<BR>if( a instanceof B )<BR>{<BR>&nbsp;B b = (B)a;<BR>}<BR>else<BR>{<BR>&nbsp;...<BR>}</FONT></P>
<P><FONT size=2>Q5.14 我在方法里修改了一个对象的值，但是退出方法后我发现这个对象的值没变！<BR>答：很可能你把传入参数重赋了一个新对象，例如下列代码就会造成这种错误：<BR>public void fun1(A a) //a是局部参数，指向了一个外在对象。<BR>{<BR>&nbsp;a = new A(); //a指向了一个新对象，和外在对象脱钩了。如果你要让a作为传出变量，<BR>不要写这一句。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.setAttr(attr);//修改了新对象的值，外在对象没有被修改。<BR>}<BR>基本类型也会出现这种情况。例如：<BR>public void fun2(int a)<BR>{<BR>&nbsp;a = 10;//只作用于本方法，外面的变量不会变化。<BR>}</FONT></P>
<P><FONT size=2></FONT>&nbsp;</P>
<P><FONT size=2>Q6.1 java能动态分配数组吗？<BR>答：可以。例如int n = 3; Language[] myLanguages = new Language[n];</FONT></P>
<P><FONT size=2>Q6.2 我怎么知道数组的长度？<BR>答：用length属性。如上例中的&nbsp; myLanguages.length 就为 3。</FONT></P>
<P><FONT size=2>Q6.3 我还想让数组的长度能自动改变，能够增加/删除元素。<BR>答：用顺序表--java.util.List接口。<BR>你可以选择用ArrayList或是LinkedList，前者是数组实现，后者是链表实现。<BR>例如：&nbsp; List list = new ArrayList(); 或是 List list = new LinkedList();&nbsp; 。</FONT></P>
<P><FONT size=2>Q6.4 什么是链表？为什么要有ArrayList和LinkedList两种List？<BR>答：请补习数据结构。</FONT></P>
<P><FONT size=2>Q6.5 我想用队列/栈。<BR>答：用java.util.LinkedList。</FONT></P>
<P><FONT size=2>Q6.6 我希望不要有重复的元素。<BR>答：用集合--java.util.Set接口。例如：Set set = new HashSet()。</FONT></P>
<P><FONT size=2>Q6.7 我想遍历集合/Map。<BR>答：用java.util.Iterator。参见API。</FONT></P>
<P><FONT size=2>Q6.8 我还要能够排序。<BR>答：用java.util.TreeSet。例如：Set set = new TreeSet()。放进去的元素会自动排序<BR>。<BR>你需要为元素实现Comparable接口，还可能需要提供equals()方法，compareTo()方法，h<BR>ashCode()方法。</FONT></P>
<P><FONT size=2>Q6.9 但是我想给数组排序。<BR>答：java.util.Arrays类包含了sort等实用方法。</FONT></P>
<P><FONT size=2>Q6.10 我想按不同方式排序。<BR>答：为每种方式定义一个实现了接口Comparator的排序类并和Arrays或TreeSet综合运用。</FONT></P>
<P><BR><FONT size=2>Q6.11 Map有什么用？<BR>答：存储key-value的关键字-值对，你可以通过关键字来快速存取相应的值。</FONT></P>
<P><FONT size=2>Q6.12 set方法没问题，但是get方法返回的是Object。<BR>答：强制类型转换成你需要的类型。参见Q5.12。</FONT></P>
<P><FONT size=2>Q6.13 ArrayList和Vector有什么不同？HashMap和Hashtable有什么不同？<BR>答：ArrayList和HashMap是多线程不安全的，在多个线程中访问同一个ArrayList对象可能<BR>会引起冲突并导致错误。<BR>而Vector和Hashtable是多线程安全的，即使在多个线程中同时访问同一个Vector对象也不<BR>会引起差错。<BR>看起来我们更应该使用Vector和Hashtable，但是实际上Vector和Hashtable的性能太差，<BR>所以如果你不在多线程中使用的话，还是应该用ArrayList和HashMap。</FONT></P>
<P><FONT size=2>Q6.14 我要获得一个随机数。<BR>答：使用java.util.Random类。</FONT></P>
<P><FONT size=2>Q6.15 我比较两个String总是false，但是它们明明都是"abc" ！<BR>答：比较String一定要使用equals或equalsIgnoreCase方法，不要使用 == ！<BR>==比较的是两个引用（变量）是否指向了同一个对象，而不是比较其内容。</FONT></P>
<P><FONT size=2>Q6.16 我想修改一个String但是在String类中没找到编辑方法。<BR>答：使用StringBuffer类。<BR>String str = "......."; //待处理的字符串<BR>StringBuffer buffer = new StringBuffer(str); //使用该字符串初始化一个StringBuf<BR>fer<BR>buffer.append("..."); //调用StringBuffer的相关API来编辑字符串<BR>String str2 = buffer.toString(); //获得编辑后的字符串。<BR>另外，如果你需要将多个字符串连接起来，请尽量避免使用+号直接连接，而是使用Strin<BR>gBuffer.append()方法。</FONT></P>
<P><FONT size=2>Q6.17 我想处理日期/时间。<BR>答：使用java.util.Date类。你可以使用java.text.SimpleDateFormat类来在String和Da<BR>te间互相转换。<BR>SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //规<BR>定日期格式<BR>Date date = formatter.parse("2003-07-26 18:30:35"); //将符合格式的String转换为<BR>Date<BR>String s = formatter.format(date); //将Date转换为符合格式的String<BR>关于定义日期格式的详细信息请参见API。</FONT></P><img src ="http://www.blogjava.net/zool/aggbug/3447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-19 11:16 <a href="http://www.blogjava.net/zool/archive/2005/04/19/3447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE准备篇</title><link>http://www.blogjava.net/zool/archive/2005/04/19/3446.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Tue, 19 Apr 2005 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/19/3446.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3446.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/19/3446.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3446.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3446.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1 什么是J2EE？它和普通的Java有什么不同？答：J2EE全称为Java2 Platform, Enterprise Edition。“J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境，它提供了：·宿主应用的一个运行基础框架环境。·一套用来创建应用的Java扩展API。”（引自《J2EE服务器端高级编程》） 2 J2EE好学吗？答：J2EE是很多技术的集合体，并且...&nbsp;&nbsp;<a href='http://www.blogjava.net/zool/archive/2005/04/19/3446.html'>阅读全文</a><img src ="http://www.blogjava.net/zool/aggbug/3446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-19 11:11 <a href="http://www.blogjava.net/zool/archive/2005/04/19/3446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java电子书籍 </title><link>http://www.blogjava.net/zool/archive/2005/04/18/3399.html</link><dc:creator>zool</dc:creator><author>zool</author><pubDate>Mon, 18 Apr 2005 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/zool/archive/2005/04/18/3399.html</guid><wfw:comment>http://www.blogjava.net/zool/comments/3399.html</wfw:comment><comments>http://www.blogjava.net/zool/archive/2005/04/18/3399.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zool/comments/commentRss/3399.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zool/services/trackbacks/3399.html</trackback:ping><description><![CDATA[<P><FONT face="verdana, arial, helvetica" size=2>所有的电子书籍都存放在电子图书与IT文档资料版块：<BR><BR><A href="http://www.itpub.net/forumdisplay.php?s=&amp;daysprune=&amp;forumid=61&amp;x=8&amp;y=4" target=_blank>http://www.itpub.net/forumdisplay.p...umid=61&amp;x=8&amp;y=4</A><BR><BR>但是添加图书的时候可以定义标签：<BR><BR>Java基础：<A href="http://www.itpub.net/quintessence.php?forumid=61&amp;typeid=111" target=_blank>http://www.itpub.net/quintessence.p...d=61&amp;typeid=111</A><BR><BR>Java框架：<A href="http://www.itpub.net/quintessence.php?forumid=61&amp;typeid=112" target=_blank>http://www.itpub.net/quintessence.p...d=61&amp;typeid=112</A><BR><BR>J2EE：<A href="http://www.itpub.net/quintessence.php?forumid=61&amp;typeid=113" target=_blank>http://www.itpub.net/quintessence.p...d=61&amp;typeid=113</A><BR><BR>J2ME：<A href="http://www.itpub.net/quintessence.php?forumid=61&amp;typeid=114" target=_blank>http://www.itpub.net/quintessence.p...d=61&amp;typeid=114</A><BR><BR>分析设计：<A href="http://www.itpub.net/quintessence.php?forumid=61&amp;typeid=115" target=_blank>http://www.itpub.net/quintessence.p...d=61&amp;typeid=115</A><BR><BR>C/C++：<A href="http://www.itpub.net/quintessence.php?forumid=61&amp;typeid=116" target=_blank>http://www.itpub.net/quintessence.p...d=61&amp;typeid=116</A><BR><BR>数据库设计：<A href="http://www.itpub.net/quintessence.php?forumid=61&amp;typeid=117" target=_blank>http://www.itpub.net/quintessence.p...d=61&amp;typeid=117</A></FONT></P><img src ="http://www.blogjava.net/zool/aggbug/3399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zool/" target="_blank">zool</a> 2005-04-18 11:03 <a href="http://www.blogjava.net/zool/archive/2005/04/18/3399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>