Java 入门 FAQ
此文档收集了初学 Java 常会遇到的问题,由斑竹定期更新。
问问题前请先看此文档,也许有帮助。
[color=blue:8cd14efaf9]关于学习方法的一些忠告:[/color:8cd14efaf9]
-----------------------------------------------------------------------------------
1.多看书,多写程序,这点最重要,基础很重要,推荐去考 scjp
2.关注 jakarta 里的 java 项目,里面有大量的优秀的 java 项目
http://jakarta.apache.org/
象 struts, cocoon ,log4j, taglib, jdo 都代表了 java 的前沿技术
3.多分析,学习别人的程序(比如 sun blueprint 的 petstore,sourceforge 里的java 项目),学习别人怎么写程序的。
4.学习软件工程,用面向对象的思想,分析设计系统,学会控制自己开发过程。
5.学会看英文,要不你是跟不上的。
-----------------------------------------------------------------------------------
软件下载好去处:
http://www.code-labs.com/tools/
[color=blue:8cd14efaf9]第一次编写 Java 程序请看这两篇文章:[/color:8cd14efaf9]
Java新手必读[转帖]
http://www.chinaunix.net/forum/viewtopic.php?t=128194
java入门,建议看看把(自 nyra 姐的一篇精彩文章
http://www.chinaunix.net/forum/viewtopic.php?t=128217
[color=blue:8cd14efaf9]HelloWorld 程序:[/color:8cd14efaf9]
http://www.cv64.org/computing/installation/java101.html
学会在网络上搜索:
http://www.google.com
http://bingle.pku.edu.cn (北大天网搜索引擎)
[color=blue:8cd14efaf9]哪里还有更好的 java 论坛:[/color:8cd14efaf9]
www.jdon.com J道论坛,一个严谨的技术论坛,上面经常有一些比较新的java技术和j2ee技术的讨论;
www.chinajavaword.net chinajavaword技术论坛,有比较多的技术讨论和学习方法的讨论,不过没有j道严谨。
国外站点:
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi
[color=blue:8cd14efaf9]一些软件的安装指南:[/color:8cd14efaf9]
http://www.cv64.org/computing/installation/
[color=blue:8cd14efaf9]问:入门书籍推荐[/color:8cd14efaf9]
答:Java Tutorial: http://java.sun.com/docs/books/tutorial/index.html
《21天学通java》 ftp://cinc.3322.org/pub/doc/java/newtojava/tyjava.pdf
《jbuilder开发人员指南》 ftp://cinc.3322.org/pub/doc/java/jbuilder开发人员指南/
http://www.oreilly.com.tw/sleepless/index.htm
Java 2 - The Complete Reference
Java 核_心系列
[color=blue:8cd14efaf9]推荐 java 书:《Effective Java中文版 》[/color:8cd14efaf9]
适合中级 java 读者,如果你认为你已经基本掌握了 java 的语法,可以
编出一些象样的 java 程序,为了更好的应用 java 提供的功能,请阅读此书。 china-pub 的介绍
http://www.china-pub.com/computers/common/info.asp?id=8645
去看看书评。
[color=blue:8cd14efaf9]问:哪里有 Java 的文档资料[/color:8cd14efaf9]
答:Java doc 主页: http://java.sun.com/docs/
Java Tutorial: http://java.sun.com/docs/books/tutorial/index.html
JDK 1.4.1 API & Language Documentation: http://java.sun.com/j2se/1.4.1/docs/index.html#api
http://java.sun.com/j2se/1.4.1/download.html#docs
JAVA程序员必读:基础篇 http://wwwb.pconline.com.cn/pcedu/empolder/java.htm
[color=blue:8cd14efaf9]问:Java 的命令行如何使用,有无详细的介绍?像 javac, java, jar, rmic ...[/color:8cd14efaf9]
答:JavaTM 2 SDK Tools and Utilities: http://java.sun.com/j2se/1.3/docs/tooldocs/tools.html
[color=blue:8cd14efaf9]问:哪里可以下载到 JDK, JRE, J2EE[/color:8cd14efaf9]
答: Java Home ( JDK, JRE for Windows, Linux, Solaris
http://java.sun.com/j2se/downloads.html
http://java.sun.com/j2ee/download.html
Blckdown Mirror ( JDK, JRE for Linux and FreeBSD :
ftp://metalab.unc.edu/pub/linux/devel/lang/java/
Java for Sco Unix
http://www.caldera.com/developers/java/
国内下载
http://freesoft.online.sh.cn/mirrors/java/
[color=blue:8cd14efaf9]问:FreeBSD 下如何安装 jdk[/color:8cd14efaf9]
答:安装 jdk for freebsd ,然后设置 JAVA_HOME 和 CLASSPATH 到环境变量就可以乐。
如果用 FreeBSD 5.x 可以下载一个 port 来装。
如果 FreeBSD 4.x 可以用 blackdown 的 jdk
http://www.blackdown.org/
不过 java 在 FreeBSD 4.x 下的性能好像不是很好,不知道 FreeBSD 5.x 不知道怎样。
[color=blue:8cd14efaf9]问:JDBC 下载地址:[/color:8cd14efaf9]
答:
Microsoft SQL Server 2000 JDBC驱动程序
http://www.microsoft.com/china/sql/downloads/2000/jdbc.asp
[color=blue:8cd14efaf9]问:J2EE和J2SE,J2ME有什么区别[/color:8cd14efaf9]
答: http://www.21cmm.com/newswe/jjj.htm
[color=blue:8cd14efaf9]问:书写 Java 程序的规范[/color:8cd14efaf9]
答:Code Conversion: SUN 推荐的书写 Java 程序的格式和规范
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
包括如何命名(文件,类,方法),各种语句的格式,文档的写法。。。
Java Coding Style Guide
ftp://cinc.3322.org/pub/doc/java/CodingStandard/java-style.pdf
[color=blue:8cd14efaf9]问:我在使用某某函数时出现问题,哪里有该函数的帮助文件?[/color:8cd14efaf9]
答:JavaTM 2 Platform, Standard Edition, v 1.4.2 API & Language Documentation
http://java.sun.com/j2se/1.4.2/docs/index.html#api
[color=blue:8cd14efaf9]问:推荐使用的可视化 Java 开发工具[/color:8cd14efaf9]
答:Borland JBuilder
JCreator,这个软件可以从 www.jcreator.com 下载。
eclipse http://www.eclipse.com/
IntelliJ Idea : 强大的 java ide,集成了 ant, junit, refactoring 的功能
[color=blue:8cd14efaf9]问:JBuilder 光标位置好像不对[/color:8cd14efaf9]
答:设置成任何字体都可以,关键要做的就是重新设置
菜单 -> Tools -> Editor Options -> Display -> Edit Font
设置成任何字体都可以,关键要做的就是重新设置
[color=blue:8cd14efaf9]问:编译时出现:
类 Main 是公共的(public),应该在名为 Main.java 的文件中被声明
public class Main{
1个错误[/color:8cd14efaf9]
答:类名和存放的文件名必须一致,注意大小写。
Java 有规定:一个 .java 源文件只能定义一个 public 的类(和多个非 public 的 类),
且文件名必须与这个 public 的类名一致。
[color=blue:8cd14efaf9]问:运行时出现 NoClassDefFoundError,请问为何(源程序 Welcome.java 可以编译)?[/color:8cd14efaf9]
答:1. 运行 java Welcome ,而不是 java Welcome.class
2. 如果设置了 CLASSPATH 变量,在 CLASSPATH 里把当前目录添加进去
象这样:CLASSPATH=.;e:\ant\lib\ant.jar (注意那个点“.”)
或者把 CLASSPATH 环境变量去掉。
注意:每次修改完环境变量,要重新打开 MS-DOS 窗口才能生效
答:另一种解决办法:
javac someClass.java
java -classpath . someClass
[color=blue:8cd14efaf9]问:deprecated 警告:[/color:8cd14efaf9]
"XXX.java": Warning #: 368 : constructor String(byte[], int, int, int)
in class java.lang.String has been deprecated at line 45, column 24
答:deprecated 是警告,告诉你这个方法也就是过时的方法,它可能淘汰,也可能
被其它功能更强的方法代替了,去看看 java api doc 里关于这个方法的描述。
java api doc: http://java.sun.com/j2se/1.4.1/docs/api/index.html
[color=blue:8cd14efaf9]问:Windows 下如何设置 环境变量,如 JAVA_HOME[/color:8cd14efaf9]
答: Windows 2000/xp 做如下操作:我的电脑 -> 属性 -> 高级 -> 环境变量 -> 用户变量
设置 JAVA_HOME 为你安装 JDK 的目录,比如: c:\jdk (确认有 c:\jdk\bin\java 这个文件)
注意:每次修改完环境变量,要重新打开 MS-DOS 窗口才能生效
win9x:Autoexec(DOS界面下边也行)--> set classpath=JDK包路径;set path=JDK包路径
[color=blue:8cd14efaf9]问:Linux, Unix 下如何配置环境变量[/color:8cd14efaf9]
答:sh, bash 下
PATH=$PATH:/usr/local/jdk/bin; export PATH
CLASSPATH=/usr/local/oracle/jdbc/classes12.zip;/usr/local/ant/lib/ant.jar;.
export CLASSPATH
或者将上面的语句加入 .profile, .shrc
csh, tcsh 下
set path = ($path /usr/local/jdk/bin)
或者将上面的语句加入 .cshrc
[color=blue:8cd14efaf9]问:javascript和JAVA有区别吗?[/color:8cd14efaf9]
答:对比JAVA来讲,javascript并不能说是一套完整的语言,它定义了一套方法,事件处
理等,主要用于Web页面开发中增加页面效果,进行数据有效性检查等。在开发
Microsoft ASP时也可以作为一种编程脚本。它有一个基本对等的东西就是VBScript.
并且javascript 与 Java根本不是师出一门,是完全独立的两种语言。
[color=blue:8cd14efaf9]问:Application和Applet各自指什么?在使用中有区别吗?[/color:8cd14efaf9]
答:Application和Applet是利用JAVA语言生成的可运行代码中最常用的两种,两者都必
须在JAVA虚拟机上运行。简单来讲,Application更象我们平常用VB,VC等编写的桌
面程序,多以控制台(CONSOLE)方式运行,当然也很容易实现窗口应用。而Applet
可以嵌入Web页面中,在支持JAVA虚拟机的浏览器上运行。在使用时应该区别应用。
[color=blue:8cd14efaf9]问:我想参加 Java 认证考试,该如何准备?[/color:8cd14efaf9]
答:买本 Java 2 认证考试学习指南(英文原版)看看,一遍不够
做 Marcus Green 的三套考题,巩固概念
做 ChinaITLab 的 bible,包括了好多考题
参考 mynote,一个 scjp 考了 100 分的高手写的笔记。
关键是概念要清楚,考试是最好的学习方法,有压力才有动力,呵呵。
以上资料下载: ftp://cinc.3322.org/pub/doc/java/scjp/
ChinaITLab : http://www.chinaitlab.com/filelist.asp?id=16&c_top=5
[color=blue:8cd14efaf9]问:XML 教程[/color:8cd14efaf9]
答:
IBM 关于 XML 的教程:
IBM : developerWorks 中国网站 : XML : 教学 - 在线教程
XML 入门 (修订版)
http://www-900.ibm.com/developerWorks/cn/education/xml/x-xmlintro/tutorial/index.html
Understanding SAX
http://www-900.ibm.com/developerWorks/cn/education/xml/x-usax/tutorial_eng/
Understanding DOM
http://www-900.ibm.com/developerWorks/cn/education/xml/x-udom/tutorial_eng/
[color=blue:8cd14efaf9]问:怎么才能让窗口关上呢?[/color:8cd14efaf9]
答:
方法一: 使用 JFrame 特有的方法
public static void showFrame() {
JFrame f = new JFrame();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ;
f.setSize ( 400, 300 ;
f.setVisible ( true ;
}
方法二:使用 WindowAdapter
public static void showFrame() {
JFrame f = new JFrame();
f.addWindowListener( new WindowCloser() ;
f.setSize ( 400, 300 ;
f.setVisible ( true ;
}
static class WindowCloser extends WindowAdapter {
public void windowClosing ( WindowEvent e {
Window w = e.getWindow();
w.setVisible( false ;
w.dispose();
System.exit(0);
}
}
[color=blue:8cd14efaf9]问:怎样获得windows 2k操作系统当前的登录用户名?[/color:8cd14efaf9]
答:代码:
System.out.println(System.getProperty("user.name"));
你也可以通过
System.getProperties.list(System.out)
获取更多的系统信息!!
[color=blue:8cd14efaf9]问:如何实现系统命令的调用[/color:8cd14efaf9]
是用Runtime.exec(String command) 吗,不过他的输出怎么取得呢
答:try {
// Execute command
String command = "lsid";
Process child = Runtime.getRuntime().exec(command);
// Get input stream to read from it
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.print((char)c);
}
in.close();
} catch (IOException e) {
}
[color=blue:8cd14efaf9]问:类型转换:日期(Date)和 字符串(String)[/color:8cd14efaf9]
[code:1:8cd14efaf9]
public class Util {
protected static DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
public static Date stringToDate( String dateString ) throws ParseException {
return formatter.parse( dateString );
}
// TODO date to string
public static String dateToString( Date date ) throws ParseException {
return formatter.format(date);
}
}
//String to Date:
Date date = Util.stringToDate( "1999-09-22" );
//Date to String
String newDateString = Util.dateToString( date );
[/code:1:8cd14efaf9]
[color=blue:8cd14efaf9]问:Java 里怎么捕捉按键事件? [/color:8cd14efaf9]
答: http://www.chinaunix.net/forum/viewtopic.php?t=641
[color=blue:8cd14efaf9]问:JB7能支持滚轮鼠标吗?[/color:8cd14efaf9]
答: http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=14&topic=716&show=30
[color=blue:8cd14efaf9]问:java反编器[/color:8cd14efaf9]
答:DJ Java Decompiler 3.4.4.74
軟體說明:
使用DJ Java Decompiler,選擇開啟或載入你的CLASS檔,你將會馬上看到原始碼。因為此程式是標準的Windows應用程式,它不需要安裝任何的Java套件。
下载地址:
http://www.slunecnice.cz/download.php4?v=694&u=1
[color=blue:8cd14efaf9]问:JavaMail 资料[/color:8cd14efaf9]
答: http://www-900.ibm.com/developerWorks/cn/education/java/j-javamail/tutorial/index4.html
[color=blue:8cd14efaf9]问:Java 如何查询机器上的剩余硬盘空间,当前内存大小等信息[/color:8cd14efaf9]
答:这些功能可以调用 jni 来解决
http://www.javaworld.com/javaworld/javaqa/2002-11/01-qa-1108-cpu.html
问:Java 打印报表(pdf。。。)
答:
JFreeReport http://www.jfree.org
jasperreports http://jasperreports.sourceforge.net/index.html
[color=blue:8cd14efaf9]问:Java 下的 MVC Framework 资料[/color:8cd14efaf9]
答:jsp/servlet 可以用 struts, webwork
swing窗口程序可以用 scope (hmvc)
struts:
主页:http://jakarta.apache.org/struts/
Struts,MVC 的一种开放源码实现用这种 servlet 和 JSP 框架管理复杂的大型网站
http://www-900.ibm.com/developerWorks/cn/java/j-struts/index.shtml
ftp://cinc.3322.org/ub/doc/java/servletjsp/MasteringJakartaStruts.pdf
ftp://cinc.3322.org/ub/doc/java/servletjsp/strutsslide.pdf
scope
http://sourceforge.net/projects/scope
hmvc
http://www.javaworld.com/javaworld/jw-07-2000/jw-0721-hmvc.html
webwork
http://sourceforge.net/projects/opensymphony
[color=blue:8cd14efaf9]中文问题解决办法:[/color:8cd14efaf9]
-------------------------------------------------------------------------------------
遇到中文问题,请先按下面的方法试试:
如果大家有什么好的方法,也欢迎跟贴。
jsp 中文问题?
在 JSP 开头加上:
<%@ page contentType="text/html; charset=gb2312" %>
servlet 中文问题?
在 doPost(...) 函数里加上:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
Oracle 中文问题?
在把汉字字符串插入数据库前做如下转换操作:
String(str.getBytes("ISO8859_1"),"gb2312")
测试代码:
String str = "汉字";
PreparedStatement pStmt = conn.prepareStatement("INSERT INTO test valueS (?)");
pStmt.setString(1,new String(str.getBytes("ISO8859_1"),"gb2312");
pStmt.executeUpdate();
此方法还可以用在其他地方
Mysql 中文问题?
答:将 connectionString 设置成 encoding 为 gb2312
String connectionString
= "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312";
想在java applet內顯示中文?
JAVA的中文显示,主要由
$JAVA_HOME/jre/lib/font.properties所决定的。
看看这个文件吧.
那字体写进去.就可以了
用 Filter 解决 jsp 中文问题
http://www.chinaunix.net/forum/viewtopic.php?t=54824
-------------------------------------------------------------------------------------
[color=blue:8cd14efaf9]J2EE 相关技术:[/color:8cd14efaf9]
-------------------------------------------------------------------------------------
SUN J2EE 主页:
http://java.sun.com/j2ee
SUN J2EE 下载
http://java.sun.com/j2ee/1.3/download.html#sdk
文档:
http://java.sun.com/j2ee/1.3/download.html#tutorial
J2EE BluePrint(J2EE 蓝图)
开发人员标准的编程指导方针,是关于如何使用 J2EE API 开发、打包和部署可伸缩的,可移植的多层标准应用程序的。
http://java.sun.com/blueprints/
Java Community Process 定义 J2EE 体系结构和它的功能
http://www.jcp.org
J2EE Patterns
应用于 J2EE 框架中的一些模式,比如 Front Controller,Data Access Object
http://java.sun.com/blueprints/corej2eepatterns/Patterns/
Core J2EE Patterns 中文版
http://www.china-pub.com/computers/common/info.asp?id=5111
ftp://210.52.88.133/pub/doc/java/j2ee/corej2eepattern.pdf
书籍下载:
Mastering EJB
http://www.theserverside.com//books/masteringEJB/index.jsp
MVC Web Application Framework:
J2EE 是用基于 MVC 的框架搭建的,如 PetStore 用的就是 SUN 自己的 WAF
其他流行的 MVC 框架还有:
Struts:
http://jakarta.apache.org/struts/
文档:
ftp://210.52.88.133/pub/doc/java/servletjsp/struts/MasteringJakartaStruts.pdf
webwork:
http://sourceforge.net/projects/opensymphony
SUN PetStore (宠物店)例子程序:
PetStore 是 SUN 开发的用于演示如何使用 J2EE 来开发电子商务应用的DEMO程序。
http://developer.java.sun.com/developer/releases/petstore/
http://java.sun.com/j2ee/1.3/download.html#blueprints
安装:
http://java.sun.com/blueprints/code/jps131/docs/installing.html
文档:
ftp://210.52.88.133/pub/doc/java/j2ee/petstore/sample-app1.3.1.pdf
J2EE 应用服务器:
JBoss
开发源代码的服务器
http://www.jboss.org
http://sourceforge.net/projects/jboss
BEA WebLogic
http://www.bea.com
IBM WebSphere
http://www.ibm.com/websphere
测试工具:
junitee:
JUnit 的扩展,用于测试 J2EE 程序,用 servlet 做测试结果输出
http://sourceforge.net/projects/junitee
其他相关网站:
http://www.theserverside.com/home/index.jsp