《学不会的java,消不了的忧愁》之四——献给那些酷爱计算机编程的人们

发言者:jigenghua

时 间:2001/03/12 23:01:47 来 自:www.javaunion.org

——————————————————————————–

这一回,我不想谈那么多的感概了,我用自己的话来说说java,请大家来做几道判断题,认为对的,你可以不开声,认为错的,可不要忘了指出来。所有这样问题,面向像我一样的菜鸟,大虾也可以看看。

学习一和编程语言,不外乎两种背景:其一,兴趣爱好;其二,工作需要。在学校里,可能还有第三种背景——那就是必修课程。

在我看来,凭兴趣爱好学的东西学得很快,印象也很深,但没有很好地结合实践应用,自己也想不出什么真正有价值的课题去实现它,所以这种知识水平并不是很高。我见过很多这样的朋友,他们对vfp、vc的道理懂得真不少,可一问到一些真正有用的东西,他们回答得总是那么不尽人意。我曾经深爱着c,也会用它编一些简单的小程序,不过,从来就没有用它做过什么工程,所以,在外面应聘的时候,我不敢说我精通c,虽然知道自己的c水平很不错了。不过呢,话又说回来,一旦有了理论水平和基本功,真正遇到难题的时候,往往都能很快解决,所以凭兴趣爱好掌握的东西用途也是挺大的。

相反,因为工作的需要,自己不得不去掌握的东西一旦自己搞懂了,印象会更深刻。由于所有的“知识”都是建立在以“用”的基础上,掌握到了的东西就是活生生用得到的、看得到的东西,所以谈不上什么学不致用的问题。这种知识处处以实践为基础,一分钱一分货,最能解决实际问题,这也就是用工单位为什么那么注重实际工作经验的真正原因:招到有经验的老手,新工作上手很快,工作质量也很高!(我没有什么学历,中专生一个,但我早在95年的时候就开始用fox真枪实刀地干,半工半读,为工商所、商场、酒店、制造厂、甚至我的校图书馆免费开发了一个又一个的数据库应用软件,这些软件,在我们江西内地,大多数至今还活得挺好的。这么多的软件,为我98年四月份在深圳能找到一份别人看来复杂、而我看来一般般的数据库网络编程工作打下了了不起的基础。来到这里不到半年,一家很大的电子厂,不知是通过什么渠道,连打三次电话给我,叫我过去帮他们搞编程,我想学java,不想再搞vfp了,所以没有答应,虽然对方开的报酬比我现在要高一个档次。)我的经历告诉我,学历并不是很重要的,关键是真正的水平,你能带着你亲手制作出来的cpu芯片到联想去应聘,哪怕你从来没有进过校门,柳传志也会叫你一声干爹。明白了能力的“妹”力以后,我不再刻意追求什么本科学历、研究生学历,我只想好好学点有用的东西,用能力向别人展现自己的风采!(有点吃不到葡萄就不吃葡萄的心态)

至于第三种学习知识的方法——为了修完课程而学,通过这种方式来掌握知识,基本上没有什么好谈的了,一句话,没有什么用啦!或许我讲的太武断太偏激。

我学java,既不完全是凭兴趣爱好,也不是因为工作压得非学不可,只是基于学java的一种潮流,和不久的将来的工作需要,错过了学vc、vb的疯狂时代,也错过了学cgi、asp的关键岁月,我不能再错过java,我输不起!

正是因为以上的原因,我把java建立在将来的应用上,所以学得不是那么的累,人没有压力学东西往往很慢。一个面向对象的概念,看了一遍又一遍,不但弄不明“面向对象”是何物,连对象是什么东东,都似懂非懂,还以为面向对象是把脸面向着对象(face to object),就算这样理解,面向着对象干什么?发神经啊?很多很多的书,标题写得不错——“什么叫面向对象”,抑或“面向对象的概念”,可看完之后,还是一头雾水。

