java学习总结

时间:2023-02-27 03:42:03 作者:非正式实地研究 其他工作总结 收藏本文 下载本文

【导语】“非正式实地研究”通过精心收集,向本站投稿了18篇java学习总结,这里小编给大家分享一些java学习总结,方便大家学习。

篇1:java学习总结

JAVA一直是很多人喜爱的一种编程语言,在这里北大青鸟徐东校区的老师希望各位努力并快乐的学习这门语言。学习JAVA需要多看SUN公司提供我们的资料信息,了解常用类的属性和方法。

我发现我们有很多同学在用常用类的时候,经常会把类里面的方法和自定义的方法搞混。记得有一位老师说过“学习要抱有一种钻研的态度”。我对这句话的理解是当我们学习到一个新的知识点的时候,需要不断理解和消化。

这可能是一个长期的过程,不能抱有一种急于求成的态度。以下内容是北大青鸟老师整理的一些JAVA基础:

一、SDK和JDK的区别 SDK是软件开发工具包,JDK是SDK的一种,其实它是JAVA SDK。JDK在早期的版本中也是叫SDK,在1.2版本以后才叫JDK。

二、J2EE、J2SE、J2ME区别

J2EE:JAVA2平台的企业版,主要应用于WEB和大型企业的开发。

J2SE:JAVA2平台的标准版,学习和一般的开发。它包含于J2EE。

J2ME:JAVA2平台的微缩版,主要应用于电子设备(手机)方面,它包含有J2SE的核心部分之外,还有一个专业的类。

三、JVM的'运行机制类加载→类校验→类执行

四、JAVA、JAVAC、JAVADOC的用法

篇2:java学习总结

1、我感觉学习java应该是循环渐进,有始有终,按部就班,脚踏实地。java是一门有着阶梯性的一们语言,如果要学习它。我觉得最好还是按照java的学习体系,先学习什么,在学习什么,只有这样,我们在学习中才会遇到更少的麻烦。

java是一门更倾向于网络的语言java学习心得体会java学习心得体会。不要上来就学习JSP,这样不好,因为这没有基础。在以后的学习中很可能遇到很多的麻烦,这就不好了。

2、信心,恒心,毅力是最重要的。这是我们必须具备的心理素质。要是学习这门语言开始的时候很有兴趣,遇到苦难就退缩,这样最终会放弃学习java,没有经历风雨怎么见彩虹。编程就是有的时候就是那么这么人java学习心得体会心得体会。

会遇到很多的困惑。但是一旦你弄懂了,或者是你把问题解决了,你会感到很兴奋,编程的快乐就在此了。

篇3:java学习总结

学java不知不觉也已经三年了, 从不知java为何物到现在一个小小的j2ee项目经理,虽说不上此道高手,大概也算有点斤两了吧。每次上网,泡bbs逛论坛,没少去java相关的版面,总体感觉初学者多,高手少,精通的更少

由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间。还有一个很重要的原因就是java这门语言更适合商业应用, 所以高校里大部分博士老师们对此语言的了解甚至不比本科生多。

在这种环境下,很多人对java感到茫然,不知所措,不懂java能做什么?即便知道了java很有用,也不清楚该从哪里入手,所以就有了java入门难这一说法。

ok,那我们就从java到底能做什么聊起

先说什么是java

java是一种面向对象语言,真正的面向对象,任何函数和变量都以类(class)封装起来。至于什么是对象什么是类,我就不废话了。

关于这两个概念的解释任何一本面向对象语言的教材里面都有

知道了什么是java,那自然就会对java能干什么感兴趣

在说java能做什么之前,先说java作为一个真正面向对象语言的优点

首先第一个,既然是真正的面向对象,那就要做到彻底的封装

这是java和c++最大的不同,java所有的源码以及编译后的文件都以类的形式存在

java没有所谓的类外部定义,所有的函数(方法)以及变量(属性)都必须在类内部定义

这样就不会出现一个类被切割成这里一块那里一块的情况,c++就可以,不是么?

老外看unix界面其实挺顺眼的,他们就是吃unix饭长大的。而unix又是吃百家饭的,不像ms那么唯利是图,所以不怎么对中国人友好。加上我国又没有公司在做操作系统,所以看上去是不怎么顺眼。其实玩过unix的人都知道,unix对中文的支持一直不怎么好

三我还没想到,其他人补充

这样做使得整个程序的结构异常清晰明了

其次第二个,最让人欢呼雀跃的是完全屏蔽了指针,同时引入了垃圾回收机制,任何一个写过c/c++代码的人,都会对内存管理深恶痛绝。因为这使得我们不能把主要精力放在我们关心的事情上,而需要考虑计算机内部的一些事情,作为一个软件工程师,我想没有一个人愿意把大量的时间花在内存管理上,毕竟我们不是电子工程师

此时java的优势体现出来了,它完全屏蔽了内存管理。也就是说,如果你用java写程序,写出来的任何一个程序内存上的开销,都不受你控制。乍一看,似乎你受到了束缚,但实际上不是这样。

因为虽然你的程序无法对内存进行管理,降低了一定的速度,但你的程序会非常非常的安全,因为你无法调用一个空指针,而不像以前写c的时候那样,成天因为空指针而担惊受怕。

当然,如果你深入了解这一行,就会发现java其实也无法保证程序不去调用空的指针,但是它会在最大程度上避免空指针的调用。这已经很好了,安全,这是java的最突出的优点。

第三个,虚拟机跨平台,这是java最大的特点,跨平台。

可能所有人都知道windows,但是不是所有人都知道unix 。和java一样,很多人都不知道unix这种操作系统干什么用。我不想多说unix的应用,这不是主要,但是我要说,大部分小型机、工作站,都跑在unix一族的操作系统上,比如linux/solaris

unix比起windows有一个最显著的特点,稳定,这就好比思科和华为。思科的机器慢但稳定,华为的机器快但不稳定,作为服务器这一端来说,要的評nix在服务器端还是非常有市场的。而且很重要的windows不安全,在ms的宣传中我想所有人都很少看到安全二字。

因为windows操作系统针对的是pc用户,pc死机就死机咯,大不了重启。

windows95最经常冒出来的就是蓝屏,在服务器这一端上因为ms没有自己的芯片。

所以要做系统有些力不从心啊。扯远了,那么java可以做到在windows上编译,然后在unix上运行,这是c/c++做不到的

那么说到这里,java能做什么逐渐清晰起来。

刚才说到了,java程序有一个的特点是安全。这个安全是针对你的系统来说得,系统在跑了java程序之后会特别地稳定。而且还能跨平台,那么很明显,java主要应用于除了windows操作系统以外所有的平台。比如手机,服务器。想想看,如果你写的程序要跑在手机上,而手机有多少款用的是windows?

就算有,那如果你用c/c++,是不是要针对每一款手机写一套程序呢?

累死,那跨平台的java就不用,做到编译一次,随时运行。同样,在服务器这一端,如果我想给一个网络门户站点,比如sina 。

写一个应用程序,pc的性能肯定无法满足sina这样大站点并发数量的要求。那么它就需要买服务器,那么服务器ms没有市场,而且windows很不安全。那么十之八九会买一个sun/ibm的机器,或者hp,但不管是谁的机器

它装的操作系统也不会是windows,因为windows太不安全了,而且多核的支持太差了。

程序内存上的开销,都不受你控制。乍一看,似乎你受到了束缚,但实际上不是这样。 因为虽然你的程序无法对内存进行管理,降低了一定的速度,但你的程序会非常非常的安全,因为你无法调用一个空指针,而不像以前写c的时候那样,成天因为空指针而担惊受怕。

当然,如果你深入了解这一行,就会发现java其实也无法保证程序不去调用空的指针,但是它会在最大程度上避免空指针的调用。这已经很好了,安全,这是java的最突出的优点

第三个,虚拟机跨平台,这是java最大的特点,跨平台

可能所有人都知道windows,但是不是所有人都知道unix 。和java一样,很多人都不知道unix这种操作系统干什么用。我不想多说unix的应用,这不是主要,但是我要说,大部分小型机、工作站,都跑在unix一族的操作系统上,比如linux/solaris

unix比起windows有一个最显著的特点,稳定,这就好比思科和华为。思科的机器慢但稳定,华为的机器快但不稳定,作为服务器这一端来说,要的皇怯卸嗫欤俏榷ǎ??評nix在服务器端还是非常有市场的。而且很重要的windows不安全,在ms的宣传中我想所有人都很少看到安全二字。

因为windows操作系统针对的是pc用户,pc死机就死机咯,大不了重启。

windows95最经常冒出来的就是蓝屏,在服务器这一端上因为ms没有自己的芯片。

所以要做系统有些力不从心啊。扯远了,那么java可以做到在windows上编译,然后在unix上运行,这是c/c++做不到的

那么说到这里,java能做什么逐渐清晰起来

刚才说到了,java程序有一个的特点是安全。这个安全是针对你的系统来说得,系统在跑了java程序之后会特别地稳定。而且还能跨平台,那么很明显,java主要应用于除了windows操作系统以外所有的平台。比如手机,服务器。想想看,如果你写的程序要跑在手机上,而手机有多少款用的是windows?

