= = = JAVA进阶必读 = = =

From:http://bbs.byr.cn/article/Java/9631



初学者指南 

  
1、为什么学Java? 
Java在工程界使用广泛,在编程语言使用排名榜上现在稳居榜首,所以学Java可以帮助你找一份好工作。 
   
语言层面来说,和C++比较,Java更简单纯粹一点,学习和使用都不那么痛苦,也更容易体会到编程的美感。和C#比较,Java在开源项目更多,平台支持也更多。 
   
从找工作来看,由于Java应用广一点,所以工作机会多一点,但是C++难一点,所以收入是C++职位高一点。但我希望初学者不要过于看重这一点,一来待遇这个东西并不绝对,风水轮流转;二来学好一门语言后再学另一门语言会快很多。 
   
2、Java的应用 
Java程序更多的跑在服务器端,而不是桌面。很多大公司如IBM、BEA、Oracle使用它开发服务器软件。Java也被广泛用于建立网站或者说 B/S结构的企业应用。Java的Applet在企业内部网也比较流行(事实上我这次去工体购买周杰伦演唱会门票时发现其订票选位系统就是用Applet 做的)。 
一度Java被认为不适合开发桌面程序,但在IBM推出Eclipse之后,人们发现使用Java也可以开发出如此好看的桌面程序。 
   
总结一下,Java应用广泛。 
   
3、关于J2ME,J2SE,J2EE 
在Java的发展过程中,1.2是一个脱胎换骨的版本,被成为Java 2。现在这几个名词被换成了Java ME,Java SE,Java EE。 
后面那个E是Edition(版本),M代表Micro,S代表Standard,E代表Enterprise。 
我们一般说的Java是SE,标准版。学习Java一般都是先学这个,里面包含了Java最经典的类库比如String,Map,Thread,Socket等等。 
Micro Edition被使用于手机或其他嵌入式系统(比如数字电视机顶盒)。为什么要单独出来这个版本呢?因为手机之类的东东内存和处理能力有限,所以这个版本的Java也要小点。 
EE,企业版,很牛的一个名字。不过这个名字包含的意义和最初已经有点不一样了。最初的EE是围绕EJB的,需要跑在很牛的服务器中间件上。现在可以认为 Struts、Spring、Hibernate这样的技术组合起来,建立有点像网站形式一样的东西,差不多就叫Java EE了。 
  
4、Java书籍 
其实呢,根据我的经验,学一门语言,一本书肯定是不够的...我喜欢不同的书换着看来看去,因为对于同一点,不同的书的阐述方式和角度不同,你看第一次和第二次的感觉也不同。(由于第二次的感觉一般比第一次清晰,所以经常会有第二本书比第一本书好的错觉 Orz...)另外,网络是个很好的资源,大家要多用搜索,善用搜索。 
   
学习Java的第一本书可以是图书馆里的一本随意的、薄薄的、中国作者的、可能印刷质量还很差的小教材。它会带给你对Java最初的感觉和认识。然后有了这么一点感觉之后,可以看看经典的教材了。 
   
经典教材首推《Core Java》(Java核心技术),本书最大的特点是Practical,就是很面向实际应用,让你对Java会被使用在哪里,怎么使用有较清晰的感觉。我建议先看卷一前七章,按照书上的讲解一个一个程序敲打下来,也可以拿个本子做做笔记,这会给你自己一个很扎实的感觉。(我当年就是这么傻傻的干的,汗一个~)还有就是是里面提到什么东西让你以后再看你就赶紧跳过去。为什么要看第七章呢,我觉得这个可以让你明白Java的事件处理模型,也能让你对监听者模式有点感觉,The first step into Patter World。 
   
看完前七章,后面的东西就不用按顺序看了,Java的应用很广,网络、线程、数据库、图形化界面等,都有相应的包。建议用到什么看什么。 
   
http://www.china-pub.com/208978&ref=ps   
http://www.china-pub.com/508881&ref=ps   
   
这个阶段一定要多些练习啊~ 
   
《Java编程思想》也是一本经典书籍,名字就很酷,一下子提高到了思想的高度。事实上也确实是这样,里面经常会讲到为什么Java被设计成这样,设计成那样会不会好点----这种讲解对我们定义的初学者来说,要求高了点,不如《Core Java》那样面向编程。建议在对Java多了一些了解以后看。 
   
http://www.china-pub.com/34838&ref=ps 
   
另外网上有很多其他形式的资源,比如张孝祥的视频以及很多PPT,也可以作为辅助。总的来说,学Java要看书,要动手实践,最好旁边有人带带就更好了哈~ 
   