最令人恼火的是很多书对类(class)的定义:具有相同特性的多个对象的一个实体。去他奶奶的,老子连对象还不太懂,就用对象来说明类的定义,还加上一个怪异的词语——实体。这样的定义能说明什么问题?也许是写书的人太聪明了,以为大家的头脑都是抽象的,不会想木头、石头、狼和兔子之类的具体东西。

他完全可以想到这个词:模板,用模板代替实体,就成了类是具有相同特性的多个对象的一个模板,这样呆板的解释,当然不能让初学者对类这个重中之重的概念留下难于忘怀的印象。假如他能像我这样解释,请看下文:

传说中上帝造人是用模子来造的,上帝造人用的模子就是类(class),当然模子也不是天生的,由上帝根据自己的想象制作,作好了模子以后,造人可就方便啦,几乎不用动脑筋,泥巴往模子里一丢,一个人就出来了,出来了的这个人就有了眼情啦、鼻子啦、耳朵啦,等等,最重要的是,这个人会说话,会唱歌、跳舞……

以上这个例子中,类就是模子,专门用来制作一些有很多共同点的实物,用模子造东西的最大好处就是可以偷懒,一劳永逸,用类来开发软件的妙处也正在于此。模子造出来(对“造出来”这三个字打上着重号,引起读者的注意)的东西有一个响亮的名字:对象或实例,因此,在java里面,我们讲的对象或实例,都是指已经用类制作好了的。用类制作对象这个动作,也有一个各位不太好懂的名字——类的实例化,或叫类的一个实现,好听吗?你们可要记在心里。

不知大家是否注意到,我上面说过,上帝用类造出人这种对象具有很多很多的特性,像眼情有大、眉毛有多长、牙齿有几颗、人长得是否靓仔等等叫做对象的属性(attribute),一个对象视它简单与复杂,属性可以没有一个,也可以有多个。而人会说话、会打架、会谈恋爱……这些涉及到动作的行为叫做对象的能力(ability),但在java里面叫做对象的方法(method),假如你的思想被vc化,你把它暂时理解为函数也不是不可以的。

通常我们讲的“面向对象编程”这种方法,或说这种思想,就是要求大家学习上帝造人这种方式、这种思想,把所有程序分成一个一个的功能块,有些功能块不仅你正在编写的这个程序用得到,将来编写的其它程序也可能用得到,正是你会这么想,把一些通用的功能块抽出来、概括出来,用一个独立的、能被其它类制造时调用的名字命名它。用这种思想去设计程序,叫什么面向对象编程(oop)。

这一贴,我讲了学知识的三种背景,不同的背景学知识会有不同的方法,从面产生不同的效果。

我也介绍了类、对象、面向对象编程、对象的属性、对象的方法这些基本的概念,大家懂了吗?

下一贴,我将接着介绍类库的概念,还有父类、子类、类与类之间的遗传(继承),并教大家怎样快速用jdk这个工具

开发小程序。虽然有很多的可视化开发工具可以用来开发java软件,但不懂使用jdk工具的java开发人员,跟只懂linux的x windows不懂它的shell操作一样,属于低能的操作员。

所有这些贴子,都是出自于个人爱好,连载出来,目的只有一个:为了别人,也为了自己把java学好!

请看下贴《学不会的java,消不了的忧愁》之五——献给那些酷爱计算机编程的人们。