就算有,那如果你用c/c++,是不是要针对每一款手机写一套程序呢?

累死,那跨平台的java就不用,做到编译一次,随时运行。同样,在服务器这一端,如果我想给一个网络门户站点,比如sina 。

写一个应用程序,pc的性能肯定无法满足sina这样大站点并发数量的要求。那么它就需要买服务器,那么服务器ms没有市场,而且windows很不安全。那么十之八九会买一个sun/ibm的机器,或者hp,但不管是谁的机器

它装的操作系统也不会是windows,因为windows太不安全了,而且多核的支持太差了。

篇4:java培训学习总结

不知不觉来到尚学堂学习已经一个多月了。回想起没有开始决定培训之前,自己其实一直是在矛盾和犹豫中徘徊。在那个时候,左老师是最开始找我聊天的,开始了解到尚学堂也是从她那儿。一直以来其实都没有考虑过要参加这样的培训,那时的我还很坚定地说,我要考教师资格证,家里人也支持我以后去当老师的。但是当我得知,教师资格证得应届毕业生才能考,并且从开始改革后,我就开始纠结了。其实也不能说是纠结,只是觉得考教师资格证不需要花那么多的时间,这样我还有一年多的空闲时间,不能这样子白白浪费了,而自己又没有打算考研。于是,对于信息计算科学这样一个专业的我,我觉得自己是不是可以考虑去参加培训,这样毕业以后也不失为一条出路,毕竟自己对计算机还是有兴趣的。

经过一段时间的思量,也比较了一下中信和尚学堂,最终还是选择来到了尚学堂。给我和同伴上第一节试听课的是李毅老师,他给我留下了深刻的印象,不仅是人长的帅气,最重要的是他讲课的风格我很喜欢,能让我瞬间产生浓厚的兴趣。开始一直期盼着要是他给我们上课该多好,结果到第一次正式上课的时候,给我们授课的并不是他,而是阮总。说实话,开始有点小小的失望。但是,经过了一个多月的培训,我发现阮总其实也是一个很幽默的人,上课的时候,也总是能将那些比较抽象的概念什么的,用生活中的一些实际例子具体化,让我们更好的去吸收与消化。慢慢地其实也就习惯了,觉得也没有什么不好。毕竟学知识,最重要靠的还是自己,老师只是一个引导而已。

在尚学堂,比较庆幸,可以认识一群新的朋友,虽然大家平常接触还不是那么多,但是我相信,在以后更长的日子里,我们可以相互了解的更多,成为很好的朋友。

当然,这一个月多里,收获更多的是知识。在刚开始的前一段时间里,阮总初步的教我们了解了XHTML和CSS的部分基础知识,让我们领略到了网页设计的奇妙之处。当我第一次自己学会做一些简单的网页界面时,我很兴奋,真的很兴奋。虽然第一次做的网页被阮总说很丑,但我还是很开心,我还很肯定的和同伴说,我们的前途一片光明。后来,阮总告诉我们,其实网页设计那部分并不是我们要学习的,只是我们要了解一下,看得懂代码的意思就好,还风趣地说我们不是美工,不能抢了别人的饭碗。接下来的日子,是在寒假了,我们开始正式接触到JAVA学习。我想,这是初级阶段,也应该是基础阶段,一定要把基础打牢,以后的学习才不会那么吃力。开始的那部分是JAVA的基础知识,我发现和C语言区别不是很大,在学校有认真地学习过C语言,所以基础知识部分学起来还是很轻松的。学完基础知识一直到现在,我们接触的是JAVA面向对象的学习,这是一个崭新的过程,其他人我不清楚,至少对于我来说是这样。我发现,这部分学习的内容没以前学的那么轻松,单一的操作也许会,就是很多情况下自己要会灵活的运用。而且,正像阮总说的,教的知识肯定是教不完的,重点是我们要自己学会找到学习方法。其实,很多东西都没有你想象的那么难,只要你肯努力,肯下功夫,找到方法后,你也是可以做的很好的。我发现,光听老师讲,真的是远远不够,重点在于课后一定要多练习,这样才能帮助自己更快的接受新知识。

寒假过来后,阮总告诉我们,寒假他都没有怎么休息一直在家里学习,他说,你只有不断地去学习新的知识,你才可能比别人收获的更多。听完他说的,然后比较着自己,阮总真的是不简单,挺佩服他的。我想,在尚学堂这样一个积极上进的集体中,我也会成长的很快,收获的很多。我依然坚信自己前途一片光明。

篇5:java培训学习总结

java培训从开始的5月11号到现在已经过了两个月了,感谢源动(中国)给与我们这次宝贵的培训,使学员在日后的社会中增加了竞争筹码。我个人非常重视这次培训的机会。

从一开始的java OO,数据库,SE,会计基础到进段时间学习的HTML,CSS,JAVASCRIPT,使我们都有了不同程度的提高。首先,源动的培训打破传统教育原有的单一、教条的教学模式,在学习过程中窦老师经常关心我们的学习进程和效率,这样学习过程中的疑问会得到及时解决,加快了学习进度,也增加了个人及团队的工作效率。其次,在java培训时,老师常常会指派我们作业,这些作业配合着开发的项目,使我们得到了实战的经验。经验是宝贵的学习不只是学一学书面上的东西,尤其是做软件开发,经验尤其起到至关重要的作用。一个程序员的成长可以看作是基础知识的牢固基础上的,开发经验的成长,这些是我们在源动学习中,学到的宝贵的东西。再次,培训过程中侧重团队的合作,这点很重要,在今后真正进入企业工作以后,开发项目往往是一个或者几个团队来配合,人与人之间的沟通不仅仅是技术上的互相支服,它更加侧重于一个良好的协作,通过高效的团队协作可常常达到事半功倍的效果。此外,源动的java培训中也为我们开设了素质拓展、面试技巧、心理辅导等职业能力的课程,这些课程不是学校里面照本宣科的东西,而是实实在在能拿来用的知识,在这些知识的消化过程中,每位学员都在个人能力上有了不同程度的提高,为今后的工作架设坚固的桥梁。

如果说学习一门语言很容易,那就大错特错了。更不要说是一门从来没有接触过的语言,对于java培训的初学者来说就好比是让一个人去吃一个从来没有见过的食物一样,要费一些时间去研究。学一门语言最重要的是学会观察,了解语言的特点很重要。所以说学语言一定要学会观察,而且更要学会总结。

在学习过程中,比如编程中总会遇到这样那样的问题,我作为个人的理解是,当遇到问题时先不要急着去请教别人,要先检查自己的代码是不是出现了一些经常犯得错误,当确定自己不明白的时候,带着疑问与小组的成员商量,或者向老师请教。当自己独立解决问题后所学到的不仅仅是内心的小小满足,而是这个小经验被自己消化了了的重要性。

以上是我在源动学习java的一点点培训工作总结,接下来的java培训,我想会更有趣、更专业,所以我会更认真听,理论与实践更加强化我们的工作,因为我也很热爱且珍惜这份工作!学习能让人进步,工作能让人自信,相信我们在不断地学习和工作经验当中让自己变得更加充实。

篇6:java 项目学习总结

学习java已经8个月了,在这里跟大家说下心得,我刚开始是看 第三版,因为学校没开java课,所以几乎全是自学,用了将近二个月的时间把这本大书啃完,感觉这书不错,但也有很多人说这书不好,的确这书不是按常规的顺序讲的,内容跳跃性强,但讲的很深入,比较适合有cc++基础的人看,这书看完,你就算基本掌握 java的基础了,也就j2se部分。

现在java分三大部分基础,从大到小排列:j2ee, j2se, j2me!

j2ee:这个就是现在最流行,也很java技术用的最多的地方,java企业应用,要学好它,首先就要有java的基础,这是最基本的,然后学习servlet,jsp,javabean以及基本的mvc结构,当然还有其他辅助知识,比如js,html还有一个对数据库的操作,这些都需要时间来学习,学完这些后基本就可以做些简单的web应用程序了,比如模拟一个小的网上银行等等,但做出来后肯定不易维护,因为刚才说的都是技术的性的东西,还需要学些思想性的东西,那就是设计模式,它是对一些解决特定问题的指导,并不是解决问题的方法,现在认可的设计模式一共有23种,在j2ee里除了这23种外还有几种,我还不太了解,我认为设计模式方面的书《设计模式-可复用面向对象软件的基础》英文名《design patterns-elements of reusable object-oriented software》这是提出设计模式那4为大牛写的,此书非常的抽象,使用语言是c++和smalltalk,有勇气和有基础的人可以尝试一下。