5、Java编辑器 
我建议初学者应该先用文本编辑器(比如UltraEdit)编写简单的Java程序,手动配置Path和ClassPath。传说中所有学Java的老同志们都经历过这个痛苦的过程,看着简陋的命令行上的出错信息崩溃抓狂。必经之路、必经之路...唔...这里说两句,我做得作为初学者,心态一定要好,千万不要急。米卢说过两句话:一、态度决定一切;二、慢慢来。所以,遇问题,先冷静,可以尝试上网查查,翻翻书什么的。如果什么时候头涨了,可以休息一下,干干别的。不要想一定要一个星期就怎样怎样,也不要一遇到问题就抓人来问。不过我觉得北邮的同学们都是好同学,都很有能力啊~ 
   
然后在会遇上了足够的HelloWorld编译问题后,就可以使用IDE(集成开发环境)了。使用一个好的IDE可以大大提高开发效率,也会让你体会到代码的美感,开发的快感。这是真的,至少Eclipse让我有这个感觉。 
   
IDE里我首推Eclipse,当然很多人说NetBeans很不错,还有IDEA。JBuilder就不推荐了。 
   
初次使用Eclipse在菜单上各个按钮尝试多按几下应该就能明白个大概,也可以在网上稍微找一些资料。用Eclipse写HelloWorld时要注意要新建Java工程,然后新建类,Java是面向对象的,所有的Java程序都要包在类里面。 
   
Eclipse有些地方挺好的,比如: 
a)编辑的时候,代码下面会即时显示红线表示这句代码有错。这时在该行按Ctrl+1会显示一些纠错建议。 
b)如果输入完毕没有错,Java程序就已经编译好了(Eclipse自带了一个增量编译器)。右键Run As...就可以运行了。 
c)看代码的时候,多按按F3和F4,可以看到源代码和类继承结构; 
d)修改代码时右键点击refactor(重构),可以批量修改变量名,包括在其他类中使用到的。 
e)Ctrl+/能够自动补全代码。 
   
其他更多功能大家慢慢都会使用的。 
   
6、Java的学习途径 
有的朋友说“感觉java越看越多,像个无底洞,特别是其中的类、库、包之类的问题,想了解一下初学者要了解的一个基础,要看到哪种程度就可以了”。 
   
