阳光男孩

Never give up!

Entries Tagged ‘学习’

Java基础之如何学习Java程序设计

15顶一下JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用。有编程高手认为,JAVA也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。 一、 培养兴趣 兴趣是能够让你坚持下去的动力。如果只是把...[阅读全文]

15
顶一下

JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用。有编程高手认为,JAVA也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。

一、 培养兴趣

兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个”食利阶层”。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。

二、 慎选程序设计语言

男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。

如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C++等之上多花时间,以期进入电信软件开发领域。如果你对操作系统比较熟悉,你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。

如果你想介入到应用范围最广泛的应用软件开发(包括电子商务电子政务系统)的话,你可以选择J2EE或.NET,甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之,你需要根据自己的特点来选择合适你的编程语言。

三、 要脚踏实地,快餐式的学习不可取

先分享一个故事。

有一个小朋友,他很喜欢研究生物学,很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会飞。有一次,他走到草原上面看见一个蛹,便取了回家,然后看着,过了几天以后,这个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,想抓破蛹壳飞出来。这个过程达数小时之久,蝴蝶在蛹里面很辛苦地拼命挣扎,怎么也没法子走出来。

这个小孩看着看着不忍心,就想不如让我帮帮它吧,便随手拿起剪刀在蛹上剪开,使蝴蝶破蛹而出。但蝴蝶出来以后,因为翅膀不够力,变得很臃肿,飞不起来。

这个故事给我们的启示是:欲速则不达。

浮躁是现代人最普遍的心态,能怪谁?也许是贫穷落后了这么多年的缘故,就像当年的大跃进一样,都想大步跨入共产主义社会。现在的软件公司、客户、政府、学校、培训机构等等到处弥漫着浮躁之气。就拿笔者比较熟悉的深圳IT培训行业来说吧,居然有的打广告宣称”参加培训,100%就业”,居然报名的学生不少,简直是藐视天下程序员。社会环境如是,我们不能改变,只能改变自己,闹市中的安宁,弥足珍贵。

许多初学者C++/JAVA没开始学,立马使用VC/JBuilder,会使用VC/JBuilder开发一个HelloWorld程序,就忙不迭的向世界宣告,”我会软件开发了”,简历上也大言不惭地写上”精通VC/JAVA”。结果到软件公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧起《C++编程思想》《JAVA编程思想》仔细钻研,早知如此何必当初呀。

“你现在讲究简单方便,你以后的路就长了”,好象也是佛经中的劝戒。

四、多实践,快实践

彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。

从前,四川边境有两个和尚,一个贫穷,一个有钱。一天,穷和尚对富和尚说:”我打算去南海朝圣,你看怎么样?”富和尚说:”这里离南海有几千里远,你靠什么去呢?”穷和尚说:”我只要一个水钵,一个饭碗就够了。”富和尚为难地说:”几年前我就打算买条船去南海,可至今没去成,你还是别去吧!”一年以后,富和尚还在为租赁船只筹钱,穷和尚却已经从南海朝圣回来了。

这个故事可解读为:任何事情,一旦考虑好了,就要马上上路,不要等到准备周全之后,再去干事情。假如事情准备考虑周全了再上路的话,别人恐怕捷足先登了。软件开发是一门工程学科,注重的就是实践,”君子动口不动手”对软件开发人员来讲根本就是错误的,他们提倡”动手至上”,但别害怕,他们大多温文尔雅,没有暴力倾向,虽然有时候蓬头垢面的一副”比尔盖茨”样。

有前辈高人认为,学习编程的秘诀是:编程、编程、再编程,笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。

五、 多参考程序代码

程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。许多人被《仙剑奇侠传》中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为什么要以悲剧结尾?据说是因为写《仙剑奇侠传》的程序员失恋而安排了这样的结局,他把自己的感觉融入到游戏中,却让众多的仙剑迷扼腕叹息。

参考代码例子,也可以研究一些开源的软件或框架。

六、 加强英文阅读能力 

对学习编程来说,不要求英语,但不能一点不会,。最起码像JAVAAPI文档(参考文献[4.4])这些东西还是要能看懂的,连猜带懵都可以;旁边再开启一个”金山词霸”。

看多了就会越来越熟练。在学JAVA的同时学习英文,一箭双雕多好。另外好多软件需要到英文网站下载,你要能够找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理层,进而可以成为剥削程序员的”周扒皮”。

七、 万不得已才请教别人

笔者在ChinaITLab网校的在线辅导系统中解决学生问题时发现,大部分的问题学生稍做思考就可以解决。请教别人之前,你应该先回答如下几个问题。

你是否在google中搜索了问题的解决办法? 你是否查看了JAVAAPI文档? 你是否查找过相关书籍? 你是否写代码测试过?

如果回答都是”是”的话,而且还没有找到解决办法,再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。

八、 多读好书

书中自有颜如玉。比尔?盖茨是一个饱读群书的人。虽然没有读完大学,但九岁的时候比尔?盖茨就已经读完了所有的百科全书,所以他精通天文、历史、地理等等各类学科,可以说比尔?盖茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富。

笔者在给学生上课的时候经常会给他们推荐书籍,到后来学生实在忍无可忍开始抱怨,”天呐,这么多书到什么时候才能看完了”,”学软件开发,感觉上了贼船”。这时候,我的回答一般是,”别着急,什么时候带你们去看看我的书房,到现在每月花在技术书籍上的钱400元,这在软件开发人员之中还只能够算是中等的”,学生当场晕倒。

九、 使用合适的工具

工欲善其事必先利其器。软件开发包含各种各样的活动,需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等等,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。