j2se:java技术的基础,很多基础都是先从介绍它开始,它和j2ee的区别就是jdk不同,j2ee比j2se的jdk要大一些,多一些类包,但那些是在j2se中用不到的,j2se不光是基础,也是java技术的一个应用方向,就是利用swing开发桌面应用程序,但在windows平台上,m$的地位是无法撼动的,再加上swing开发起来不是很容易,所以在j2se领域上,java一直处于劣势,发展很慢,说到j2se就一定要下eclipse,在别人眼里,eclipse只不过是一个java的ide,但那只是eclipse的冰山一角,其实eclipse是一个大的平台,暂可以把它比喻成windows,我们可以利用winapi去开发在windows上运行的程序,eclipse也可以,我们称为eclipse插件开发,现在这项技术也在慢慢兴起,有些公司已经有应用的项目,eclipse用的是自己开发的gui包,就是swt/jface,其实跟swing是一样的,都是由java写的,但一个是sun写的,一个ibm写的,swt/jface用的本地的资源,所以运行起来很快,界面也可以做的非常漂亮,而且移植也做的很不错,所以eclipse插件可以很容易的移植到linux上,相信这项技术一定很有发展。

篇7:java 项目学习总结

经过这最近一段时间的项目开发与考核,今天终于画上圆满的句号,我长呼了一口气,同时在内心深处,也默默地为接下来的学习,做一个前段时间的项目总结,也是学习的总结,吸取之前的经验教训,前事不忘后事之师,错误并不可怕,可怕的是再在同一个地方犯同样错误,所以对于我来说,更多的去自我认知,知我批评要比表扬和赞许来的更加深刻,非常有必要做一个总结。

虽然所做的项目并没做到考核老师所希望看到的效果,和得到正面的点评,也与自己所想象的结果大相径庭,当然可能在项目最开始的时候,我也曾做过这样最坏的打算,但是当现实渐渐逼近的时候,我却一时难以接受这样的结果,是我意料之外,但也是情理之中,俗话说:种瓜得瓜,种豆得豆。

在项目开发其中,我有过给自己找借口,有过灰心的时候,也有过急躁,如坐针毡的时候,但是想要作为一个合格优秀的程序员,你不仅不能这样的情绪,而且在真实的开发环境当中,会有遇到比这更艰难的情况,更不好开发环境,所以要完成一个项目的开发,我得要利用好为数不多的学习时间,更加勇敢的直面这些缺点,并且改正它,不要认为自己以前没学过JAVA,没有这方面的经验而去给自己找借口,越过心理上的这一到鸿沟。

考核的胡老师说过:不要总是把自己当成一个学生去看待,这样容易松懈,应该是把自己当做一个职业人去看待,做好当下的每一个效果,上好当下的每一节课,让自己时时刻刻紧张起来。这样类似的话,在我之前的公司,也有主管这样说过,虽然我已大学毕业了,没有完全把自己当一个学生去看待,但自己又何尝不是有过这样的念头,特别是别人都是这样想的时候,学习的态度不够坚定,立场不坚决,这也是导致我没有学好的主要原因之一吧。

工善欲器事,必先利其器。除了保持好的心理和端庄学习的态度外,更要总结更好的学习方法,不要让自己陷入到疲惫学习的死胡同了,积累好的学习经验,去掌握好的学习方法,好的学习方法不仅是自己当下一笔无形的财富,也是在不久的将来,在工作当中竞争的一把利器。

吾日三省吾身,只有在自己的总结中给予自己更多的认知,反思,而少一些褒奖,这样自己会对平时忽视的一些地方,能有更加深刻的理解和认识,实践是检验真理的唯一标准,虽然实践中我们所遇到的挫折与失败会有无数次,而成功只有一次,但是只要成功了,我的付出就是值得的,就像前面有无数个-1,但你只要最总做到了一个 1,你的结果就是 1的,在别人的眼里你就是成功的,在客户的眼里,你项目是物美价廉的。

[java 项目学习总结]

篇8:java io流学习总结

java io流学习总结

一、什么是流?

流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由地控制文件、内存、IO设备等数据的流向。而IO流就是用于处理设备上的数据,如:硬盘、内存、键盘录入等。IO流根据处理类型的不同可分为字节流和字符流,根据流向的不同可分为输入流和输出流。

二、字节流和字符流的区别:

字符流,因为文件编码的不同,就有了对字符进行高效操作的字符流对象,它的原理就是基于字节流读取字节时去查了指定的码表。它和字节流的区别有两点:1.在读取数据的时候,字节流读到一个字节就返回一个字节,字符流使用了字节流读到一个或多个字节(一个中文对应的字节数是两个,在UTF-8码表中是3个字节)时,先去查指定的编码表,再将查到的字符返回;2.字节流可以处理所有类型的数据,如jpg、avi、mp3、wav等等,而字符流只能处理字符数据。所以可以根据处理的文件不同考虑使用字节流还是字符流,如果是纯文本数据可以优先考虑字符流,否则使用字节流。

三、IO体系,所具备的基本功能就是读和写:

1.字符流

|-- Reader(读)

|-- Writer(写)

Reader

|--InputStreamReader

|--FileReader:用于处理文件的字符读取流对象

Writer

|--OutputStreamWriter

|--FileWriter:用于处理文件的字符写入流对象

其实很容易就可以看出来,IO体系中的子类名后缀绝大部分是父类名称,而前缀则是体现子类特有功能的名称。

Reader中常见的方法:

|--int read

读取一个字符,并返回读到的这个字符,读到流的末尾则返回-1。

|--int read(char[])

将读到的字符存入指定的数组中,返回的是读到的字符个数,

读到流的末尾则返回-1。

|--close()

读取字符其实用的是window系统的功能,就希望使用完毕后,

进行资源的释放。

FileReader除了自己的构造函数外没有特有的方法:

|--用于读取文本文件的流对象。

|--用于关联文本文件。

|--构造函数FileReader(String fileName)

在读取流对象初始化时,必须要指定一个被读取的文件,

如果该文件不存在则会发生FileNotFoundException异常。

Writer中常见的方法:

|--write()

将一个字符写入到流中。

|--write(char[])

将一个字符数组写入到流中。

|--writer(String)

将一个字符写入到流中。

|--flush()

刷新流,将流中的数据刷新到目的地中,流还存在。

|--close()

关闭资源,在关闭钱会先调用flush(), 刷新流中的数据到目的地。

FileWriter,除了自己的构造函数外没有特有的方法:

|--该类的特点

|--用于处理文本文件

|--没有默认的编码表

|--有临时缓冲

|--构造函数,在写入流对象初始化时,必须要有一个存储数据的目的地。

|--FileWriter(String fileName),该构造器是干什么用的呢?

|--调用系统资源

|--在指定位置创建一个文件,如果该文件已经存在则被覆盖。

|--FileWriter(String filename,Boolean append),这构造器的作用是?

当传入的boolean类型的值为true时,会在指定文件末尾处进行数据的续写。

清单1,将文本数据保存到文件中代码