没有工程经验的同志们老是觉得语言的东西看再多也不够拿来使用(而有工程经验的同志有时又会轻视语言)。 
Java很庞大,它有数不清的开源类库,有着丰富的解决方案,但总的来说,我觉得学完如下东西后可以尝试写一些东西了。 
a)Java的基本变量类型和语法 
b)面向对象的基本概念和语法,诸如:对象和类的概念,构造函数,public private等的含义,继承的语法(子类和超类),接口的使用。还有垃圾回收。 
c)异常处理机制; 
d)然后有些常用类库:String、IO流、HashSet和HashMap之类也要看看。 
之后一些我感觉就相对高级了点,Thread、Socket、DataBase(JDBC)。用到什么看什么吧。图形界面也是用到了再学吧,不过可以看看里面的事件注册以及监听模型,就是 
button.addActionListener(new 
       ActionListener() { 
             public void actionPerformed(ActionEvent event) { 
                   setBackground(backgroudColor); 
             } 
       } 

这样的代码。要习惯这样的代码,这也是匿名内部类最常见使用的地方了。 
   
学习过程中要注意做点练习,比如给大家个小题目: 
计算一个目录下的所有Java程序的实际代码总行数。实际代码行的意思是去除注释行和空行。其考察点为:基本语法、String、File、IO。如果可以,考虑使代码拥有扩展性,就是代码能够方便的加上新的功能,比如能不能方便的支持以#开头作为注释的文件,后缀名不同的文件。这样可能会用到一些继承关系和接口等等,至少思考思考这个问题会有好处。 
   
PS:推荐一篇文章 

http://www.javaeye.com/wiki/Java_Newbie/1292-java-learning-path  


这篇是为初学者写的东西,大概讲讲怎么从Eclipse写Hello World。最后介绍一下常用快捷键。 



FAQ 
  
请推荐Java的编辑器 
“首选Eclipse” 
“Eclipse、Netbeans、JBuilder   
主要是这么几个吧……做图形界面的话必然要用到啊,记事本写还不写死人……   
初学者也未必要一直记事本+命令行,但最好是从这个学起,主要是为了知道环境变量的配置方法(有些公司面试会问的),还有javac编译生成class、java运行class的步骤   
话说win自带的记事本实在不好太使,UE或者EditPlus有语法着色和自动缩进外加生成bak的比较方便” 
“JCreator,面向初学者的。很简洁。” 
   
请推荐Java书籍 
初学者首选《Core Java》 http://www.china-pub.com/208978&ref=ps http://www.china-pub.com/508881&ref=ps 
更多请看: 
http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Java&ID=7942&pos=5 
   
如何设置环境变量 
如果是winXP,使用鼠标右击“我的电脑”->属性->高级->环境变量 
系统变量->新建->变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.6.0_02(此处改成你Java的安装目录) 
系统变量->新建->变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib 
系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin; 
(CLASSPATH中有一英文句号“.”后跟一个分号,表示当前路径的意思) 
在Classpath里面你可以直接指定一个包名,比如你用到的第三方的包。多个包之间用分号隔开。 
   
在什么情况下会发生java.lang.NoClassDefFoundError ,以及如何避免这种情况发生? 
Java.lang.NoClassDefFoundError是Java无法在所给予的classpath中找到提及的类别或接口的定义,因而抛出的执行时期异常。这个错误通常是因为classpath的设定错误而抛出的。   
如果出现这个错误,请确定你的classpath设置正确(不要忘记有包含当前的目录(以句点.表示))。 
如果你使用java Test.java命令来执行命令,也会抛出这个错误。这个应该是使用java Test,因为类别名称是Test而不是Test.java。 
下面的代码可以检查你的JVM使用什么classpath:   
public void displayClassPath()   
{   
    try   
    {   
      System.out.println(System.getProperty("java.class.path"));   
    }   
    catch(Throwable t)   
    {   
      t.printStackTrace();   
    }   
}   
   
Eclipse最重要的快捷键 
Ctrl+Shift+L  有了它就知道其他快捷键了 
   
我们学校都有哪些院有Java的课啊? 
“计算机学院,王小茹老师,本学期,全校选修;   
电信院,唐晓晟老师,下学期,院内选修。   
建议先上王老师的课,讲得非常好,很快能入门;   
再旁听唐Sir的课,内容不少,讲得也快,对提高很有帮助。   
个人观点,仅供参考。” 
   
数组跟ArrayList有什么区别 
可以将 ArrayList想象成一种“会自动扩增容量的Array”。数组不能改变长度,ArrayList可以。数组可以用基本数据类型,ArrayList只接收对象。   
更多请看: 
http://linweihan.javaeye.com/blog/144829 
   
怎么从键盘输入一个int/double/字符串? 
分两种方式,一是作为运行的入口参数,用main的args参数获得;二是在运行时从键盘输入获得。 
Java的I/O操作比C++要复杂一点。如果要运行时从键盘输入,样例代码如下: 
BufferedReadercin=newBufferedReader(newInputStreamReader(System.in)); 
Strings=cin.readLine(); 
这样你就获得了一个字符串,如果你需要数字的话再加上: 
intn=Integer.parseInt(s);或者doubled=Double.parseDouble(s); 
另一种方法: 
Scanner xx=new Scanner(System.in)   
String  yy=in.nextline(.nextword   .nextint .....)   
   
怎么把Java编译成exe文件? 
总的来说,JDK只能将Java源文件编译为Class文件,以此来实现跨平台性。 
有些开发工具可以将Java文件编译为exe文件(事实上没有成熟稳定的,特别随着Java版本的提高)。而且本人反对这种做法,因为这样就取消了跨平台性。 
如果你确信你的软件只在Windows平台上运行,你可以考虑使用C++/C#来编程。 
如果你想使Java编写出Windows样子的界面,可以使用Eclipse的SWT。或者,干脆使用C#。 
   
哪里下载Java API帮助文档 
建议用英文版的,不难。这种程度的英文文档适合程序员看。下载可以尝试迅雷   
http://www.gougou.com/search?search=jdk%20chm&id=1   
另外,在Sun的网站上http://java.sun.com/javase/downloads/index.jsp   
找到Java SE Documentation点download就可以下载了   
  
如何测试程序执行时间 
long start = System.currentTimeMillis(); 
  // 要计时的运算代码放在这儿 
long time = System.currentTimeMillis() - start; 
System.out.println(time); 
   
如何在Java中执行其它可执行程序 
Runtime.getRuntime().exec("notepad.exe")   
   
deprecated是什么意思? 
有时在编译完java的原始码后会出现Deprecation warings。   
Deprecation表示你使用了一些旧的API,这些API在新版的JDK都有其他可用的API可以取代他们。 
你应该使用新的API来确定这个程式可以和未来的JDK版本维持相容。 
在编译时使用-deprecate来列出所有你所用的deprecated methods和相对应的新的methods. 
   
如何在基本类型和java.lang.String之间转换? 
所有的基本类型都可以使用在java.lang底下的包装类别转换成字串。   
例如java.lang.Integer,java.lang.Byte,等等。   
Byte myByte = new Byte(289);   
int myInt = myByte.intValue();   
String myHexString = Integer.toHexString(myInt);   
   
所有除了byte之外的基本类型都可以用重载的String.valueOf()方法来转换成字串。   
String intStr = String.valueOf(1);   
String doubleStr = String.valueOf(Math.PI);   
String boolStr = String.valueOf(true); 
   
更简单的方法 String intStr = "" + 1; ("" + Math.PI;    "" + true) 
   
Eclipse的在线文档很好用,但有时候网不通的时候很烦,怎么才能让Eclipse用本地的JavaDoc? 
window-->preference-->java-->installed jres   
找到jre配置,edit   
点击里面的每一个jar包,配置javadoc location   
选用sun的那个zip包就可以了   

   
【安装JDK和Eclipse】 
1.download JDK 
地址:http://java.sun.com/javase/downloads/index.jsp 
也可使用迅雷下载,注意下载JDK安装,而不是JRE。 
   
我下载的是Java SE Development Kit (JDK) 6 Update 11。如果只使用Eclipse编译和开发的话,不用设置环境变量。 
   
2. download Eclipse 
http://www.eclipse.org/downloads/ 
选择Eclipse Classic或 Eclipse IDE for Java Developers(推荐前者,包含了SWT等eclipse插件相关的东西以及其他有用的工具。) 
下载完毕,无需安装,直接解压到一个目录即可。 
   
【Hello World with Eclipse】 
打开时Eclipse时,会要求选择workspace,可以先使用默认的workspace。 
打开后,会出来Welcome界面,其中的Tutorials和Samples是很好的学习材料。 
For now,你可以点击打开Workbench直接来写Hello World。 
   
File->New->Java Project,会弹出来一个窗口。 
在Project Name域中,填入HelloWorld,然后点击Finish。 

= = = JAVA进阶必读 = = =_第1张图片 
然后,右键点击HelloWorld工程,选择New->Class(注意是Class,Java是面向对象的,一切都从类开始),在弹出来的窗口中Name写上HelloWorld,然后点击Finish。 
   
在编辑器里面敲入以下代码。 
public class HelloWorld { 
     public static void main(String args[]){ 
         System.out.println("Hello, world!"); 
     } 

然后右键点击Run As->Java Application。就能在下面的Console窗口中看到打印出来的Hello,World。 
   
我们这里没有编译的过程,因为Eclipse默认是及时编译的,如果代码有编译错误,会在下面有红线提示。 
自动编译的选项在Project->Build Automaticlly设置。 
   
【常用小技巧】 
1.按住Ctrl,把鼠标放到类名上,可以看到类名处有下划线,点击即可跳转到代码处。同样作用的快捷键是F3。 
2.刚开始跳转到JDK的类库代码时会需要Attach Source一下,比如跳转到String类。点击Attach Source,再点击弹出窗口中的External File。然后选择路径“C:/Program Files/Java/jdk1.6.0_11/src.zip”(假设安装在C盘),确定后就能见到代码了。JDK类库的代码是非常棒的,值得钻研。 
3.很实用的快捷键介绍: 
F4:打开类型层次结构 
Alt + / : 补全代码,本来Ctrl + Space也可以的,但和输入法切换冲突了。 
Ctrl + 1 : 快速修正。 
Ctrl + Shift + O : 整理你的import部分的内容,会把多余的import项清理掉,也可以自动引入所需要得包。 
Ctrl + Shift + T : 打开类型,输入类名能够快速转到那个文件,我很喜欢的快捷键。 
Ctrl +Shift + F : 代码排版, 为了是你写的程序代码版面更清晰,你可以尝试使用该热键 
Ctrl + O : 快速大纲:打开当前所选类型的轻量级大纲图。在一个文件中直接打开一个成员变量(如字段、方法),尤其是有许多类似的方法名的时候这个快捷键将变得非常有用。 
Ctrl + / : 添加或去除注释。 
4.有时候需要查看某个方法被哪些地方调用了,我们可以在这个方法上点击右键,选择“Open Call Hierarchy”,这时在开发环境的下方,会出现Call Hierarchy窗口,显示该方法被调用的情况。 
   
另外一些常用的快捷键(Thanks to Aaron12) 
ctrl + D 删除选择行   
ctrl + F 查找/替换   
ctrl + <- 返回上一次光标所在,在不同的Java文件来回切换很方便(very 有用的),尤其是debug的时候。   
ctrl + alt + Z : 某行代码调用生命抛出异常的方法时,选择该行代码,使用本组合快捷键,很方便的补全try{}catch(){}   
alt+shift+R: 重构。 选择变量名称或者方法名称后,按该键进行重构。   
shift+home : 选择光标所在行行首 至 光标的内容   
shift+end : 选择 光标至光标所在行行尾处的内容   
   
另外f1 - f8 都需要熟悉。 
f5-f8 在debug的时候很方便。   
F5: Step into 跟踪进入下一个要执行的方法,跟踪进入一个方法会增加一个栈帧。 
F6: Step over 结束当前行的执行,在下一个可执行的行处挂起。 
F7: Step Return 从当前方法中跳出。执行将继续,知道执行了当前方法中的return语句为止。 
F8: Resume 继续执行线程,直到它结束或遇到断点为止。 
  
ctrl + page up / page down : 切换java文件 或者 切换同一个文件中的不同视图(比如:一个文件有xml 和 ui 视图)   
ctrl + p : 打印   
ctrl + s 保存   
ctrl + shift + s 全部保存   
ctrl + w 关闭当前文件   
ctrl + shift + w 关闭所有文件   
ctrl + D 删除选择行 
ctrl + F 查找/替换 
ctrl + <- 返回上一次光标所在,在不同的Java文件来回切换很方便(very 有用的),尤其是debug的时候。   
ctrl + alt + Z : 某行代码调用生命抛出异常的方法时,选择该行代码,使用本组合快捷键,很方便的补全try{}catch(){} 
alt+shift+R: 重构。 选择变量名称或者方法名称后,按该键进行重构。 
shift+home : 选择光标所在行行首 至 光标的内容 
shift+end : 选择 光标至光标所在行行尾处的内容   
   
另外别忘了 ESC 键也是很常用的,当打开的窗口没用需要的内容的时候(比如:使用ctrl+o,ctrl+shift+t查找不到内容时),使用esc键比用鼠标关闭窗口可会快多了   
   
更多的热键可以在window->preferences->general->keys查看 
   
这里有个不错的常用技巧介绍:http://hi.baidu.com/xyue13/blog/item/adad8f23633ae8f5d6cae25f.html  


网站 
   
http://forum.byr.edu.cn/wForum/board.php?name=Java 
首先先推荐一下本版...毕竟自己学校的兄弟姐妹们交流会方便一点,热心一点,除了解答问题,交流技术,也能认识更多的人。 
   
http://www.newsmth.net/bbsdoc.php?board=Java 
水木的BBS,有问题时,来这里问也不错,速度可以。 
   
http://www.javaeye.com/ 
由Robbin创建发起的技术网站,人气相当旺,有不少牛人。最初是以讨论Java技术和Hibernate技术开始的技术论坛,现在已经成为一个涵盖整个软件开发领域的综合性网站,2005年被选为中国十佳技术网站之一。 
   
http://www.ibm.com/developerworks/cn/java/ 
http://dev2dev.bea.com.cn/ 
IBM和BEA都在主推Java应用。它们的技术网站中有不少关于Java的好文章。IBM那个要代理才能访问。 
   
http://java.csdn.net/ 
CSDN,名气大到不需介绍。不过个人认为在此求助得到答案较慢,速度也一般。 
   
http://www.blogjava.net/ 
这个地方集聚了不少好的Java博客。 
   
http://www.j2medev.com/ 
这个网站主要关注J2ME,它可是我们的学长mingjava创建的哦。 
   
http://www.javaresearch.org/ 
这个网站我以前经常上,有些不错的文章和资源。 
   
http://www.matrix.org.cn 
还挺不错的,大而全,就是速度慢。 
   
http://www.javaworld.com.tw/jute/ 
这个差不多是台湾最好的Java网站,刚学Java的时候我觉得它比大陆的都好。现在JavaEye应该超过它了。  
  
http://www.zzgps.cn/ 
这个网站有个论坛,里面有很多视频可供下载,速度不错,内容丰富 
  
http://www.aidiji.com 
一个关于Android开发与应用的网站,因为是基于java开发的,所以推荐一下 

你可能感兴趣的:(java,eclipse,jdk,String,hierarchy,deprecated)