java基础学不会,转:《学不会的JAVA,消不了的忧愁》之四-JSP教程,Java基础相关推荐

  1. java指定sql生成xml,用Java实现可保存状态的数据库生成XML树(8)-JSP教程,Java与XML...

    4.ejb-jar.xml文件 //sun microsystems, inc.//dtd enterprise javabeans 1.1//en http://java.sun.com/j2ee/ ...

  2. java程序获取外部java程序的控件,将 Java 小程序迁移到 Microsoft J# 浏览器控件-JSP教程,Java技巧及代码...

    visual j# .net 小组 microsoft corporation 摘要:通过 microsoft j# 浏览器控件,开发人员可以将所编写的在 java 虚拟机上运行的 java 小程序迁 ...

  3. java代码写jsp读取,Java IO学习基础之读写文本文件-JSP教程,Java技巧及代码

    java的io操作都是基于流进行操作的,为了提高读写效率一般需要进行缓冲. 简单的示例程序如下: /** * 读出1.txt中的内容,写入2.txt中 * */ import java.io.*; p ...

  4. java inner class,C# Inner Class vs. java 的inner class比较-JSP教程,Java技巧及代码

    作者: leafwiz www.aspcool.com 时间:2004-11-6 15:50:57 阅读次数:1811 今天朋友问到,为什么在c#中inner class不能够访问外部类的非静态成员, ...

  5. java获取jsp 组件,利用Observer模式解决组件间通信问题-JSP教程,Java技巧及代码

    1. 问题的提出 以前做一个界面的时候常常会遇到这样的尴尬情况:希望保留各个独立的组件(类),但又希望它们之间能够相互通信.譬如windows中的explorer,我们希望鼠标点击左边是树型目录的一个 ...

  6. java打包后发布找不到jsp_eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)...

    我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的 ...

  7. java线程池游戏代码,Java游戏起步:(一)线程与线程池-JSP教程,Java技巧及代码...

    任何游戏都至少需要运行两个线程,主线程和gui线程 而线程池是一个管理运行线程的有用工具,下面的代码示范了一个线程池的实现方法~~ ********************************** ...

  8. eclipse启动提示java,Eclipse启动时报错-JSP教程,Java技巧及代码

    前些日子下载了最新版本的eclipse3.0,解压到d:\eclipse目录下,启动时弹出一个小提示框说出错请查看eclipse\configuration\下的一个*******.log文件.文件中 ...

  9. 用java写四则混合运算,JAVA写的四则混合运算-JSP教程,Java技巧及代码

    这是一个四则混合运算程序,没什么做优化,也没做什么注释,(人啊,总喜欢偷懒的.) 这个版本我已经定为了2.21版本.呵呵. 从最先的1.0到2.0的改动很大.除了运算思想没动处,其它的都在2.0做了重 ...

最新文章

  1. Linux之CentOS防火墙及端口操作
  2. matlab简单程序实例_【简单实例】如何使用C++加速python程序
  3. java时间错误_更改操作系统时间时睡眠()中的Java错误:任何解决方法?
  4. python3虚拟环境使用教程_python虚拟环境完美部署教程
  5. 话说这发表日志跟聊天似的简单很啊。
  6. 自动服务器批量装机,PXE高效批量网络装机
  7. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...
  8. ssm项目的maven-pom.xml
  9. matlab如何求无穷多项乘积的极限,求极限方法小结
  10. CDH集成ES MasterNotDiscoveredException问题解决
  11. ENSP实验——Telnet远程连接
  12. VMware ESX Server常用命令行
  13. NPOI导出Word并插入表格和图片
  14. javaweb课程设计:基于websocket的网络聊天室(所有的资源和代码还有详细步骤我都会提供)
  15. rviz中的标记(markers)和交互标记(interactive markers)
  16. 网易云课堂web安全学习第七天——了解url跳转漏洞
  17. Linux下/sys目录介绍
  18. 自如2020新产品发布:全面打造智能租住生活
  19. Android tv树莓派遥控器,树莓派的kodi设置遥控器的方法
  20. 默认构造函数,=default,=delete

热门文章

  1. 前缀和——(3)树上前缀和
  2. 通过 SSH 在远程和本地系统之间传输文件的 4 种方法
  3. vue全局变量存储的几种方式
  4. Qt 3D使用攻略(4)-Qt3D之QML Types
  5. android生成分享长图并且添加全图水印
  6. [放下,心宽,自在] 觉真法师序钹集节选
  7. 6月25日腾讯大规模掉线 旗下游戏全线关闭
  8. PreferenceCategory背景颜色设置
  9. android View 自动 GONE 问题
  10. 金融金句(收藏使用)