private static void test1(){

FileWriter fw=null;

try {

//初始化FileWriter对象,指定文件名已经存储路径

fw=new FileWriter(“D:/test.txt”);

fw.write(“将字符串写入流”);

//将流中的数据刷新到目的地,流还在

fw.flush();

fw.write(“将字符串写入流”);

} catch (IOException e) {

e.printStackTrace();

}finally{

if(fw!=null){

try {

fw.close();

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

清单2,读取一个已有文本文件,并将文本内容打印出来代码

private static void test2(){

FileReader fr=null;

try {

//初始化FileReader对象,指定文件路径

fr=new FileReader(“D:/test.txt”);

int ch=0;

while((ch=fr.read())!=-1){

//每次读取一个字符,直到读到末尾-1为止

篇9:java总结

一、数组、集合

数组、集合:都是一种容器,用一个对象管理多个对象;

数组:不能自动增长;只能存放同类型的元素

集合:能自动扩容;部分集合允许存放不同类型的元素;

二、学习这些集合类要掌握哪些东西:

1)怎样得到(选择)集合对象;

2)怎样添加元素

3)怎样删除元素

4)怎样循环遍历没一个元素

三、list、set、map

collection:父接口;

Set:接口---一个实现类:HashSet

List:接口---三个实现类:LinkedList,Vector,ArrayList

SortedSet:接口---实现类:TreeSet

1、List:

List:有序列表,允许存放重复的元素;

实现类:

ArrayList:数组实现,查询快,增删慢,线程不安全,轻量级;下标也是从0开始;

LinkedList:链表实现,增删快,查询慢

Vector:数组实现,线程安全,重量级

2.Set:

无序集合,不允许存放重复的元素;

实现类HashSet:equals返回true,hashCode返回相同的整数;哈希表;

子接口SortedSet:对Set排序实现类:TreeSet:二叉树实现的;

看API:泛型:表示一个对象;

Iterator:接口,迭代器;

java.util;

hasNext();

next();

remove();

Iterable:可迭代的,访问的;

ng;实现了可迭代的接口就可以用迭代的方式访问;

只需实现iterator();方法即可;Iteratoriterator();

三种循环的访问方式:

只有实现了Iterable接口的才能用第三种;能用第二种的也一定能用第三种;

ArrayList:自动扩容,是数组照搬过来的;

3.Map

HashMap:键值对,key不能重复,但是value可以重复;key的实现就是HashSet;value对应着放;

HashSet的后台有一个HashMap;初始化后台容量;只不过生成一个HashSet的话,系统只提供key的访问;

如果有两个Key重复,那么会覆盖之前的;

Hashtable:线程安全的

Properties:java.util.Properties;key和value都是String类型,用来读配置文件;

HashMap与Hashtable区别:

HashMap线程不安全的,允许null作为key或value;

Hashtable线程安全的,不允许null作为key或value;

TreeMap:对key排好序的Map;key就是TreeSet,value对应每个key;

key要实现Comparable接口或TreeMap有自己的构造器;

HashSet:remove(Objecto)的原则看这个对象O的Hashcode和equals是否相等,并不是看是不是一个对象;

定义一个Map;key是课程名称,value是Integer表示选课人数;

map.put(cou,map.get(cou)+newInteger(1));

四、Hashtable、Properties

1,Hashtable:实现了Map接口,此类实现一个哈希表,作用和HashMap相同。任何非null对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的.对象必须实现hashCode方法和equals法。

2,Properties:继承自Hashtable,比Hashtable更严格属性列表中每个键及其对应值都是一个字符串。

常用方法StringgetProperty(String?key)和setProperty(Stringkey,Stringvalue);

用法:我在C盘下建了一个名为yy.dat的文件,文件的内容为:

name=hehe

password=12345

执行以下程序,输出hehe,可见用Properties可以很方便的解析配置文件

Propertiesp=newProperties();

p.load(newFileInputStream(“C:yy.dat”));

System.out.println(p.getProperty(“name”))

五、两个工具类Arrays和Collections

1.Arrays、此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂

2.Collections、主要提供了在collection上进行操作的静态方法

六、遗留的几个类

1.Hashtable,作用和HashMap相同,不过它是线程安全的,如果不需要线程安全,应该使用HashMap

2.Enumeration,遗留集合使用枚举接口来遍历元素,它有两个方法,hasMoreElements和nextElement,用法类似Iterator。

3.Stack,继承自Vector,实现了栈的功能,提供了push()方法押栈和pop()方法出栈。

4.BitSet,位集。如果需要高效率的存储一个位序列,例如一个标志序列,请使用位集。它可以对各个位进行

读取get(i)

设置set(i)

清楚clear(i)

七、常见笔试题目汇总

1.Collection和Collections的区别。

Collection是集合类的上级接口,继承与他的接口主要有Set和List.

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

2.List,Set,Map是否继承自Collection接口?

List,Set是,Map不是

3.两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?

不对,有相同的hashcode。

4.你所知道的集合类都有哪些?主要方法?

最常用的集合类是List和Map。List的具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。

Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

5.排序都有哪几种方法?请列举。用JAVA实现一个快速排序。

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码。

//使用快速排序方法对a[0:n-1]排序

从a[0:n-1]中选择一个元素作为middle,该元素为支点

把余下的元素分割为两段left和right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点

递归地使用快速排序方法对left进行排序

递归地使用快速排序方法对right进行排序

所得结果为left+middle+right

6.HashMap和Hashtable的区别

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap类没有分类或者排序。它允许一个null键和多个null值。

Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。

7.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()它们有何区别?

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。

equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

篇10:java总结

java集合总结

java集合总结(一)

一、数组、集合

数组、集合:都是一种容器,用一个对象管理多个对象;

数组:不能自动增长;只能存放同类型的元素

集合:能自动扩容;部分集合允许存放不同类型的元素;

二、学习这些集合类要掌握哪些东西:

1)怎样得到(选择)集合对象;

2)怎样添加元素

3)怎样删除元素

4)怎样循环遍历没一个元素

三、list、set、map

collection:父接口;

Set:接口---一个实现类:HashSet

List:接口---三个实现类:LinkedList,Vector,ArrayList

SortedSet:接口---实现类:TreeSet

1、List:

List:有序列表,允许存放重复的元素;

实现类:

ArrayList:数组实现,查询快,增删慢,线程不安全,轻量级;下标也是从0开始;

LinkedList:链表实现,增删快,查询慢

Vector:数组实现,线程安全,重量级

2.Set:

无序集合,不允许存放重复的元素;

实现类HashSet:equals返回true,hashCode返回相同的整数;哈希表;

子接口SortedSet:对Set排序实现类:TreeSet:二叉树实现的;

看API:泛型:表示一个对象;

Iterator:接口,迭代器;

java.util;

hasNext;

next();

remove();

Iterable:可迭代的,访问的;

ng;实现了可迭代的接口就可以用迭代的方式访问;

只需实现iterator();方法即可;Iteratoriterator();

三种循环的访问方式:

只有实现了Iterable接口的才能用第三种;能用第二种的也一定能用第三种;

ArrayList:自动扩容,是数组照搬过来的;

3.Map

HashMap:键值对,key不能重复,但是value可以重复;key的实现就是HashSet;value对应着放;

HashSet的后台有一个HashMap;初始化后台容量;只不过生成一个HashSet的话,系统只提供key的访问;

如果有两个Key重复,那么会覆盖之前的;

Hashtable:线程安全的

Properties:java.util.Properties;key和value都是String类型,用来读配置文件;

HashMap与Hashtable区别:

HashMap线程不安全的,允许null作为key或value;

Hashtable线程安全的,不允许null作为key或value;

TreeMap:对key排好序的Map;key就是TreeSet,value对应每个key;

key要实现Comparable接口或TreeMap有自己的构造器;

HashSet:remove(Objecto)的原则看这个对象O的Hashcode和equals是否相等,并不是看是不是一个对象;

定义一个Map;key是课程名称,value是Integer表示选课人数;

map.put(cou,map.get(cou)+newInteger(1));

四、Hashtable、Properties

1,Hashtable:实现了Map接口,此类实现一个哈希表,作用和HashMap相同。任何非null对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现hashCode方法和equals法。

2,Properties:继承自Hashtable,比Hashtable更严格属性列表中每个键及其对应值都是一个字符串。

常用方法StringgetProperty(String?key)和setProperty(Stringkey,Stringvalue);

用法:我在C盘下建了一个名为yy.dat的文件,文件的内容为:

name=hehe

password=12345

执行以下程序,输出hehe,可见用Properties可以很方便的解析配置文件

Propertiesp=newProperties();

p.load(newFileInputStream(“C:\\\\yy.dat”));

System.out.println(p.getProperty(“name”))

五、两个工具类Arrays和Collections

1.Arrays、此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂

2.Collections、主要提供了在collection上进行操作的静态方法

六、遗留的几个类

1.Hashtable,作用和HashMap相同,不过它是线程安全的,如果不需要线程安全,应该使用HashMap

2.Enumeration,遗留集合使用枚举接口来遍历元素,它有两个方法,hasMoreElements和nextElement,用法类似Iterator。

3.Stack,继承自Vector,实现了栈的功能,提供了push()方法押栈和pop()方法出栈。

4.BitSet,位集。如果需要高效率的存储一个位序列,例如一个标志序列,请使用位集。它可以对各个位进行

读取get(i)

设置set(i)

清楚clear(i)

七、常见笔试题目汇总

1.Collection和Collections的区别。

Collection是集合类的上级接口,继承与他的接口主要有Set和List.

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

2.List,Set,Map是否继承自Collection接口?

List,Set是,Map不是

3.两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?

不对,有相同的hashcode。

4.你所知道的集合类都有哪些?主要方法?

最常用的集合类是List和Map。List的.具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。

Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

5.排序都有哪几种方法?请列举。用JAVA实现一个快速排序。

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码。

//使用快速排序方法对a[0:n-1]排序

从a[0:n-1]中选择一个元素作为middle,该元素为支点

把余下的元素分割为两段left和right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点

递归地使用快速排序方法对left进行排序

递归地使用快速排序方法对right进行排序

所得结果为left+middle+right

6.HashMap和Hashtable的区别

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap类没有分类或者排序。它允许一个null键和多个null值。

Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。

7.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()它们有何区别?

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。

equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

java集合总结(二)

java集合类主要负责保存、盛装其他数据,因此集合类也称容器类。java集合类分为:set、list、map、queue四大体系。其中set代表无序、不可重复的集合;list代表有序、可重复的集合。map代表具有映射关系的集合;queue代表队列集合。

java集合类主要由两个接口派生:Collection和Map,是集合框架的根接口。下面是其接口、子接口和实现类的继承树。

下面就一一介绍四大接口及其实现类。

Set接口。set集合不允许包含相同的元素。set判断两个对象是否相同是根据equals方法。如果两个对象用equals方法返回的是true,set不会接受这两个对象。

HashSet是set接口的典型实现,HashSet按hash算法来存储集合中的元素。因此具有很好的存储和查找性能。HashSet判断两个元素的标准是两个元素的equals方法比较相等,同时两个对象的hasCode()方法返回值也相等。HashSet可以保存null元素。