希望通过本文的介绍,能给你带来帮助。

Comments (13)

二级经验心得:菜鸟入门Java语言学习的要点

0顶一下一、掌握静态方法和属性          静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征。Java中大量应用了静态方法和属性,这是一个通常的技巧。但是这种技巧在很多语言中不被频繁地使用。理解静态方法和属性对于理解类与对象的关系是十分有帮助的,在大量的Java规范中,静态方法和属性被频繁使用。因此学习者应该理解静态方法和属性。Java在方法和属性的调用上是...[阅读全文]

0
顶一下

一、掌握静态方法和属性

         静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征。Java中大量应用了静态方法和属性,这是一个通常的技巧。但是这种技巧在很多语言中不被频繁地使用。理解静态方法和属性对于理解类与对象的关系是十分有帮助的,在大量的Java规范中,静态方法和属性被频繁使用。因此学习者应该理解静态方法和属性。Java在方法和属性的调用上是一致的,区别只表现在声明的时候,这和c++是不同的。

二、重视接口

       在面向对象早期的应用中大量使用了类继承。随着软件工程理论的不断发展,人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接口近年来逐渐成为Java编程方法的核心。另一方面,就应用而言,大部分开发是建立在规范基础之上的,不需要自己建立复杂的继承关系和庞大的类。因此读懂规范和用好规范已经成为应用程序开发人员的首要任务,Java各项规范的主要描述手段就是接口。

三、学好集合框架

        Java描述复杂数据结构的主要方式是集合框架。Java没有指针,而是通过强大的集合框架描述数组、对象数组等复杂的数据结构。学好这些数据结构的描述方法对于应用程序编写,特别是涉及到服务器方、3层结构编程至关重要。程序员在这个时候不能再用诸如数据库结果集之类的结构描述数据了。
由于很多语言没有这么强大的集合框架体系,很多初学者不知所措,更不知道拿来做什么用,因此应该引起足够的重视。

四、例外捕捉

        Java对例外捕捉的强调是空前的,它强迫程序员用显著的与逻辑方法完全不同的方式描述例外捕捉,对于程序描述的完整性和严谨性有很大的意义。c++也有类似的机制,但是我们看到很多c++程序员并不习惯使用这些机制。
Java的初学者应该充分学习好这种例外捕捉机制,养成良好的编程习惯。

五、多线程需要理解机理

        很多Java程序员热衷于多线程程序编写,认为是对逻辑能力的挑战。其实在大量应用中根本就不需要编写多线程程序,或者说大多数编写应用程序的程序员不会去写多线程程序。这是因为多线程机制都内置到基础平台当中了。
程序员应该了解的是多线程原理和多线程安全,这对于今后准确地把握程序是至关重要的。
例如JSP中编写到不同的位置对于多个用户环境的安全影响完全不同,又如著名的Super Servlet是每一个访问作为一个进程,但是每一个页面是一个线程,和Servlet正好相反,对程序的性能和安全的影响有天壤之别。

六、了解网络编程

        Java号称是最强的网络编程语言,但是大多数应用程序开发人员是从来不会自己开发什么底层的网络程序的。
需要做只是了解原理就够了。网络机制的实现是靠平台实现的,除非自己开发平台,否则是不需要知道socket怎么实现,怎么监听访问的。因此在这方面花太多的功夫就偏离了“将来的应用开发是在成熟的平台上展开,而不是自己从底层开发平台”这一假设。

Leave a Comment

Java中的abstract基础学习

2顶一下abstract作为修饰符,可以修饰类和方法。 不能手动创建对象(JVM可以创建抽象类的对象),但是可以声明抽象类型的引用。 publicclassTestAbstract1{ publicstaticvoidmain(Stringargs){ //Animala=newAnimal();//error Animala=null; a=newDog(); } } abstractclassAnimal{ } classDogextendsAnimal{ } 有方法名的定义,没有实现,(只定义了能做什么,没定义怎么做) 抽象方法的好...[阅读全文]

2
顶一下

abstract作为修饰符,可以修饰类和方法。

不能手动创建对象(JVM可以创建抽象类的对象),但是可以声明抽象类型的引用。

publicclassTestAbstract1{

publicstaticvoidmain(Stringargs){

//Animala=newAnimal();//error

Animala=null;

a=newDog();

}

}

abstractclassAnimal{

}

classDogextendsAnimal{

}

有方法名的定义,没有实现,(只定义了能做什么,没定义怎么做)

抽象方法的好处是允许方法的定义和实现分开。

abstractclassAnimal{

publicabstractvoideat();

}

抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法

抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类。

abstractclassAnimal{

publicvoidrun(){}

publicabstractvoidsleep();

publicabstractvoideat();

}

classDogextendsAnimal{

publicvoidsleep(){

System.out.println(“Dogsleep.”);

}

publicvoideat(){

System.out.println(“Dogeat.”);

}

}

abstractclassCatextendsAnimal{

publicvoideat(){

System.out.println(“Cateat.”);

}

}

可以声明父类类型子类对象,利用多态调用抽象方法

publicclassTestAbstract1{

publicstaticvoidmain(Stringargs){

Animala=null;

a=newDog();

a.sleep();

a.eat();

}

}

抽象类有构造方法,有父类的,也遵循单继承的规律

classE{}

abstractclassAnimalextendsE{

publicAnimal(){

super();

}

}

publicprotecteddefaultprivatestaticfinalabstract

可以连用:

publicstatic

privatestatic

publicfinal

publicstaticfinal

不可以连用:abstractfinalvoideat;

privateabstractvoideat;

staticabstractvoideat;

abstract不能和final,private,static连用

Comments (37)