寒假自学JAVA小结

大二的寒假只剩下一周时间了,日子过得真快。我之前利用了一部分时间,学起了JAVA。JAVA是目前世界上最流行的语言,我也希望我能早一点入门JAVA。

JAVA是一门几乎完全面对象的语言(除了内置类型int,double,char之类的。其实JAVA有类型封装器,int也能变成一个类Integer)。关于类,封装,继承,多态等概念,在我在学校学习C++的时候已经深入人心。扎实的C++基本功,让我在学习JAVA的初期一马平川,如履平地。不过我后来发现,JAVA如果需要深入学习的话,还是需要很费功夫的。这次寒假学习JAVA的目的主要是入个门,混个眼熟,熟悉JAVA的环境,比如eclipse。

在一月末的时候,我安装了myeclipse 10, 感觉一般般,而且无法使用最新的JDK1.8。在二月初的时候我去oracle官网下载了最新的eclipse luna,和JDK_1.8_update20,自己瞎折腾,把环境配好了(后来我妈看了看我配的环境,呵呵,我妈后来把我的环境调整的更加正规了)。我在图书馆借一本书《Java完全参考手册(第8版)》,这本书完全更新至JDK7。

以下是我现在能够回忆的Java语言的特色。

  1. main方法在类中,必须是 public static void main(String args[])
  2. 代码中的类的类名,必须等于源文件的名字
  3. 组居然是一个对象,有一些方法比如 length( ):int,返回数组的大小  
  4. JDK7中新增了几个特性,其中有两个我觉得很不错。一:switch语句可以支持String; 二:整形数字中,可以穿插下划线'_',这样可以增加长数字的可读性
  5. for循环的衍生: for-each循环语句,很有意思
  6. Java的 if(...),括号中必须是boolean,Java中没有false==0, true==!0的概念
  7. 代码块可以标记label,break语句可以指定break哪一个label
  8. 没有指针( * )和引用( & ) 符号,没有这两个符号非常爽。Java中的传递参数,如果是对象的话,那就必须是引用(Java中的引用约等于C++中的指针)。C++中的引用的概念,在Java中不存在。
  9. 可变长度参数varargs,这个东西令我眼前一亮
  10. Java中的构造函数,子类调用超类的构造函数,统一使用super( ),不像C++一样需要“指名道姓”
  11. Java中内置垃圾回收,只需要new,不需要delete。(C++中的智能指针好像可以起到类似效果,但是毕竟不是内置的,需要包含头文件)
  12. Java的文件组织方式我觉得很棒。包,这个东西不错,导入包使用import,大概约等于C++中的include。包的存在,能够让人十分清晰的掌握项目的组织结构。JDK中包,都是.jar文件
  13. 弄了弄Java.doc,我觉得用这个东西组织文档貌似很有条理
  14. 接口,这个东西类似于抽象类,又有区别。接口中的方法必须只能是抽象方法(抽象类可以有部分实现的方法);实现接口的子类,必须实现所有的抽象方法;接口可以多继承,抽象类不行(接口的“继承”关键词是implements,抽象类的继承的关键词是extends);Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为;在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。(A extends Abstract B implements interface C,那么A即可以选择实现(@Override)接口interface C中的方法,也可以选择不实现;A即可以选择实现(@Override)抽象类Abstract B中的方法,也可以选择不实现)
  15. 我在大一学习C++的时候,对于异常部分的学习,老师只是一笔带过,毕竟对于我们而言,平时写代码基本上用不上try-catch,我自己也没仔细看异常时怎么处理的。我这次寒假自学Java,弥补了这个遗憾。try-catch-throw/throws-finally 是怎么一回事,可以说是弄懂了。我想C++的异常处理和Java中的应该差不多吧
  16. 关于多线程编程。原来我以前编的所有程序都是单线程(只有一个main主线程)。关于多线程,我调试了一下书上的程序,上网查了资料,问了问父母,但是由于知识水平的局限性,我对于多线程编程的理解无法深入。关于多线程,我浅尝辄止,能混个眼熟就行了。神马synchronized, suspend, resume, wait, notify的
  17. Java中的枚举十分有意思,它居然也是一个类。枚举变量是枚举类中的对象
  18. 关于i/o,我没有过多看,一般而言对于控制台,使用System.out.println()(可以把这个封装在了一个class中,调用Pw.cout( )就可以使用了,少打几个字母);或者弄一个PrintWriter对象;或者使用Scanner对象
  19. 关于泛型,我没有过多看,看上去和C++的模板差不多(书上说两者不能看成一回事)
  20. Java库中有好多好多包,可以实现很多很强大的功能。学习计算机的,需要十分强大的“即时学习能力”——需要用的时候能够立刻学,立刻用。没有必要掌握所有的知识,知识太多,学不完。活到老,学到老
总结20个特性,今天就差不多了。我只是刚刚一只脚踏入Java的大门,几乎什么都不知道。Java软件的开发,Java的应用,目前离我看上去还比较遥远。真正学会Java,还是需要做Java项目的锤炼。实践才能出真知。

你可能感兴趣的:(java,eclipse,jdk,线程,语言)