List集合代表一个有序集合。集合中的每个元素都有其对应的顺序索引。Arraylist和vector是list接口的两个典型实现。他们之间的显着区别就是:vector是线性安全的,而arraylist不是。它们两个都是基于数组实现的list类。List还有一个基于链表实现的LinkedList类。当插入、删除元素的速度非常快。这个类比较特殊,功能也特别多,即实现了List接口,也实现了Dueue接口(双向队列)。可以当成双向队列使用,也可以当成栈使用。

Queue用于模拟队列的数据结构。LinkedList和ArrayDueue是其两个比较常用的实现类。

Map用于保存具有映射关系的数据。Map接口有如下几个常用的实现类:HashMap、HashTable、TreeMap。TreeMap是基于红黑树对TreeMap中所有key进行排序。HashMap和HashTable主要区别有两点:1、Hashtable是线性安全的,因此性能差些。2、HashMap可以使用null作为key或者value。

集合类还提供了一个工具类Collections。主要用于查找、替换、同步控制、设置不可变集合。

上面是对java集合类的一般概述,下面就set、list、map三者之间的关系进行剖析。

Set与Map的关系。Map集合中所有key集中起来,就组成了一个set集合。所以Map集合提供SetkeySet()方法返回所有key组成的set集合。由此可见,Map集合中的所有key具有set集合的特征,只要Map所有的key集中起来,它就是一个Set集合,这就实现了Map到Set的转换。同时,如果把Map中的元素看成key-value的set集合,也可以实现从Set到Map之间的转换。HashSet和HashMap分别作为它们的实现类。两者之间也挺相似的。HashSet的实现就是封装了HashMap对象来存储元素。它们的本质是一样的。类似于HashSet和HashMap的关系,其实TreeMap和TreeSet本质也差不多,TreeSet底层也是依赖TreeMap实现。

Map与List的关系。把Map的key-value分开来看,从另一个角度看,就可以把Map与List统一起来。

Map集合是一个关联数组,key可以组成Set集合,Map中的value可以重复,所以这些value可以组成一个List集合。但是需要注意的是,实质Map的values方法并未返回一个List集合。而是返回一个不存储元素的Collection集合,换一种角度来看对List集合,它也包含了两组值,其中一组就是虚拟的int类型的索引,另一组就是list集合元素,从这个意思上看,List就相当于所有key都是int型的Map。

下面讲解几个相似类之间的差异。

ArrayList和LinkedList。ArrayList是一种顺序存储的线性表,其底层是采用数组实现的,而LinkedList是链式存储的线性表。其本质就是一个双向链表。对于随机存储比较频繁的元素操作应选用ArrayList,对于经常需要增加、删除元素应该选用LinkedList。但总的来说ArrayList的总体性能还是优于LinkedList。

HashSet与HashMap的性能选项。主要有两个方面:容量和负载因子(尺寸/容量)。较低负载因子会增加查询数据的性能,但是会降低hash表所占的内存开销。较高负载因子则反之,一般对数据的查询比较频繁,所以一般情况下初始容量应该大一点,但也不能太大,否则浪费内存空间。

篇11:java学习心得体会

从大三开始算,我学习java已经有一年的时间了,不过虽然时间长,但是对于现在的我还是一个初学者,懂不了多少的java初学者。期间曾迷茫过,曾困惑过,走了不少的弯路,老师布置的试验作业每次都是不会做,每次都是要问同学,这个代码什么意思啊?为什么用这条代码,用别的不行吗?甚至后来根本没耐心问,索性就复制同学的作业交上去。但是都是各种0分,害的同学也这样,不过他能找老师反驳,而我却没实力。。。渐渐的,我认识到这样下去是不行的,我必须改正自己的学习态度和方式。接下提到的就是我这一年来的java学习心得。 刚一开始学习java时,我就已经学习过C语言,不过C语言学的不是很好,所以开始看到java的时候我很反感,看着源代码,都不知道失什么意思。看书的时候一看到源代码就头疼,因为根本看不懂。那段时间根本就是一无所获,在图书馆借了一本书,关java的语法特性,与别的语言相比的优点,什么跨平台,源代码公开,什么write 、once 、run 、anywhere,能说得头头是道,可是一到具体的问题,想写一些具体的东西,问题就都来了,根本不知道该怎么下手。所以每次李旺老师布置的试验作业都没的按时完成。渐渐的时间过去了,一点进展都没有,我都几乎要放弃了。

而后又同学经常来宿舍跟我讲解,我很感谢他。慢慢的我也理解了一些知识。从他那里,我认识到,JAVA是一门计算机语言,是人类发明的语言,应该比人类语言更容易学习,只要你有一种必胜学习JAVA心态就可以成功。学习JAVA的方法:JAVA学习中,首先要做到课前、课后复习及预习,要时时保持一个清醒的头脑;多和同学沟通;互相学习;取长补短;在学习中做到帮助他人或他人帮助自己。学习java,的确要学习的东西很多,就像同学提到的。Java不像、net一家独大,Java的繁盛在于开源社区的庞大,这也带来了分支太多的问题,怎样选择一条好的学习路线,对于初学者来说,的确是一件很迷茫的事。其实不管java东西再多,总有规律可循。对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。这样才能举一反三,由点及面。java的所有编程思路都是“面向对象”的编程。所以大家在往更高境界发展以前一定要打好基础,基础是王道。我们的基础要扎实扎实再扎实。所谓打好基 础并不是说要熟悉所有的java代码。要了解java的结构。class,methode,object,各种套用import,e_tend 让自己在结构上对java有个立体而且整体的了 解。

学Java千万不要浮躁。说到浮躁,这也是一个很值得我深思的问题。我觉得我自己也有这样的倾向,不仅是我,估计大多数的人都有这个毛病。总是喜欢讨论什么语言最好,什么语言功能强大。这种讨论倒没有错,不过真正学习的时候,浮躁会使你失去很多。在学习过程中,我很努力地使自己保持心理的平静,从基础学起,甚至是一些看上去完全没有必要的基础。

同学要扎扎实实,一步一个脚印的逐步学习,不要想着一步登天。不然我问他的时候,他跟我讲的我也都不懂,这样对我也没用。

要多查API,它是Java编程的基本方法,也是编程过程中所不断利用的资源。Java的学习过程不仅仅是基本语法的学习,更多的是去学习和掌握它所提供的API类库。对于所接触到的类,方法,都去仔细去阅读文档的说明,再用自己编写的实例去此时一下。而且不要只看而不练,学好java靠的还是实践,在一周两节的实验课要认真编程,不懂问同学或问李老师。只有理论和实践相结合才能真正掌握只是和技能。而且还要懂得运用百度和谷歌,遇到问题可以先搜索一下,实在不懂再找同学。理论学习。通过对理论的学习,尽量了解新知识的概念;学习之后只是粗略的了解概念,不能和实际很好的结合。根据理论学习的知识,考虑在什么场合下可以应用这个新知识,哪些地方已经应用了这个概念,建立对新知识的感性认识。 java是一种面向对象的操作语言,必须要明白这点,才能从总体上把握java。学习编程,首先要从分析别人的代码开始,明白他们的思路,认真分析,在学习的过程中一定要动手做、写代码,九比如说老师布置的试验作业,一定要自己做,不能抄同学的,首先不是为了应付老师,而是要让自己真正懂得java,这样慢慢的,以后的试验自己就又实力去做。学习java不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,实践失最重要的。而且还可以从实验中,体会到编程的乐趣,感受到自己做好一个程序,然后运行出结果,失很有成就感的!

而对于J2EE,首先要先学JSP。要明白JSP的工作原理,在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet,而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息JSP的调试比较麻烦,特别是当bean是在一个session中存在时,更加困难。得从好几个页面开始往里面走才行。通常是用out、println()或System、out、print()来打一大堆的信息来查问题。如果是用jbuilder做开发,它能直接调试JSP、不过更重要的是知道错误产生的原因及解决方法。JSP是用JAVA写的,所以它是大小写敏感的,用过其他编程语言的人最容易犯这个错误。另外在浏览器的地址栏中输入的访问JSP的地址也是区分大小写的、在jsp中判断字符串要使用compareTo方法,不要用==,因为在java中String变量不是一个简单的变量而是一个类实。所以JSP的知识不能欠缺,理解什么是servlet,什么是java bean,熟悉jsp常使用的标签 对于学习java基础的经验就是多做、多思考,基础知识的学习不能不求甚解,要追本溯源,弄清问题的本质。这样才能举一反三,由点及面。对于抽象的东西要能具体化,对于具体的东西要能抽象化。现在我学习java基础一直使用的是《Java核心技术》这本书,这本书失同学推荐我看的,感觉挺不错的,很基础很全面。这本书强调重视基础,如果java基础打的牢,在学习那些java框架就是非常轻松的事了。

在这一年的学习过程中,通过同学的帮助和李旺老师的教导,我对java有了初步的认识和了解。学习java首先主要是学习了Java的程序结构,包括了循环、数组、类和方法以及字符串处理等内容。在学习期间,上课认真听老师的讲解,特别是课后练习和上机的题目,以及老师提供给我们的有关学习编程语言的方法和技巧,对于我巩固所学的理论知识有很大的帮助。现在我也只是刚刚开始学习Java语言,所以想真正掌握Java技术,以后还会有很长的一段过程需要我们更加努力地去学习。毕竟,知识需要靠积累才能真正掌握。

