写在前面:曾以为掌握C++,java不过是小菜一碟,果断拿起《thinking in Java》一顿猛啃,直到啃完基础部分后,仍然觉得还没有入门,遂转入李刚老师的《疯狂java讲义》,脑洞大开,顿生总结此系列文章想法。本系列文章属于个人总结,具体以李刚老师的《疯狂java讲义》为阅读总结对象,参考《thinking in Java》,并与C++进行对比,总结归纳出二者不同的地方,作为个人学习总结。
PS:个人觉得C++书籍《C++ Primer》在写作技巧及知识点的讲解方面更加通俗易懂,深入浅出,适合入门及提高读者;而《thinking in Java》层次略高,不太适合没有任何Java基础的读者。学习语言最重要是的掌握编程的基本思路,然后先了解新语言与已掌握语言之间的差异,再具体研究新语言具体的语法,这样可以加快学习的速度。
------------------------------------------------------------------------------------------------------
1 计算机高级语言的分类
计算机高级语言按照程序的执行方式可以分为:编译型和解释型两种。
编译型语言有:C、C++、FORTRAN、Pascal等。
编译型语言是指使用专门的编译器、针对特定的平台(操作系统)将某种高级语言源代码一次性“翻译”成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行程序,这个过程称为“编译”。编译生成的可执行程序可以脱离开发环境,在特定的平台上独立运行。
优点:运行效率高;
缺陷:因为编译型语言的程序被编译成特定平台上的机器码,因此编译生成的可执行程序通常无法在其他平台上运行;一般需要将源代码在其他特定的平台上针对特定的平台进行修改,采用目标平台上的编译器重新编译即可。
解释型语言有:Buby、Python等。
解释型语言是指使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。
优点:跨平台比较容易,提供特定平台的解释器即可;
缺点:效率较低。
2 Java程序的运行机制和JVM
Java不是纯粹的编程型语言,也不是纯粹的解释型语言。Java语言编写的程序需用经过编译,但是这个步骤不会生成特定的平台机器码,而是生成与平台无关的字节码(也就是*.class文件)。Java编译器只生成与平台无关的字节码,这些字节码不面向任何具体的平台,只面向JVM,不同平台上的JVM都是不同的,但是他们面向Java都提供了相同的接口。JVM(Java virtual machine)负责对其进行解释并执行。
3 Java程序的基本规则
①Java程序必须以类(class)的形式存在,类(class)是Java程序的最小程序单位。
②Java源程文件的名字必须与public类的类名相同,因此一个Java源文件最多只能定义一个public类。
③Java解释器规定:如果类能被解释器直接执行,则这个类必须包含main方法,由于Java严格区分大小写,因此写成Main则会导致Java解释器找不到入口;另外main方法必须使用public static void来修饰,形参必须是一个字符串数组(String[] args)
④一个Java源文件只定义一个类,不同的类使用不同的源文件定义。
⑤每个源文件中单独定义的类定义为public,保持源文件的文件名与该public类同名。
4 面向对象语言的3大特征
面向对象方法具有三个特征:封装(Encapsulation)、继承(inheritance)和多态(Polymorphism)。
封装:将对象的细节隐藏起来,通过一些公用方法来暴露该对象;
继承:继承是面向对象实现软件复用的重要手段,子类继承父类后,子类将获得父类的属性和方法;
多态:多态是子类对象可以直接赋给父类变量,但是运行时依然表现出子类的行为特征。