Java学习笔记(0)——了解Java

前言:

这里是一些关于写文的原因,目的和其他的有的没的,跟Java没有一点关系,如果是想要学习干货的童鞋可以直接跳过。

系列文章最开始的名字是:从零开始学习Java,一来是觉得太长了(改了之后也不短),另外一个一觉醒来觉得好像这个名字不能准确反映自己写文的目的,并且我发现要把一些概念解释得特别清楚给没有编程基础的人看,对我来说是很有难度的一件事情,所以决定把名字改了,笔记是可以改的,就像今天突然想起这一篇有些东西还需要添加就来改了,这也是我喜欢的并乐意做的事情,share。——17.9.18更新

写文的几个原因:

这学期笔者也开了Java的课,上的第一节课老师说:教材,你们花两个星期大概看一下就可以扔了。有些同学当笑话听了,有些同学不以为然,而我当真了,我真的把郑莉著的教材《Java语言程序设计》(第2版)“看了一遍”,还不到两个星期,当然其中有一些问题没有去深究,比如数据库还有线程的东西,因为老师说的后面一句话我也认真听了:可以申请不来上课。所以就着笔者c++微薄的基础拉完了一遍教材,很是粗糙,想要重新学习一下,这是一个原因。

昨晚看到简书上的一位博主:CleverFan。他写下的重新认识Java系列,很是受用,本来保持得很好的生物钟,也因为看到他的文章,硬是看到了接近2点,(在此推荐一下)也由此也产生了写文的冲动,这也是一个原因。

今天去看了一下关于Java方面比较权威的两本儿书,一本《Thinking in Java》、《Java核心技术 卷Ⅰ》,觉得写得特别棒,也产生了一些自己的想法,想要分享。

写文的目的:

首先需要说的是笔者是一名学渣渣。我也是正在学习,写文更多的目的是在于交流想法,分享学习成果,也是给自己增加一些积累。还有就是觉得有些教材讲得太生涩难懂,这一点也是我看CleverFan的博文想到的,希望自己能通过一些更加好玩的方式写出来。也希望文章有什么问题能够及时反馈给我。

关于更新:

因为个人性格的原因,我总是希望能把一件事情做得很好,所以如果有很久没有更新的情况,那就当我正在努力想怎么写文吧…hhh

我会尽可能快的更新文章,也尽可能用通俗易懂的方式说明,会把读者大大们当成是第一次接触Java去细致的讲解,也希望读者大大们能支持我的文章,关于后期维权的东西还没有去想,所以希望如果有转载的请注明一下原文出处谢谢。

正式开始之前

先问自己一个问题:Java是什么?如果你的答案仅仅是停留在:是一门编程语言的话,希望看完这篇文章的你,对Java有一个更加全面深入的了解。至少在学习一门语言之前,了解一下自己要学的是什么,对吧?

Java的简单描述

以下大内容部分提炼自Java核心技术 卷Ⅰ 。

Java最初的设计初衷是:

能够用于像有线电视转换盒一类处理能力和内存都很有限,并且CPU厂商各不相同的一些消费设备上。
然而时至今日在Java的开发者编写的白皮书中(这是Java设计者用来解释设计的初衷以及完成的情况的简短摘要),对Java的描述却是这样的:

你不必全部都读一遍,笔者读来大体的感觉是:为使用者创造了一个更加容易,甚至是dead simple的面向对象的语言,并同时具有移植性好,安全,开发周期短等一系列优点,也为你在烦恼c/c++的复杂性的时候提供了一个新的选择。白皮书的描述更偏向于讲述这是一个更加简单友好的工具,Sun对Java的设计目标就是:微程序员减少复杂性。用他们的话说就是:我们关心的是,减少开发健壮代码所需的时间以及困难。

事实上,Java的成功也源于其类库能够让人们轻松地完成原本有一定难度的事情。例如:联网和多线程。尽管Java对于解决传统的单机程序设计问题非常有用,但同样重要的是,它解决了在万维网(WWW)上的程序设计问题(把超文本页面转换到屏幕上的浏览器)。在白皮书的最后提到了HotJava TM Browser,这是Java开发者使用Java开发的一款用来炫耀Java的强大之处的浏览器,HotJava浏览器具有的在执行网页中内嵌代码的能力在1995年的SunWorld大会上,引发了人们延续至今的对Java的狂热追逐。