篇12:java学习笔记

java学习笔记

jdk(java development kit)

有如下公司或组织开发jdk

sun jdk

ibm jdk

bea jrocket

gun jdk

其中ibm的jdk包含的jvm(java virtual machine)运行效率要比sun jdk包含的jvm高出许多。而专门运行在x86平台的jrocket在服务端运行效率也要比sun jdk好很多。但不管怎么说,我们还是需要先把sun jdk掌握好。

1、jdk的下载和安装

jdk又叫做j2se(java2 sdk standard edition),可以从sun的java网站上下载到,java.sun/j2se/downloads.html ,jdk当前最新的版本是j2sdk1.4.2,建议下载该版本的jdk,下载页面在这里:java.sun/j2se/1.4.2/download.html。

下载好的jdk是一个可执行安装程序,默认安装完毕后会在c:\\program files\\java\\目录下安装一套jre(供浏览器来使用),在c:\\j2sdk1.4.2下安装一套jdk(也包括一套jre)。然后我们需要在环境变量path的最前面增加java的路径c:\\j2sdk1.4.2\\bin。这样jdk就安装好了。

2、java documentation

java编程手册,java核心所在

3、java 应用服务器

a、tomcat

b、ibm webshpere

c、bea weblogic

d、免费 jboss

4、java应用的运行环境

应用服务器(app server)

app server是运行java企业组件的平台,构成了应用软件的主要运行环境。当前主流的app server是bea公司的weblogic server和ibm公司的websphere以及免费的jboss,选择其中一个进行学习就可以了,个人推荐weblogic,因为它的体系结构更加干净,开发和部署更加方便,是java企业软件开发人员首选的开发平台。下面简要介绍几种常用的app server:

1、tomcat

tomcat严格意义上并不是一个真正的app server,它只是一个可以支持运行serlvet/jsp的web容器,不过tomcat也扩展了一些app server的功能,如jndi,数据库连接池,用户事务处理等等。tomcat被非常广泛的应用在中小规模的java web应用中,因此本文做一点下载、安装和配置tomcat的介绍:

tomcat是apache组织下jakarta项目下的一个子项目,它的主网站是:jakarta.apache.org/tomcat/ ,tomcat最新版本是tomcat4.1.27,软件下载的连接是:www.apache.org/dist/jakarta/tomcat-4/binaries/ 。

下载tomcat既可以直接下载zip包,也可以下载exe安装包(个人建议zip更干净些),不管哪种情况,下载完毕安装好以后(zip直接解压缩就可以了)。需要设置两个环境变量:

java_home=c:\\j2sdk1.4.2

catalina_home=d:\\tomcat4 (你的tomcat安装目录)

这样就安装好了,启动tomcat运行catalina_home\\bin\\startup.bat,关闭tomcat运行shutdown.bat脚本。tomcat启动以后,默认使用8080端口,因此可以用浏览器访问localhost:8080来测试tomcat是否正常启动。

tomcat提供了两个web界面的管理工具,url分别是:

localhost:8080/admin/index.jsp

localhost:8080/manager/html

在启用这两个管理工具之前,先需要手工配置一下管理员用户和口令。用一个文本工具打开catalina_home\\conf\\tomcat-users.xml这个文件,加入如下几行:

这样用户“robbin”就具备了超级管理员权限。重新启动tomcat以后,你就可以使用该用户来登陆如上的两个管理工具,通过web方式进行tomcat的配置和管理了。

2、bea weblogic

weblogic可以到bea的网站上免费注册之后下载到最新的weblogic8.1企业版,license可以免费使用1年时间,其实这已经完全足够了。weblogic的下载连接:commerce.bea/index.jsp,.../edocs.bea/ 。

3、ibm webshpere

websphere同样可以下载到免费的`试用版本,到ibm的developerworks网站可以看到websphere试用产品的下载和相关的websphere的资料,developerworks中文网站的连接是:www-900.ibm/developerworks/cn/wsdd/ ,websphere的下载连接:www7b.software.ibm/wsdd/...wassupport.html 。

4、jboss

jboss是免费开源的app server,可以免费的从jboss网站下载:www.jboss.org/,然...n/idea.html

四、java应用的运行环境

java的应用可以简单分为以下几个方面:

1、java的桌面应用

桌面应用一般仅仅需要jre的支持就足够了。

2、java web应用

java的web应用至少需要安装jdk和一个web容器(例如tomcat),以及一个多用户数据库,web应用至少分为三层:

browser层:浏览器显示用户页面

web层:运行servlet/jsp

db层:后端数据库,向java程序提供数据访问服务

3、java企业级应用

企业级应用比较复杂,可以扩展到n层,最简单情况会分为4层:

browser层:浏览器显示用户页面

client层:java客户端图形程序(或者嵌入式设备的程序)直接和web层或者ejb层交互

web层:运行servlet/jsp

ejb层:运行ejb,完成业务逻辑运算

db层:后端数据库,向java程序提供数据访问服务

4、java嵌入式应用

java嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从sun下载j2me开发包,j2me包含了嵌入式设备专用虚拟机kvm,和普通的jdk中包含的jvm有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。

篇13:怎样学习Java

怎样学习Java

1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。

2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。

3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。

4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。

5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。

6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。

7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览群书; 8.看再多的书是学不全脚本的,要多实践

9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里; 10.学习脚本最好的方法之一就是多练习;

11.在任何时刻都不要认为自己手中的书已经足够了;

12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;

13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;

14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;

15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;

16.不要漏掉书中任何一个练习——请全部做完并记录下思路;

17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。

18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;

19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理解了;

20.记录下在和别人交流时发现的自己忽视或不理解的知识点;

21.保存好你做过的所有的源文件----那是你最好的积累之一;

22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!

23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。

24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你总期望有高手总无偿指点你,除非他是你亲戚!!

讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。

浮躁的人容易问:我到底该学什么;----别问,学就对了;

浮躁的人容易问:Js有钱途吗;----建议你去抢银行;

浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!

浮躁的人分两种:只观望而不学的人;只学而不坚持的人;

浮躁的人永远不是一个高手。

怎样学好C#编程

1、打好坚实的基础:变量、流程控制语句、类、接口、特别是继承关系,一定要理解,当然刚开始的时候肯定理解程度不深,但至少要求记住。

2、看别人写的程序,完整看完一个例子。比如一个c#编写的简单网站。然后好好的思考下,给你的启发,哪些地方让你理解了基础知识没理解透的内容,哪些地方让你茅塞顿开!

3、自己动手去做。自己动手写一个完整的程序,不急着编码,先想想自己做的程序都要实现什么功能,程序的结构应该怎样设计:是不是要用到接口、怎样可以提高代码的重复利用率等等;甚至可以用纸笔画画,心中有了一个基本的框架,然后再编码,遇到难点写不下去时多上网和同行交流。

4、有了自己的第一个程序,然后就是回过头来总结了,记住一定要善于总结自己在实践中的经验。如果你回过头来发现你以前写的程序是多么的“嫩”,证明你就在进步了。发现以前自己没有掌握的东西,再进一步去深研。

篇14:初学者怎么学习java

1.学习JAVA的原理

了解JAVA的原理,才有可能真正体会JAVA的一切,学习任何事情,只要能掌握原理,就会比较顺利。

学习JAVA语言很简单,毕竟JAVA语言也只包含五十多个关键词(keyword)与几十个算符(operator),再加上JAVA语法(syntax)也很简单,所以一般人可以很快就学会JAVA语言。

2.学习对象导向的思维

学会了语言,并不代表就可以设计出好的对象导向系统架构。想要成为对象导向的专家,往往需要:

(1)多看相关的书;

(2)多观摩别人的程序;

(3)多写程序。

总之六个字——多看,多学,多练。

3.学习API

学会JAVA语言之后,还需要学会一些API才能写出有用的程序。JAVA的API非常多,必须规划好一个学习路径,才不会在浩瀚的API大海中迷失。

必备的API包括了:IO、New IO、Collection Framework、Network、RMI、JAXP等。

4.学习开发工具的用法

只用JDK,是很难写出大型程序的,所以通常程序员会使用JBuilder/VisualAge/ VisualCafe 等工具。

篇15:java学习心得体会

(一)充分利用MSDN因为我个人觉得它胜过任何一本编程参考书

MSDN是 Microsoft 当前提供的有关编程信息的最全面的资源,它包含微软最新的技术数据库,加上易学易用的全文检索功能,让您迅速找到任何您需要的技术参考数据

(二)加强自我管理,善于作自我总结,分析自已的优点及缺点

中国境内百分之八十以上的领导人在百分之八十以上的场合的讲话中都有类似的观点,所以在这里我是不多说了,反正这一条用在什么行业什么地方都不会有错的,人生最大的敌人不是就是自已吗?管好自已认清自已,那还有什么搞不定的?

(三)养成良好的文档习惯

良好的文档是正规研发流程中非常重要的环节,一个好的程序是先写好设计文档再进行编程的,在设计文档的指导下,才能写出安全的代码。如果你不写文档,一开始就写程序,这样你就不会按已设计好的路线走,而是想到哪写到哪。小功能还好说,要是大功能,就容易混乱甚至失控.那么如何写文档呢?其实我认为没有统一的标准,虽然国家及一些NB的人总结了很多的模板,但每个人的习惯不同,如果你不加以修改或创新,就套用某个标准,我相信写起来会很吃力及说不清的难受,因此我觉得只要能将你的设计思想及实现算法或步骤描述清楚就是好的文档,我强烈建议广大程序员朋友们在写文档时要善于用图表来说明你的思想,我们不是作家,也可能作文都经常性地不及格,写出五官端正的文章对我们来说可能不容易啊!好好地利用VISIO,ROSE或别的工具来表达你的思想吧!

(五)代码风格要规范,严谨,效率要高。

(六)掌握好跟踪调试技巧.

跟踪调试程序是一件繁琐而又复杂的事情,所以掌握必要的调试策略及技巧却可以使这些工作变得轻松起来.

(七)养成自我测试的习惯

测试工作应由测试工程师来做,但在你写完一个模块或一个软件时,还是要自已先测试一下,保证不要出现一些低级的错误.

(八)善于交流善于沟通,特别是经常与一些高手交流一下学习的心得体会

有人说,程序员的性格大多内向不喜欢说话,其实是有些误会了,不是不喜欢而是话不投机,我的脑袋一天到晚都在不停地转,函数,数据,算法啊充满了我的世界,我那还有时间与你谈一些无聊的话题,话要找对人了,才容易谈下去,书上说过“听君一席话,胜读十年书”,你要找的就是这种豁然开朗!

(九)阶段性地做一下专题总结

知识要温故而知新,因此我程序员要养成阶段性地做专题总结的习惯,比如你这个月学习或在做与多线程有关的模块或项目,那么在你做完后,你就可以好好地总结一下所有与多线程相关的技术,包括理论知识,实践方法以及各种技巧及优秀文章等等,这对你各种能力的提高将很大的帮助,你试过了吗,如果没有,那就快点行动吧!

(十)要有持之以恒的精神

我只是想说明要学好任何一门技术,最好要有持之以恒精益求精的精神,特别是学一些比较抽象比较难的技术,除了思考一下你的学习方法以外,还必须坚定你的目标及信念!

篇16:java学习心得体会

经常看到有人问怎么学JAVA,是参加Java培训呢,还是自己摸索?无数的问题其实都已经是讨论很多便了,我学习JAVA5年,这么长时间以来有一些想法,写出来大家共同探讨:

1.为什么要学JAVA?

首要的原因当然是为了生活,找份好工作,现在放眼望去,知名公司只会要求两种语言-c/c++,当然包括后来的NET,和JAVA。其他一些公司可能会要其他的语言,但最终的结果是你会回到这两类上。前者的入门学习过程是比较痛苦的,你要学好需要一定的努力,但是他有一个好处,相对JAVA来说比较集中,不会出现JAVA里面这么多差异。java的学习过程开始比较容易入手,更容易学习。当然现在C#也可以。java还有一个优势就是在移动设备的开发,所有的java应用

版本不同,但是语法一致。java的跨平台特性使得学习他让我们可以在不同的场合下使用。

2.怎么学习Java

开始的两年我学JAVA就是拿书看,练习书上的例子,但是一直没有好的效果。后来因为项目需要开始正式使用JAVA开发,我发现以前练习的东西都忘光了,所以不得不在拿起书看。也就是基本上做了无用功了。现在想来因为大部分是抄来的,不怎么动脑

所以我强烈建议你学习的时候给自己设定一个假想的项目目标,做一个东西出来,网页也好,application也好,这样子,所以不清楚为什么要这样。

你才会快速地学习。对java有了一定地感觉以后,你在去看他的DOCUMENT,看他的源码,我建议你从低版本的JAVA源码看起,因为他类少,看起来容易懂。然后你就会知道自己以前编码的东西那些是很幼稚的,是可以用一两句就能搞定的。

如果你已经稍微有了些感觉,如果觉得合适也可以考虑参加一些培训,毕竟比自学要轻松些,另外还可以学到别人的一些经验,比如:清软Java培训,一些学员反应不错的,也建议你们多了解一下其它的培训机构。

3.如何解决问题

学习的过程中不可避免的遇到问题,这些问题有的只是一个符号错了,一个括号少了,这类的问题在他的文档,或者一般的网站上就能够找到,尤其是初学者的问题,不会是很难的问题 ,在你之前已经无数人问过了,不要害怕提问,但是这个问题最好是你找不到答案的时候去提。有的时候人们觉得你这个问题到处都有,是你个人太懒不去找的原因而没有解决,这样不愿意回答。

等你走出了这个阶段,这个时候在有问题可能就是比较难一些的,这个时候在一般的网站上应该是难以找到结果的,我建议你英文够好的话直接上国外的网站,包括JAVA自己的网站。如果一般呢,可以到IBM的中文网站上去,这些地方有很多一系列问题的解决方法,那上面提供的例子不管是书写格式还是正确性都是比较好的,为你养成良好的习惯有很大的帮助。

4.其他UML等的学习

数据结构要不要学,UML要不要学,这些问题我觉得应人而异,你满足于做一般的程序员,完全可以不学,现在商业软件用到的都是成熟的技术,所有你遇到的问题,除非bug,无法解决的,在网上都能找到现成的代码,完全可以支持你完成工作。

但是如果你把编程当作一种乐趣的话,还是要学习的,用UML语言之后,你会发现编码的速度会更快,因为在这个过程中你理清了思路,通过使用工具,你可以要编码的模块分到最细,完成这部分工作以后,没一个模块的代码写起来会顺手很多,因为逻辑明确。数据结构对你写一些小的算法有帮助。而且通过比较高层次来观察整个系统,你对程序的把握会越来越有信心。

篇17:如何学习java框架

学习java框架方法

*第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架;

*第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及;

*第三阶段:javaAPI:输入输出,多线程,网络编程,反射注解等,java的精华部分;

*第四阶段:数据库SQL基础,包括增删改查操作以及多表查询;

*第五阶段:JDBC编程:包括JDBC原理,JDBC连接库,JDBCAPI,虽然现在Hibernate比JDBC要方便许多,但是JDBC技术仍然在使用,JDBC思想尤为重要;

*第六阶段:JDBC深入理解高级特性:包括数据库连接池,存储过程,触发器,CRM思想;

*第七阶段:HTML语言学习,包括HTML标签,表单标签以及CSS,这是Web应用开发的基础;

*第八阶段:JavaScript脚本语言,包括javaScript语法和对象,就这两个方面的内容;

*第九阶段:DOM编程,包括DOM原理,常用的DOM元素以及比较重要的DOM编程思想;

*第十阶段:Servlet开发,从此开始踏入java开发的重要一步,包括XML,Tomcat服务器的安装使用操作,HTTP协议简单理解,ServletAPI等,这个是javaweb开发的基础;

*第十一阶段:JSP开发:JSP语法和标签,自定义标签,EL,JSTL库了解以及MVC三层架构的设计模式理念;

*第十二阶段:AJAX开发:AJAX原理,请求响应处理,AJAX开发库;

*第十三阶段:轻量级框架,三大框架之一Struts框架的学习,自此踏入javaweb开发的精华部分,包括Struts体系架构,各种组件,标签库和扩展性的学习;

*第十四阶段:Hibernate框架学习,三大框架之一,包括检索映射技术,多表查询技术,缓存技术以及性能方面的优化;

*第十五阶段:Spring框架的学习,三大框架之一,包括了IOC,AOP,DataSource,事务,SSH集成以及JPA集成;

Java三大框架

一 .Struts框架:struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。

1.流程:服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。

2.框架:Struts对Model,View和Controller都提供了对应的组件。ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。

Model部分:由JavaBean组成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionFrom里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。

View部分:该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。

Controller组件:Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。

二.Spring框架

Spring是一个解决了许多在J2EE开发中常见的的问题的强大框架。Springle提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类变成的好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control 容器。然而Spring在使用IoC容器作为构建玩关注所有架构层层的完整解决方案方面是独一无二的。Spring提供了唯一的数据管理抽象包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping 解决方案。

三.Hibernate框架

Hibernate 是一个开源代码的对象关系映射框架,对JDBC惊醒了费城轻量级的的对象封装,使得Java程序员可以随心所欲的使用对象变成思维来操作数据库。Hebernate可以应用在任何使用JDBC的场合,既可以在java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用最具革命意义的事,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任

Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。

1.Session接口:负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

2.SessionFactory接口:负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

3.Configuration接口:负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

4.Transaction接口:负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

5.Query和Criteria接口:负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。

JAVA开源缓存框架介绍

OSCacheOSCache

OSCacheOSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。

JSC

JavaCaching system JSC(Java Caching system)是一个用分布式的缓存系统,是基于服务器的java应用程序。它是通过提供管理各种动态缓存数据来加速动态web应用。 JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。动态内容和报表系统能够获得更好的性能。如果一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。

EHCache

EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依赖性,全面的文档和测试。

JCache

JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。

ShiftOne

ShiftOneJava Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。

SwarmCache

SwarmCache是一个简单且有效的分布式缓存,它使用IP multicast与同一个局域网的其他主机进行通讯,是特别为集群和数据驱动web应用程序而设计的。SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。SwarmCache使用JavaGroups来管理从属关系和分布式缓存的通讯。

TreeCache/JBossCache

JBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能。缓存数据被自动复制,让你轻松进行JBoss服务器之间的集群工作。JBossCache能够通过JBoss应用服务或其他J2EE容器来运行一个MBean服务,当然,它也能独立运行。 JBossCache包括两个模块:TreeCache和TreeCacheAOP。 TreeCache --是一个树形结构复制的事务处理缓存。 TreeCacheAOP--是一个“面向对象”缓存,它使用AOP来动态管理POJO(PlainOld Java Objects) 注:AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。

WhirlyCache

Whirlycache是一个快速的、可配置的、存在于内存中的对象的缓存。它能够通过缓存对象来加快网站或应用程序的速度,否则就必须通过查询数据库或其他代价较高的处理程序来建立。

猜你感兴趣:

篇18:学习java怎么开始

从零开始学Java方法

1明确面向对象的范畴

我们必须明确一个大方向,也就是说现在面向对象的编程范畴。尽管人工智能曾经有所浪潮(看看Borland为什么有Turbo Prolog),但未来5-工业界广泛承认并接受的将是面向对象式的编程。

工业界目前最流行的面向对象编程语言就是C++和Java。所以基本上锁定这两个方向就可以了。而且完全可以同时掌握。

2掌握Java的精华特性

掌握Java的精华特性的同时,一定要知道为什么。比如,Interface和multi-thread。用interface是更好的多继承的模型,而多线程则是设计到语言一级的重要特性。要完全理解interface是为什么,用多线程又有几种常用的编程模型。

3开始进行设计

理解了语言的特性是为什么了之后,就可以试着上升到设计这个层次,毕竟学习语言是要用的。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(你可以看一下我介绍的关于MVC的内容)。首先要找出最顶层的对象(这往往是最难的),然后一层一层往下递归,记住每次应符合7+/-2的原则,因为我们人的短记忆就是这样。一般有图形用户界面的应从界面开始设计。

4学习设计模式

有了基本设计模型后,可以学一些设计模式(Design Pattern)。这是目前证明很有效的。比如体系结构模式(Layering分层,Pipe/Filter管道或过滤器),设计模式(有很多,比如对象池Object Pool、缓冲池Cache等),编程模式(比如Copy-on-Write)。

懂了这些模式之后,就会对系统的整体结构有很好的把握,而学术上也有倾向一个系统完全可以由各种模式组合而成。前面提到的MT实际上就有好几种模式,掌握后就不用自己花很多时间去试了。另外一个很重要的领域就是并行和分布式计算领域,大概有20种左右。

5进行编程实践

接下来就不能纸上谈兵了,最好的方法其实是实践。一般教科书上的例子并不能算是实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能是你自己越来越迷糊。

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的,比如在我的实践当中,我曾经学习过一个很经典的例子就是用Java实现的HotDraw(源自SmallTalk),你可以用rolemodel或hotdraw在搜索引擎上找一下,我记不大清楚了。好象 是个网站,上面有原代码和一些基本设计的文档。

另一个来源可以到 是个不错的文档基地。从HotDraw上我学到了什么是Framework,以及如何用rolemodel的方式来构造,这样我就可以应用到其他的地方。顺便说一句,这个例子你绝对不会觉得小,只会觉得大,并且他还是真正的商用的Framework。

6学习修改经典例子

结合前面学到的设计模式你就可以很好的理解这些经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

好象以上谈的跟Java没什么关系,其实我们早就应该从单纯的学习语言到真正的学习好编程的领域。学习技术是没有止境的,你学习第一种语言可能要半年时间,以后每种语言都不应该超过两个月,否则你会觉得学习语言是包袱,是痛苦。

7学以致用

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。

Java学习的20个常见误区与细节

1. true、false和null在IDE中虽然以不同的颜色显示,但是并不是关键字,而是“字面常量”,就和String类型的abc一样。

2. String类是非可变类,其对象一旦创建,就不可销毁。String类那些看似修改字符序列的方法实际上都是返回新创建的String对象,而不是修改自身对象。

3. 由于String对象是不可改变的,因此具有线程安全性,可以自由地实现共享。

4. 在String类内部,是使用一个字符数组(char[])来维护字符序列的。String的最大长度也就是字符数组的最大长度,理论上最大长度为int类型的最大值,即2147483647.在实际中,一般可获取的最大值小于理论最大值。

5. 在Java中,数组也是类,数组声明的引用变量指向数组类型的对象。

6. Unicode码使用16位字符编码,在Java中用char类型来表示。现在Unicode已经扩展到一百万个字符,超出16位限制的成为增补字符。所有增补字符都不能用字符常量来表示。

7. 当short,byte,char参加运算时,结果为int型,而非与较高的类型相同。如果变量是byte,short,char类型,当对其赋予编译时期的常量,而该常量又没有超过变量的取值范围时,编译器就可以进行隐式的收缩转换。这种隐式的收缩转换是安全的,因为该收缩转换只适用于变量的赋值,而不适用于方法调用语句,即不适用于方法调用时的参数传递。

8. 注意char类型,这是一个无符号类型。因此,char与short或char与byte之间的转换必须显示地使用类型转换。 从byte到char的转换为扩展收缩转换,该转换比较特殊,即先将byte扩展转换到int,然后再收缩到char。

9. 在整型数据间的扩展转换中,如果操作数是char类型(无符号类型),则进行无符号扩展,扩展位为0.如果操作数是byte,short或int(有符号类型),则进行有符号扩展,扩展位为该变量的符号位。

10. float类型可以保留7~8个有效数字,而double类型可以保留15~16个有效数字,因而当int类型或long类型数值多于double或float地有效数字时,该值的一些最低有效位就会丢失,从而造成精度丢失,这时,就会采用IEEE754最近舍入模式,提取与该整型值最接近的浮点值。尽管整型向浮点型的转换属于扩展转换,但当数值很大或很小(绝对值很大)时,就会产生一定的精度丢失。

11. 浮点的相除与求余运算不同与整型的相除与求余运算,当除数为0时,浮点运算不会产生ArithmeticException异常。

12. main()方法在表现行为上,与其他方法基本相同,可以重载,由其他方法调用,继承,隐藏,也可以抛出异常,带有类型参数。我们也可以在一个程序中通过反射来调用main方法(或其他方法)。

13. 当两个或多个方法的名称相同,而参数列表不同时,这几个方法就构成了重载。重载方法可以根据参数列表对应的类型与参数的个数来区分,但是,参数的名称、方法的返回类型,方法的异常列表与类型参数不能作为区分重载方法的条件。

14. 构造器是递归调用的,子类的构造器会调用父类的构造器,直到调用Object类的构造器为止。

15. 构造器没有创建对象,构造器是使用new创建对象时由系统调用的,用来初始化类的实例成员。从顺序上说,先是创建对象,然后再调用构造器的。(构造器并没有产生新的对象)

16. 默认的构造器不为空,该构造器会调用父类的无参构造器,并可能执行实例成员变量的初始化。所以,默认的构造器至少调用了父类的构造器,它做的工作还可能更多,包括实例变量声明初始化与实例初始化块,都是在构造器中执行的。

17. 当==或!=运算符的两个操作数的类型一个是基本数据类型,另一个是包装类引用类型时,将引用类型拆箱转换为基本数据类型,然后比较两个基本数据类型的值是否相等。

18. 接口是完全抽象的设计,不能实例化。使A用new方式创建的借口类型,实际上是创建了一个匿名类,该匿名类实现了接口类型。

19. 如果两个接口声明了相同的变量x,则当某接口同时继承这两个接口,或者某类同时实现这两个接口时,通过简单名称访问会产生编译错误。

20. 如果两个接口中声明了相同名称的方法m,并且两个方法没有构成重载,则当某接口能够同时继承这两个接口,或者某类能够同时继承这两个接口时,必须存在一种方法签名,使得该签名同时为两个m方法签名的子签名,并且在方法的返回类型上,必须存在一种类型,使得该类型同时为两个m方法返回类型的可替换类型。

java学习个人总结

java计算器总结

java教学总结

java ee个人总结

关于在学习java软件开发时练习项目的总结

java实训总结和体会

java程序员试用期转正总结

java自荐信

java年度工作总结

java个人简历

java学习总结(共18篇)

欢迎下载DOC格式的java学习总结,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档