Java的成功源自语言本身的一些特性,以及Sun公司的进一步研发和推广。白皮书中对于Java的11个关键术语进行了组织:

关于这一段的描述,《Java核心技术 卷Ⅰ》有有趣简单的描述,感兴趣的可以去百度一下。然而笔者认为,事实上,这些特性现在浏览一遍,心里面知道就行了,没必要去深入,也没有什么用。事实上这一篇文章都是。

Java与其他语言的区别

  • Java是由c++发展而来的,因为最初开发Java的是Sun公司那一批拥有UNIX应用背景的人,Java更像是C++语法的一个“纯净”版本。这里没有头文件、指针运算(甚至指针语法,但并不代表取消了指针机制,这在后面会讲到)、结构、联合、操作符重载、虚基类等。然而,设计者并没有试图清除C++中所有不适当的特性。例如,switch语法的语法在Java中就没有改变。事实上,Java还有许多奇怪的语法,后面也会提到。
  • JavaScript和Java除了语法类似,名字类似 ,其他再无什么关系。JavaScript是一种在网页中使用的脚本语言,而Java则是一种强大的面向对象的语言,重点在对象和对象的接口上,而并非所使用的工具上。

面向对象设计是一种程序设计技术。用木匠打一个比方,一个“面向对象的”木匠始终关注的是所制作的椅子,第二位才是使用的工具;一个“非面向对象的”木匠首先考虑的是自己的工具。

关于Java applet

其实很简单,网页中运行的Java程序就是applet,只不过需要一些特别的语法来说明。网页中的嵌入的applet程序就如同在网页中嵌入了一副图片,不同的是,这幅图片能够对于用户的操作作出响应,改变外观、传递数据等。关于这方面可以做一些相关的了解,但笔者并不打算深入研究这方面的东西。

了解面向对象

所有的编程语言都提供抽象的机制。就像汇编语言是对于底层机器的轻微抽象。接着出现了所谓的“命令式”语言(如FORTRAN、BASIC、C等)都是对汇编语言的抽象。这些语言在汇编语言的基础上有了大幅的改进,但是它们所作的主要抽象仍要求在解决问题的时候要基于计算机的结构,而不是基于所要解决问题的结构来考虑。程序员必须建立起在机器模型和实际待解问题之间的模型的联系。而建立这种映射是费力的,这不是属于编程语言的固有的功能,这使得程序难以编写,并且维护代价高昂。

面向对象的方式通过向程序员提供表示问题空间中的元素的工具而更进一步。那么什么是面向对象呢?所谓对象,其实就是抽象化的数据本身。万物皆是对象,一只狗,一个人,一栋建筑,而这些对象拥有他们自己的一些行为,比如狗要吃饭,要跑,把这些称为属于狗的方法,然后把用一个叫做“类”的东西来打包(封装)好狗这个对象还有属于它的方法,也就是数据和功能。这就是面向对象,它的本质就是:程序可以通过添加新类型的对象使自身适用于某个特定的问题。仅此而已。

写在文章的最后:整篇文章读了好几遍,最开始本来是打算把整一段《Java核心技术 卷Ⅰ》关于Java简史的东西贴出来的,但发现好像用处并不会很大,只有增加篇幅的作用。文章的大部分内容来自于上文提到的两部经典教材,第一次写文,希望喜欢的多多支持,有什么不足也能及时提出,谢谢。


   转载规则

 上一篇
Java学习笔记(1)——搭建好所需要的环境 Java学习笔记(1)——搭建好所需要的环境
前言:后来仔细思考了一下,从零开始学习Java的系列标题略长(实际改过来的也不短),并且不能正确反映写文的目的,所以决定从这一篇开始改为Java学习笔记。之前的一篇文章在一觉醒来以后也觉得有些不太好还有一些需要添加的地方,所以后来这一个系
2017-09-18
本篇 
Java学习笔记(0)——了解Java Java学习笔记(0)——了解Java
前言: 这里是一些关于写文的原因,目的和其他的有的没的,跟Java没有一点关系,如果是想要学习干货的童鞋可以直接跳过。 系列文章最开始的名字是:从零开始学习Java,一来是觉得太长了(改了之后也不短),另外一个一觉醒来觉得好像这个名字不
2017-09-17
  目录