java 学习线路(共6篇)
1.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网站上下载到,http://java.sun.com/j2se/downloads.html,jdk当前最新的版本是j2sdk1.4.2,建议下载该版本的jdk,下载页面在这里:http://java.sun.com/j2se/1.4.2/download.html。
下载好的jdk是一个可执行安装程序,默认安装完毕后会在c:program filesjava目录下安装一套jre(供浏览器来使用),在c:j2sdk1.4.2下安装一套jdk(也包括一套jre)。然后我们需要在环境变量path的最前面增加java的路径c:j2sdk1.4.2bin。这样jdk就安装好了。
2、java documentation
java编程手册,java核心所在3、java 应用服务器
a、tomcat
b、ibm webshpere
c、bea weblogic
d、免费 jboss4、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项目下的一个子项目,它的主网站是:http://jakarta.apache.org/tomcat/,tomcat最新版本是tomcat4.1.27,软件下载的连接是:http://
在启用这两个管理工具之前,先需要手工配置一下管理员用户和口令。用一个文本工具打开catalina_homeconftomcat-users.xml这个文件,加入如下几行:
这样用户“robbin”就具备了超级管理员权限。重新启动tomcat以后,你就可以使用该用户来登陆如上的两个管理工具,通过web方式进行tomcat的配置和管理了。
2、bea weblogic
weblogic可以到bea的网站上免费注册之后下载到最新的weblogic8.1企业版,license可以免费使用1年时间,其实这已经完全足够了。weblogic的下载连接:http://commerce.bea.com/index.jsp,.../edocs.bea.com/。
3、ibm webshpere
websphere同样可以下载到免费的试用版本,到ibm的developerworks网站可以看到websphere试用产品的下载和相关的websphere的资料,developerworks中文网站的连接是:http://。
4、jboss
jboss是免费开源的app server,可以免费的从jboss网站下载:http://,然...n.com/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有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。
2.java 学习线路 篇二
关键词:Java,实践教学,混合式学习,混合式模型
1 J a va实践课的现状分析
Java程序设计课, 是计算机科学与技术专业的主干课程, 通过此课程的学习, 不仅要求学生掌握高级程序设计语言的知识, 更重要的是要在实践中逐步掌握程序设计的思想和方法, 培养学生解决实际问题的面向对像程序语言应用能力。因此, 这是一门以培养学生探索创新精神和实践能力为重点、特色鲜明的课程。
从目前的教学现状来看, 教学方式大多仍然采用单一的课堂讲授法, 同时结合一些上机实践操作来巩固知识点, 这种常规方法, 在进行Java基本语法、结构等基础知识的教学来说, 仍然是有一定成效的。但是, 如想进行更深入的项目实践教学, 这些常规方法存在着以下不足之处:
1) 不能有效激发学生学习的主动性。
2) 实践效果不显著, 造成学生实际动手设计程序能力差。
3) 忽视学生的自主能动性, 不利于培养学生创新能力。
对于提高Java程序开发课程的教学质量, 国内外曾有学者尝试进行案例驱动式教学, 教学效果有一定的改观, 但问题是, 很多教师本身也没有太多项目实战经验, 而计算机技术的发展日新月异, 大部分缺乏项目实战经验的教师在案例教学的实践中并不能收到很好的教学效果。
在Java实践教学中, 引入混合式学习理念, 能收到较好的教学效果。
2 混合式学习理念概述
混合式学习是一种在师生二元论思想指导下的计算机网络与教学整合, 它把计算机网络有机地应用到传统教学过程之中, 既强调学习者知识的自我构建, 又强调教师的指导作用以及学习伙伴的协同作用。[1]从现实意义来讲, 混合学习, 不仅是一种学习方式的混合, 也是教学资源、教学模式、教学方法、教学目标、教学媒体、教学与工作、“学”与“习”的混合。
进行混合式教学的尝试, 遵循下面模式, 如图1[2]:
3 混合式J a va实践教学的基本模型
基于运用了观察法、对比实验法、实证研究法及跨学科研究方法, 对目前计算机专业的主干课Java程序设计课的实践教学进行了观察及实验性教学, 混合式Java实践教学的基本模型可以用图2来表示。
从横向坐标来分析, 包括资源、方法、环境、理论四个方面的混合。从纵向坐标来分析, 包括组合、整合、协同、扩展四个层次的混合。
可见, 混合式学习是各种学习资源的混合, 是各种学习环境的混合, 是各种学习理论的混合。进一步分析, 可得出混合式学习的以下4个层次:
1) 组合。各要素在这个层次中, 是相互独立的, 各种不同学习资源、学习方法、学习环境等可以线性地组成一种简单的混合学习方式。通过资源的整合, 架设学习资源服务器, 可以融入许多校企合作的程序开发项目, 有效解决了教师实战开发经验短缺的瓶颈。
2) 整合、融合。整合、混合学习方式指的是把各种学习方式融合到一个相互支持的学习方法结构体系, 这种融合是属于非线性的。
3) 协作、合作。“独学而无友, 孤陋而寡闻”, 强调各种学习方式的结合和学习者间的协作, 尤其像今天的大型程序开发, 更要强调程序开发者的团结与协作。
4) 扩展与超越。创造性的在合适的时间、合适的环境, 进行适合人的需要的有效的教育与学习。这需要为师者、学习者的极大的智慧。培养一个好的Java程序员, 不仅需要构建其严谨的逻辑架构思维, 还要培养其创造性思维及灵感。
在实践中, 可以合理的选择、进行有侧重的混合式的教与学, 实践证明, 多重资源的融合教学, 可以收到事半功倍的效果。
4 混合式J a va实践教学模型的实施
4.1 混合式学习的构建
基于混合式学习理论的Java实训交流平台, 结构如图3。
主要包括感悟空间、体验空间、和创新空间三大模块。其中感悟空间让学生通过文字、讲义学习专业理论知识;体验空间让学生通过视频动画复习教师上课讲过的重点内容;体验空间上发布各个学生用Java开发的各种程序、软件;创新空间上发布各种成型的软件架构, 各成员可组队进行设计项目, 各项目组创建讨论组。
4.2 混合式理念的教学设计
在整个混合式的实践教学过程中, 以学习活动为中心, 强调教学皆可活动化。
4.2.1 学习活动的设计
学习者的学习和发展的动力来源于学习者与环境的相互作用, 学习者认知机能的发展、情感态度的变化都是这种相互作用的结构。从学习者的角度看, 这种相互作用就是学习活动。[3]因此, 学习活动的设计必须作为教学设计的核心, 学习活动以学习目标的形式进行设计, 包括任务目标、成果形式、活动内容、活动策略和方法, 以此引发学习者的认知加工和思维, 从而达到发展学习者心理机能的目的。
如, 在学习“IF条件语句”时, 布置如下活动“已知数a, b, c, 若c为a, b的和, 则输出'right', 否则输出'wrong', 写出语句。”
此问题及解决方案可放在体验空间, 然后由此可反思更多类似的问题, 如把问题更改为“已知数a, b, c, 若c为a, b的差, 则输出'right', 否则输出'wrong', 写出语句。”
然后, 再进一步深化, 条件语句及循环语句的嵌套, 以及进一步加入逻辑判断等智能化元素到实际开发中的案例中去。这些活动, 都在创新空间进行体现, 学习者可以进行交流合作。而做出来的好的案例, 又存放进资源库, 给其他同学学习参考, 不断丰富资源类库。
4.2.2 学习环境的设计
现在的程序开发, 往往是一个团队的协作结果。在整个程序语言的实践教学中, 培养开发者的人际协作能力也尤其重要。
在Java的实践教学中, 学习环境的设计主要表现为学习资源和学习工具的整合活动, 以及教师对开发人员的协调与分工。
4.2.3 媒体传播的设计
Java程序设计的学习, 需要不断的复习、巩固, 才能学得更扎实。媒体传播设计包括教师的课件、各个设计案例、来自大中型软件开发公司的实际代码集、学习视频等。在整个混合式教学内涵里, 媒体传播是最边缘层次的设计活动。
4.3 学与教的策略
这是一个“学”与“习”的混合过程。基于信息技术与课程整合的要求, 学习具有如下特点:学生是教学活动的主体;学习过程是以自主探索为主, 学习者之间必须协商、合作;[4]学习是以问题或主题为中心;信息技术是主要的学习工具。因此, 在教与学的过程中要注意以下策略: (1) 引导创建良好的问题情境; (2) 引导良好的小组协作学习; (3) 进行及时的评价与修正。
5 混合式教学的评价
在混合式教学中, 教师是课程设计的主要参与者和课程教学的主要实施者, 因而, 教师评价是混合式教学评价的重要组成部分。在实际教学中, 教师应对学习者的基本素养、业务能力、程序开发与创新能力进行评价。
5.1 引导学习者进行自我评价
对学习者的评价是混合式教学中最重要的部分, 是最基本的教学环节之一。在混合式学习中, 学生的学习活动不再是单纯的课堂听课, 其形式多样, 过程复杂, 单纯的期末考试不能反映学习者的学习成就。在Java程序开发实践课中, 教师应关注学生的知识、程序开发的技能、情感、态度、价值观和学习过程与方法的变化, 以及开发程序的团队沟通能力。
在实践中, 教师可制订观察表, 对各阶段的完成任务的情况进行记录, 从而帮助学生做到客观的形成性评价、总结性评价和诊断性评价。
5.2 教学过程的评价
在实际教学中, 教师可征求学生对教学过程的意见, 收集相关的信息与数据, 不断诊断教学活动中的问题, 及时调整改善教学活动, 从而使教学过程更为有效, 最终实现学习者学习能力的提高。
6 结束语
通过实践, 在Java实践教学进行混合式教学, 在项目实操测试中, 进行混合式教学的班级的动手能力比使用单一的“讲授+上机”的方式的班级强, 在Java实践教学中应用混合式教学是一种行之有效的教学模式, 突破了单一的课堂教学模式, 完善了教学手段。通过多种资源的混合学习, 学生的动手编程能力得到了极大的提高。另外, 从教学内容上, 拓展了学生的视野, 突破了课堂内的时间瓶颈, 打破了时空界限, 改变了认知方式, 使“以学生为中心”的自主学习成为现实, 有利于培养学生开发程序的创造能力。
参考文献
[1]黄荣怀.混合式学习的理论与实践[M].高等教育出版社, 2009 (4) .
[2]侯阗.译的Blended Learning应用模式构建[J].现代教育技术, 2008 (7) .
[3]武爱红.高校课程混合式教学模式初探[J].邯郸学院学报, 2008 (9) .
3.java 学习线路 篇三
关键词:中专学校 《电子线路》课程 自主学习
DOI:
10.16657/j.cnki.issn1673-9132.2016.03.025
社会主义市场经济在不断发展,社会对人才的需求也越来越向全面化发展。电子技术专业作为一个比较具有使用价值、比较具有专业性的专业,对学生的自主学习能力要求也越来越高。为了适应社会发展的需求,中专学校的教师和学生都应该认识到《电子线路》课程学习的重要性,培养学生的自主学习能力,为社会的发展提供建设型人才。
一、中专学校《电子线路》课程的教学现状
电子技术在目前社会的发展中占据着很重要的地位,社会对人才的要求也随之提高,但在实际中专教学过程中,该课程为纯粹的理论知识,学习中或有一定的难度并且学生的学习兴趣很难培养起来。
首先,《电子线路》课程是一门比较枯燥的学科,在学习的过程中对学生的理性和逻辑性要求比较高,所以,在学习过程中会产生一种厌烦心理,导致学生在思想上产生抗拒心理。其次,学生对该课程的学习缺乏耐心《电子线路》课程是专业性和实践性比较强的一门课,会涉及很多比较抽象的内容,对于中专生来说,缺乏分析问题的能力,很难对该课程产生兴趣,进而会影响学生的学习效果,不利于培养自主学习型人才。再次,中专院校对《电子路线》课程的教学方式上存在着一些问题,往往比较注重教材层面的内容,忽略了理论与实践相结合,没能考虑到我国目前电子技术的发展状况和实际的需求,在教学方式上缺乏创新性,从而影响教学和学习效果。最后,中专教师自身的专业素质和职业道德素质不够,很多教师只是为了完成教学目标,以传统的教学方式教学,缺乏创新精神,不能有效提高学生的学习兴趣,有些教师的专业知识水平也不够充足,不能为学生讲解比较专业化的知识。
二、中专学校《电子线路》课程教学中学生自主学习构建的措施分析
《电子线路》课程虽然以理论知识为主,但是也具有很强的实践性。要构建《电子线路》课程的学生自主学习能力,教师就要转变教学模式,加强学生对该课程的认识程度,激发学生的学习兴趣,提高学生的自主创新能力。
(一)中专学校的教师和学生都要重视自主学习模式的建设
教师和学生都要认识到自主学习的重要性。教师应该在完成教学任务的基础上提高学生的自主创新能力。学生也要认识到《电子路线》课程的重要性,看到该课程在社会实际生活中的运用,自觉进行课程理论知识的学习。
(二)教师要学会改变教学方式,激发学生的学习兴趣
教师在教学过程中,应该将理论和实践相结合,将理论知识中的抽象化概念通过直观的方式展现出来,充分利用实物模型对理论知识进行分析和巩固,使学生视听结合,引导学生自主查找资料并进行记录、总结和分析,以使学生通过自主学习的方式获取更多的知识。
中专学生正处于青春期,对于学习也是根据自己的兴趣爱好来学的,《电子路线》课程中有许多理论的知识都需要通过实验来进行讲解。通过实验,不仅能够激发学生的学习兴趣,引导学生自主地发现问题、思考问题、解决问题,开发学生的思维。同时能够帮助学生将理论知识转化为实践,学生通过实验证明某条结论,这样能够强化学生的记忆,帮助学生理解抽象的定理和结论。再次,教师对自己的教学方式也进行了创新,不仅仅拘泥于课本上的条条框框,能够活跃思想,进行课堂方式的创新。
随着科学技术的进步,多媒体技术近年来已经广泛应用于教学过程中。作为一种新型的教学手段,多媒体技术能够将理论性的知识转化为图像和声音,如在教学过程中遇到某种比较复杂的电力结构图,学生无法想象该结构图的具体形象,通过多媒体技术将该结构展示给大家,同时通过动画进行结构的组成和拆分,进而帮助学生理解整个结构的组成,提高学生的自主思考能力,丰富学生的想象能力和创新能力。
(三)教师要学会发散学生的思维方式,活跃课堂的气氛
教师在上课过程中,要学会通过一个问题进行发散性提问,在提问过程中也可以添加一些具有趣味性的问题,进而有效地激发学生的学习欲望,调动了学生学习积极性与主动性,在活跃学生思维的同时活跃了课堂气氛。同时通过提问可以集中学生的注意力,引导学生进行自主思考。教师也可以开设课堂和课外讨论小组,让学生进行思想上的交流,在提高学生自主探究的同时,提高学生的团结合作意识,培养学生的团队精神。
总而言之,《电子线路》课程的理论性和逻辑性比较高的学科,为了提高该学科的课堂效率,培养学生的自主学习模式是非常重要的,通过连环提问的方式,在课堂上引导学生进行自主思考,活跃课堂气氛的同时将课本理论与实践结合起来。同时可以运用实验和多媒体教学来拓宽教师的上课方式,鼓励教师对课堂方式进行创新,丰富中专学校的教学方式。通过教学方式的创新和学生思维能力以及自主学习能力的培养,提高中专学校课堂的有效性,进而为社会培养出全面发展的战略型人才。
参考文献:
[1]夏进全.构建学生自主学习模式培养电子专业人才——中专《电子线路》课程学生自主学习模式探讨[J].成才之路,2013(15).
[2]秦红霞.项目教学法在中专《电子技术》课程中的应用研究[D].华中师范大学,2013.
[3]居宇鸿.中等职业学校电子技术应用专业课程推行项目教学方法的实践与研究[D].苏州大学,2014.
作者简介:
郝伟波(1983.1— )男,江苏宜兴人本科,宜兴市张渚中等专业学校,讲师,研究方向:电子电工。
4.JAVA学习路线 篇四
但有一些一般的步骤:
1.熟悉一种文本编辑器,比如vim, eclipse, notepad++, textmate等。知道哪些是开源的,哪些是闭源的,哪些要收费。养成不用盗版软件的习惯。
2.安装JDK(建议用你的Linux发行版自带的软件包管理器安装openjdk,过程中可能需要读发行版特定的文档)
3.写一个Java的Hello world程序,并用命令行工具javac编译,再用java命令运行这个程序。过程中熟悉源代码、字节码、虚拟机这些东西,以及Java的包(package)对.class文件所在的路径的影响。
3.5.如果这两个命令行工具使用熟练了,可以开始选一个喜欢的集成开发环境,比如Eclipse。当然,养成不用盗版软件的习惯。熟悉一下如何建立“工程”,以及快捷键的使用。
4.学习Java的面向过程编程,包括基本数据结构、表达式、语句、控制流、函数调用。
5.学习Java的面向对象编程,包括类、引用类型和值类型的区别、成员、方法、访问控制、继承、多态、接口、接口实现。顺便学习一下面向对象的基本思想,即对象、消息、封装、继承、多态等,这些通用的内容不是Java特有的。
5.5 这时候应该已经涉及了Java的垃圾回收。要留意即使有垃圾回收的情况下也会发生的内存泄露(如自己设计数组容器,元素是引用,逻辑上删除了元素,但并没有清成null)。
6.学习Java的异常处理,但更重要的是学习什么时候用特殊返回值而不使用异常,什么时候应该抛出异常而不处理异常,知道什么是pokemon catch及其危害,了解为什么Java的checked exception是一个糟糕的特性。如果愿意,同时学习一下Java1.7的try-with-resource语句和AutoCloseable接口。
7.熟悉Java常用的数据结构,如基本的数组类型,以及泛型容器(java.util.*),尤其是java.util.List
8.熟悉Java标准库里的各种工具,包括日期时间、字符串格式化、IO等。知道文件要自己在finally子句中close(),或者用Java1.7的try-with-resource,不要妄想垃圾回收器会帮你关掉文件。
9.学习一下Java的命名习惯,以及JavaBeans的常规,知道为什么getter/setter比直接操作成员变量好。按这种方式给Java的变量、方法命名。同时看看你的IDE能不能自动帮你生成getter和setter。
10.使用一个第三方的库(比如Apache Commons Lang通用工具库),让你的程序依赖于它的二进制jar包(而不是直接拷贝源代码),用命令行编译、运行(注意classpath等);也熟悉一下如何用你的集成开发环境添加第三方依赖。感受一下手动管理依赖关系的麻烦。
11.学习Maven的使用,试着让Maven帮你解决依赖关系,再试着让Maven帮你创建一个Eclipse工程。再试试用Maven打包发布。
12.学习软件测试,以及JUnit的使用,以及怎么在IDE中使用JUnit。有空看一下coverage工具。
13.读读四人帮写的《设计模式》(这本书是用C++和Smalltalk语言为例子的,但仍然适合Java)。具体的是这本书,http:///Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 图书馆应该能还借到英文原版,因为我借到过。
接下来就看具体要做哪方面的应用了,看需求。比如(下面的没有顺序)
【....】如果学Java学得不舒服了,学Python。
* 如果对面向对象编程的概念有点不习惯,学Smalltalk。(Ruby也行,但不如Smalltalk经典。Ruby的文档是一大硬伤。)
* 如果嫌Java太啰嗦,学Python
* 如果嫌Java太啰嗦,又想用JVM,自己又有精力,学Scala
* 如果对对象之间的关系有点晕,学一学UML,以及它的一些图,可以对程序和运行进行直观的建模。你的IDE也许有插件可以生成UML图。但是不要太沉迷于这些方法论。
【调试和辅助工具】学习一下你的集成开发环境提供的调试工具,加一些断点试试
* 试试用jconsole或者VisualVM监控另一个jvm的状态。
* 用profiling工具寻找程序中慢的地方。Eclipse有profiling工具。VisualVM也有这样的功能。(如果不介意使用闭源软件的话,也试试JProfiler和YourKit)
* 有的JVM允许在运行时更新代码。Eclipse可以和某些JVM集成。这样你可以频繁修改代码而不用频繁重启JVM。对于某些“重型”工程很有用。(如果不介意使用闭源软件的话,也试试jRebel)
【多线程】学习Java的多线程编程以及lock、condition的用法(包括传统Java的synchronized语句以及新加的java.util.concurrent.*),学习一下如何让线程停下来,以及为什么要频繁确认isInterrupted()而不要用Thread.stop()。了解一下多核处理器、缓存、内存的关系,以及为什么多线程编程这么难。
* 如果还舒服,学习一下Runnable的用法,以及自带的Executer等基本多线程工具。* 应该已经留意到java.util里面的很多容器不是线程安全的,但是java.util.Collections可以帮你创建一些安全的版本。另外关注一下java.util.concurrent里面有ConcurrentMap等容器可供使用。
* 如果有空的话,看看memory model(内存一致性模型)和无锁同步(见java memory model和java.util.concurrent.atomic)。
* 如果还有空,再了解一下除了“共享内存多线程编程”以外有没有别的模型(多进程multi-processing、消息传递message passing等)。
【反射、元编程】学习Java的反射机制,以及Annotation的用法。
* 如果还舒服,试试java.lang.reflect.Proxy的用法。
* 如果仍然还舒服,玩一玩CGLib(一个第三方的库)。
【网络编程】学习一下IP, TCP协议(计算机专业的应该学过,复习一下),学习Socket编程(注意垃圾回收器不会帮你关掉Socket)。
1.如果不是很关心HTTP,看看java.nio,学习单线程轮询式IO复用(Selector)。
* 如果有点不明白nio的意图的话,了解一下c10k问题。
* 如果身体没有异样的话,大概了解一下操作系统(包括C语言)提供的select, poll, epoll, kqueue等接口。
* 如果身体仍然没有异样的话,试着用java.nio写一个文件服务器。
* 如果还有精力的话,上网扒一扒有没有其他的通信库,如netty等。
2.如果关心Web还有HTTP,就学习一下HTTP协议,以及用Java进行HTTP的客户端编程。
* 如果还舒服,学学HTML,写写HTML的静态网页(不需要Java)
* 如果还舒服,用Java写一个基于DOM、XPath或者CSS Selector的网页解析器(爬网页)。
* 如果还舒服,学学Java的Servlet接口(先别学jsp)进行Web服务器端编程。学学标准的Servlet容器怎么用,包括web.xml的用法以及listener、filter等概念。以及某个Servlet容器(如Jetty或者Tomcat)的具体用法。
* 如果仍然还舒服,试着学一种模板语言(如haml, velocity, freemarker,【还有其他更好的框架吗?我不知道】, String.format,如果真的想学JSP的话JSP倒是也行,但不推荐)。* 如果仍然觉得舒服,学学Spring框架中的Web框架,或者Struts,看你的口味。* 如果还舒服,看看Spring Bean Container以及里面各种乱七八糟的工具。
* 如果还舒服,或者有需求,了解一下什么是RESTful Web Service,复习一下HTTP,找找适合的Java工具。
* 你可能会觉得Jackson是一个解析JSON用的好用的东西。
【数据库】学习一下关系数据库(计算机专业的应该学过,复习一下),包括SQL。选一个数据库管理系统熟悉一下(比如MariaDB,或者(如果你不讨厌Oracle的话)用被Oracle收购了的MySQL。先脱离Java单独学学)。然后看它们的官方文档教你怎么用Java连接这种数据库。这中间会涉及到JDBC接口。同时一定要知道SQL注入安全漏洞,以及掌握如何用PreparedStatement防止注入!。建议看 http://bobby-tables.com/
* 可能中间会涉及“事务”问题,让你不知不觉地开始去了解java transaction api(JTA)。* 如果还舒服,学一学对象关系转换(如Hibernate)。
* 也可以学学非关系数据库,以及如何用Java访问它们。
【日志记录】学习一下slf4j和logback的用法。
* 如果有精力的话,以及大概知道世界上有多少种Java日志框架,以及slf4j是怎么桥接这些框架的。
【构建(build)系统】学习一下Ant的用法。
* 如果还舒服的话,学习一下用Ivy从Maven的仓库里下载软件包,解决依赖关系。
【版本控制】学习一种分布式版本控制器(如Git、Mercurial、Bzr、Darcs等,推荐Git)的基本用法,以及如何用它管理Java工程。希望你已经开始使用Maven了。然后了解一下如何在IDE中使用(Eclipse自带Git插件)。
* 如果感觉很舒服的话,为你们实验室搭建一个Linux+SSH+Git服务器,装个GitLab(一种Web界面)。并说服同事们不要再用SVN、CVS或者SourceSafe等老旧的“集中式版本控制器”了。
* 开设一个GitHub账户。如果你不喜欢Git,就用BitBucket等。
【持续集成】自己(或者为你们实验室)搭建一个持续集成(Continuous Integration)服务器,定期编译你的程序。
【零碎工具】淘一淘java.nio.files里面有什么好用的东东,然后再淘一淘Apache Commons Lang和Commons IO里有什么好用的工具。Commons Logging就不要再用了,用SLF4j和Logback。
【XML】学学XML、DOM、XPath。XML这东西到处都可能用到。也可以用它写自己的配置文件。
* 如果觉得不舒服了,就学学JSON和YAML。
* 如果还是不舒服,就学学文本文件解析。
【语法分析和编译器】学学Antlr或者别的Parser Generator的用法
* 如果觉得舒服,自己写一个计算器。
* 如果还觉得舒服,自己写一种Domain-Specific Language(DSL)。
【高效容器】学学FastUtil或者Trove,如果你需要进行大量数值运算的话。
【分布式计算】学学MapReduce的思想以及它的实现。
* 如果还舒服,学学Scala语言以及号称比MapReduce快得多的Apache Spark。
【进程间通信】看看ActiveMQ、MINA和RMI。
【其他语言(JVM)】学习另一门跑在JVM上的语言或者实现(如Groovy、Scala、Clojure、JRuby、Jython、JavaScript……)
* 如果还舒服,学一学Java Scripting API(注意不是JavaScript。给个链接: http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/),然后试着在自己的Java程序里嵌入脚本。
【其他语言(非JVM)】学习另一门通用脚本语言(如Python、Ruby,其实perl也行,但不推荐),知道什么时候Java不是最好的选择。
【Java语言和Java虚拟机】通读一遍(一目十行地读,不用细读)Java Language Specification,以及Java Virtual Machine Specification。
* 了解以下解释器(interpreter)、编译器(compiler)、即时编译器(just-in-time compiler)和优化器(optimiser)的概念。
* 如果对编译器的话题不感到畏惧,了解一下method JIT和tracing JIT的概念和区别。
【内存管理】学学垃圾回收的几种基本算法,包括mark-sweep、mark-compact、semi-space、generational、mark-region等,各自的性能,以及为什么朴素的reference counting是不完整的。知道为什么finalizer性能很糟糕,而且标准并不要求finalizer在程序退出前一定会执行。* 如果还舒服,了解一下如何设置Java虚拟机的堆大小限制(如HotSpot虚拟机的-Xmx选项等)。
* 了解一下Java里的WeakReference以及SoftReference和PhantomReference,以及它们什么时候有用,以及为什么它们实现起来有些困难。
* 如果有精力,了解一下Hotspot虚拟机的内存管理算法是什么样的。
【动态装载】学学Java的动态装载(class loading)
* 如果还舒服的话,学学OSGI以及它的一种实现(如Felix或者Equinox)
* 如果仍然很舒服的话,学学写基于Eclipse平台的程序。不是Eclipse集成开发环境,只是利用他们的图形框架,写自己的应用程序。
* 如果还觉得舒服的话,写Eclipse集成开发环境的插件。
【本地/外语接口】学习一下Java Native Interface(JNI),试着写一个Java和C语言混合编程的程序。
* 如果觉得不舒服了或者觉得欲仙欲死,就学一学Java Native Access(JNA),试一试不用任何胶水代码而从Java直接装载C库,直接调用C函数。
* 如果连JNA也懒得学,就学一学SWIG,自动生成绑定。
* 如果觉得舒服,就学一学Java Virtual Machine Tooling Interface(JVMTI),用C程序来监视JVM的状态。
【密码学】学一学密码学,包括编码、密码分析、攻击、对称密钥、公钥系统、数字签名、哈希算法等,看看Java有没有实现。
* 如果觉得有点不舒服(你应该不会觉得舒服吧,除非你是学密码学的,要不然总会觉得自己写的程序有安全漏洞),就写一个“人品计算器”来放松一下,要求每次输入同一个姓名,得到的人品值是固定的,但又要让人无法用别人的人品值猜自己的人品值。
【移动终端】学一学Android开发。
* 如果有精力的话,看看Dalvik虚拟机是怎么回事。
* 建议买一个iPhone或者iPad,或许你再也不想用Android手机或者平板了。
【历史】如果觉得有些无聊,就去挖一挖历史上比较火的可能和Java相关技术,比如:* Applet,想想它比起html5+css3+javascript的缺点在哪里。
* AWT、Swing,想想为什么很少有人用Java写图形界面程序。你觉得Swing的程序看上去舒服吗?中国人和残疾人喜欢用Swing程序吗?
* JNDI,想想它比起Spring Bean Container的缺点在哪里。
* JSP,想想它比起MVC结构的缺点在哪里。
* WSDL/SOAP,把它们和XML-RPC、RESTful Web Service比较一下。
* XSLT,以及为什么它是图灵完备的。可是它真的比Java本身更好用吗?
* Log4j、java.util.logging、Apache Commons Logging,各自有什么问题,以及Log4j的作者本人为什么又开发了SLF4j和Logback?
* Java最早是为什么设计的?
5.Java学习日记 篇五
1,一个文件里可编写多个类,一个文件里不能有两个public类。独立运行的类必须有main()函数。
2,Print()不换行,println()打印新东西之前会换行。3,在set classpath前后不能有空格,不能有中文符号。
4,三种注释方法://、/*…*/、/**….*/,/*….*/不能嵌套,注释功能有:说明程序的功能,可以取消代码,或者是回复代码。
5,标识符:由字母、数字、下划线、美元符号组成,不能以数字、关键字开头。
6,常量:不变的数值。有整型,长整型,单精度、双精度、布尔常量、字符常量、字符号常量。单精度常量以’f’结尾。
7,变量就是系统为程序分配的一块内存单元,用来存储数据。变量须先定义后使用,不允许嵌套定义。
8,低字节的类型可以转换成高字节的类型,高字节的类型不可以转换成低字节。
9,流程控制:if若有多条语句最好用大括号括起来。问号表达式:y=x>0?x:-x;若表达式为真,结果为x,反之为-x.10,Switch()语句只接受int、byte、char、short类型数据,switch语句用break,多个条件执行相同命令:case 1:
case 2:…… break;
11,while语句后若有“;”,不是不执行该语句,而是一直在执行空语句。12,do..while..语句不管三七二十一都执行该语句,直到while语句为假,且while()后有“;”。
13,system.in.read():从键盘上读取数据;
14,定义数组:int[] x或 int x[];arraycopy数组拷贝。
15,面向对象三大特征:封装、继承、多态。一个类中方法可以访问同类成员。若局部变量和成员变量名字一样,则成员变量隐藏。16,一个类中方法可以访问同类的成员变量和局部变量。
17,“==”与“equals()”的区别:“==”是比较两个对象的值是否相同,而equals()是比较两个对象的内容是否相同。例如: String str1=new String(“abc”);String str2=new String(“abc”);String str3=str1;If(str1==str2)System.out.println(“true”);System.out.println(“false”);Else
则结果返回为false。因为sr1和str2在堆中首地址不一样,而str1和str3首地址是一样的。若 If(str1.equals(str2))
System.out.println(“true”);System.out.prinltn(“false”);Else
则结果返回的是true,因为比较的是内容。
18,用private修饰的成员变量,在同一类中可以访问,在其他类中不可以访问。程序代码要求强内聚弱耦合
19,构造方法:和类名一样,无返回值,不能用return语句。实例对象一产生就立马调用构造方法,有几个实例对象就调用几次,一次完成对实例对象的初始化,若没有定义构造函数,系统会自动生成一个空构造函数,也可以进行重载。若定义了构造函数,则不再产生构造函数。了解构造函数执行过程。
20,finalize()方法类似于C++中析构函数,在被清除之前会调用这个函数。21,static静态方法只能直接调用同类中其他的静态成员,而不能访问非静态成员。静态方法在使用之前不用创建任何对象,而非静态对象在使用之前必须先创建实例对象。静态方法不以任何方式调用this和super方法
22,内部类:在类中直接定义内部类,内部类可以访问外部类成员变量。在程序块中均可定义内部类。
23,类的继承:在java中只支持单继承,但类可以有多层继承,子类继承了父类所有的成员变量和成员方法,但不继承父类的构造方法,可使用super方法调用父类的构造方法。
24,final()可声明类、属性、方法,若声明为类,则该类不被继承。若声明为变量,则该变量变为常量。若声明为方法,则该方法在子类中不能被覆盖。25,含有抽象方法的类称为抽象类。抽象方法:abstract int aa(int x,int y);一般方法:int aa(int x,int y){ 程序代码 }
两者的区别:前者必须由abstract修饰,只能声明,不能实例化,没有大括号;后者有大括号,说明实现了代码,不是抽象方法。
26,特殊的抽象类称为接口,接口中所有的方法都是抽象的。一个类用implements去实现一个接口的所有方法。27,一个类继承了另一个类,不能使用比继承类的访问权限更低的权限去访问该类。
28,del person.class 删除person字节码;javac *.java:编译所有源文件。29,a instanceof B:判断a是否是B的一个实例对象。对象的类型转换:子类可以转换成父类。Object是所有类的父类。
30,异常是非致命的错误,不是语法错误。对异常处理用try….catch..。用throws关键字抛出异常,也可以自定义异常。try后面可以跟多个catch捕获多个异常。finally语句无论如何都要执行,没有异常也会执行。
31,包,package语句,为java源文件的第一条语句,若无包则为缺省无包。同一个包中的类可以相互调用,不必写上包名。若为类加上包,则应将源文件中所有类都存到该包中。同一包中辆各类不一定在一个目录上。
32,访问控制:类本身有两种访问控制:public和默认。父类不能是private和protected,否则子类无法继承。默认修饰的类只被同一包中的所有类访问。33,进程:正在进行的程序。线程:一个程序内部的一条执行线索,每个线程上所要运行的程序代码段是多线程,用Thread类创建线程。
34,后台线程:如果对某线程对象在启动(调用start方法)前调用了setDaemon(true)方法,这个线程就变成了后台线程。只要还有一个前台线程在运行,这个进程就不会结束。如果一个进程中只有后台线程在进行,这个进程就会结束。Pp.join()的作用是把pp所对应的线程合并到调用pp.join();语句的线程中。35,单线程和多线程的区别:必须等到run()调用后才实现
36,要实现多线程必须要编写一个继承了Thread类的子类,子类要覆盖Thread类的run方法,在子类run方法中调用正在新程序中运行的程序代码,启动一个新线程是调用Thread类的start方法,Thread类对象的start方法产生一个新线程,并在该线程上运行Thread类对象中的run方法,控制线程是否结束。37,产生一个TestThread对象,四个tt.start()线程,共同去卖同100张车票: TestThread tt =new TestThread();tt.start();tt.start();tt.start();tt.start();
38,多个线程共享同一数据就会发生线程安全问题。
39,线程间的通信:wait():当前线程放弃监视器并进入睡眠状态直到其他线程进入同一监视器并调用notify()为止。
40,API:应用程序编程接口。Windous API:WIndous操作系统提供的各种函数。Java API:JDK提供的各种java类 41,java开发工具软件的基本特点:集成编辑软件功能,使用工程化管理,产生应用程序的基本框架,支持调试,提供各种辅助工具。
42,JCreator Pro:一个工作区可以管理多个工程,只能有一个活动工程。使用该软件时不用完全记住函数或者参数,因为有提示,43,String 类对象中的内容一旦被初始化就不能在改变。而stringBuffer类用于封装,内容可以改变。
44,indexOf(int ch)方法用于返回一个字符在字符串中第一次出现的位置,若没有该字符,返回-1.45,集合类,用于存储一组对象,其中每个对象称为元素,常用到的有:Vetor、Enumeration、ArrayList等。
46,从键盘上读取数字:int b=System.in.read();Vector.addElement():向Vector中添加元素。
47,Collection,Set与List三者区别:Collection是父类,通用集合类,各元素对象无指定顺序,允许有重复元素和null元素对象。Set为子类,无指定顺序,不允许有重复元素,最多允许一个null元素对象。List也为子类,有指定顺序,允许有重复元素和多个null元素对象。
48,Hashtable类:Hashtable像Vector一样动态存储一系列对象,而且对存储的每个对象都要安排另一个对象与之相关联。用put()存储数据: Hashtable ht=new Hashtable();Ht.put(“one”,new Integer(1));检索数据用get方法: Integer n=(Integer)ht.get(“two”);If(n!=null){
System.out.println(“two=”+n);}
要成功检索某个字,用作关键字的类必须覆盖Object.hashtableCode()和Object.equals().49.Properties类:Hashtable类的子类,增加了讲Hashtable对象中的关键字和值保存到文件和从文件中读取关键字和值到Hashtable对象中的方法。如果要用Properties.store方法存储Properties对象中的内容,每个属性的关键字和值都必须是String类型。
50,System类中的exit方法用于结束java虚拟机运行的程序。currentTimeMills():可以检测程序运行的时间。Java虚拟机系统变量或者系统环境变量都是变量和值成对出现。getProperties方法获取java虚拟机系统属性,setProperties方法用于设置系统属性。
51,Date类:日期时间的类;Calendar:日期字段相互间的操作类; Calendar.add():增加时间;Calendar.Set():设置时间;Calendar.get():获取时间。Calendar类位于java.util包中
52.TimerTash类实现了Runable接口,要运行的任务,由它里面实现的run方法来完成。
53,Math类包含了所用于几何和三角运算的方法,Random类一个伪随机数产生类。
54,File类:IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容。File f=new File(“hello.txt”);If(f.exist()){f.delete();} Else {f.createNewFile();}
System.out.println(“File name:”+f.getName());获取文件的名称 System.out.println(“File path:”+f.getPath());获取文件的路径 System.out.println(f.exist()?”exist”:”not exist”);判断文件是否存在
55,RandomAccessFile类提供了众多的文件访问方法;RandomAccessFile类支持随机访问,但是不能访问其他的Io设备,如网络、内存映像等。两种构造方法:
new RandomAccessFile(f,”rw”);可以读写 new RandomAccessFile(f,”r”);只读
56,流是字节序列的抽象概念。文件是数据的静态存储形式流是数据传输时的形态。流分为两种:节点流类和过滤流类。57,InputStream类方法:int read();读取方法 void close();读取后要关闭文件
58,FileInputStream inone=new FileInputStream(“hello.test”);等同于 File f=new File(“hello.test”);
FileInputStream intwo=new FileInputStream(f);
59,System.in连接到键盘,而System.out连接到显示器,用-1作为键盘输入的结束。
60,PipedInputStream与PipedOntputStream类:创建管道通信,使用管道流类,可以实现各个程序模块之间的耦合通信。
61,DateOutputStream类提供了三个写入字符串方法:-public final void writeByte(String s)-public final void writeChars(String s)
-public final void writeUTF(String s)
62,ObjectInputStream、ObjectInputStream用于从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。
63,避免频繁地在字符与字节间进行转换,最好不要直接使用InputStreamReader和OutputStreamWriter类读写数据,应尽量使用BufferedWriter类包装OutputStreamWriter类,用BufferredReader类包装InputStreamReader。InputStreamrReader和OutputStreamWriter用于将字节转换成字符流来读写的两个类。
63,读取一行文本用BufferredReader。
64,printStackTrace()用于将异常信息打印在标准输出设备上。65,AWT:应用窗口工具集;GUI:图形用户界面。66,将窗口从内存中显示出来用Frame.setViseble(true);Frame.setSize(int x,int y);设置窗口大小 Frame.add(new Button(“OK”));增加一个新按钮
67,GUI:包括基本组件和容器。Frame.dispose()将窗口对象释放,但线程消失,而Frame.setVisible(false);窗口不显示但程序没有结束。
68,事件适配器:事件监听器接口的最简单的实现类,称为Adapter。69,调用enableevents(long eventsToEnable))方法,可以在即使没有注册事件监听器情况下,组件也能够对某些类型的时间进行响应和产生相应的事件对象。70,GraPhics类与图形绘制有关。GraPhics.draw String()方法的坐标参数是左下面,这和其他的坐标在左上方是不一样的。
71,设置图形颜色:GraPhics.setColor(Color.Red);颜色英文须大写 72使用GraPhics.drawImage(Image img,int s,int y,imageObserver observer)方法显示图像。
73,与菜单相关的类:MenuBar、Menu、MenuItem。创建菜单的过程:先创建一个菜单条,再把几个菜单挂在菜单条上,最后在每个菜单上添加菜单项。也可以在菜单上创建子菜单。
74Container容器类,所有容器类的父类,Container.add()用于将组件添加到容器中。
75,Dialog类用于产生对话框,分为模态对话框和非模态对话框两种。76,Checkbox类用来建立单选按钮和多选按钮,单选按钮和多选按钮语义事件为ItemEvent,对应的监听器接口为ItemOutstream。
77,panel容器类,产生空白面板,可容纳多个组件,不能独立存在。78,ScrollPane用于产生滚动窗口。79,布局管理器管理组件在容器中的布局。
BroderLagout:NORTH、WEST、SOUTH、EAST、CENTER FlowLagout:布局分配是从左到右从上到下
GridLagout:网格布局,模块大小完全相同,也是从左到右,从上到下 cardLagout:多个组件交替显示,只有最上面的那一个可见。Container.setLagout(null)用于取消布局管理器
Container.setBounds(x1.y1,x2,y2)用坐标来设置组件位置
80,Swing提供了丰富的GUi组件,增强了AWT中原有组件的功能。JFC:java功能类,集合了Swing组件和其他能够开发API类。
81,JFrame是与AWT中的Frame相对应的Swing组件,只能有一个唯一组件——JRootPane;
82,Applet:嵌套在网页中的小程序。
83,浏览器显示网页的原理和打开记事本方式一样
84,Applet由浏览器来启动执行过程:1)浏览器载入HTML文件。2)浏览器载入HTML文件中引用的Applet字节码。3)浏览器启动java虚拟机执行Applet; 85Applet需要覆盖的方法:init()、start()、stop()、destroy()、paint()。鼠标事件监听器: MouseListener()。
86,Thread.sleep(1000);语句需要捕获异常,用try…catch….语句捕获
87,Applet相关知识:容器与插件的程序架构设计模式、Applet程序中的控制台输出。
88,Applet程序的限制:不能启动执行其他应用程序,不能进行文件IO操作,不能调用本机代码,不能与Applet所在的主机之外的其他主机进行网络连接; 89,Applet标记的详细表:
[archive=archiveList]方括号的为可选项 Code=appletFile.class不带方括号的为必选项
90,OBJECT标记:使用HTMLContainer将Applet标记转换成OBJECT标记。使用OBJECT标记执行Applet小程序的java解释器被作为一个ActiveX插件使用。使用OBJECT标记比Applet标记多了自动下载和安装java解释器的功能。91,网络协议:TCP/IP UDP
92,获取本机IP地址:在命令行输入:ipcongif;端口号的范围是0-65535之间。93,TCP传输控制协议,是面向连接的通信协议 UDP用户数据报协议,是无连接的通信协议
94,Socket是网络驱动层提供给应用程序编程的接口和一种机制。网络编程类位于java.net包中。95,DatagramSocket类用于UDP通信,ServerSocket类用于TCP通信的服务器端。Socket类用于TCP通信的服务器端和客户端。
96,了解DatagramSocket类三种构造方法,close()关闭方法,send(DatagramPackage p)发送数据包方法;receive(DatagramPackage p)接受数据包方法
97,DatagramPackage提供了两种构造方法。getInetAddresss用于表示计算机IP地址的一个类,类中有getByName方法,返回一个相应的inetAddress实例对象。
98,TCP网络编程工作原理,利用TCP协议进行,两个应用程序有主次之分,主的称为服务器端,另一个称为客户端。
99,客户端与服务器端交互过程:1)服务器程序创建一个ServerSocket,然后调用Accept方法等待客户来连接。2)客户端程序创建一个Socket并请求与服务器建立连接。3)服务器接受客户的连接请求,并创建一个新的Socket与该客户建立专线连接。4)建立了连接的两个Socket在一个单独的线程上对话。5)服务器开始等待新的连接请求,当新的连接请求达到时,重复步骤2到5.100,TCP服务器程序必须先启动运行,TCP客户程序才能连接上TCP服务器,使用Windous提供的telent程序测试服务器程序,使用BufferredReader包装类,从网络输入流中一次读取一行文本。
101,使用netstart命令查看当前正在被使用的TCP端口号。通过一个配置参数来指定TCP服务器程序所使用的端口号。
102,ObjectInputStream和ObjectOutputStream可以从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。
103,使用ObjectInputStream和ObjectOutputStream来包装底层网络字节流,TCP服务器和TCP客户端之间可以接受对象类型的数据。
6.java学习报告 篇六
学习java天赋是很重要,但不是绝对的至少我是这么认为的!我想说的是我认为态度决定一切,Java的J2SE是Java的核心基础,学好SE部分对Java后期的深入学习非常重要。在SE部分,有许多的知识要点:类的概念、类的继承、多态、接口、面向对象等等。对于这一阶段的学习,除了课堂上的听讲,最最重要的是代码的实践,通过编写代码来理解上述所说的知识点的,将抽象的东西变成可以被你理解,应用的工具,熟能生巧嘛。
其次,学习的方法也很重要!好的方法会事半功倍哦!例如在编写代码的过程中可能会有这样那样的问题,遇到问题请教别人是一种不错的方法,但是,我认为最好不要马上请教身边的高手。自己先试着想办法解决,分析问题,对症下药,让自己有解决问题的成就感!但也不要在某个问题上发费太多的时间和精力,那样会使你产生挫败感,丧失学习的兴趣。在适当的时候请教高手,你会受益良多!
再次,对于资源的使用,也是提高学习效率的方式。SUN公司提供了专门的API文档,供开发者学习JAVA,遇到没见过的类、接口或者某个方法,就可以通过查询API文档获得帮助!不要忽视API文档,它是你学习JAVA很重要的帮手!网络也是另一种宝贵的资源,你可以下载一些JAVA的视频教程来复习和巩固知识、上网查询你解决不了的问题、到相关的论坛转转,发表你未解决的问题,听听高手的想法!
其实在刚接触Java时,自己确实有点晕,但经过一段时间学习,逐渐走出了迷雾。刚开始学习循环时,我觉得那一块很不熟悉,做题时,思路半天才理出来。经过一段时间的练习,我渐渐的走出了第一个迷雾。但是到了第六章,我彻底晕了,看书看得也一知半解晕晕乎乎的。类与对象是在学了第七、八章后弄清的。到了最后一章,学到字符串时,传递参数真让我晕啊,然后我又是练习,最后略微弄明白了点。我总结了我学Java的特点:先是不懂,后明白,再次不懂,又明白,又一次晕,最后弄清。经过三起三落,经过几个迷雾之后,我对Java也有了更为深入的了解,就学会了Java。
我觉得把Java学会的关键一点就是坚持练习。学习Java时每天必须保证一定量的练习,我们老师也说学习编程语言没有捷径可走。真的,只有每天反复操作了,经常写代码了,我们在遇到问题时才有一定的思路。欲速则不达,学习编程语言需要一个比较漫长的阶段,不能一步登天,这需要一个过程,在这个过程中慢慢积累经验,扎实基础。不要以为写出了一个简单的小程序,就认为自己已经学的很好了,这只不过是在你学习编程过程中一个小小的实践。不要满足于现状,要不断完善自己的知识体系,善于总结实践经验。要端正自己的学习态度,是主动去学,而不是被动!提高自学能力。学习编程的秘诀是:编程、编程、再编程。不仅要多实践,而且要快实践。
我们在看书的时候,不要等到完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让更快更牢固的掌握知识点。程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。举个例子,我们都编过Hello World,一开始很多同学不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?我刚也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么main方法是这样定义的了。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。
当然学习环境对学习效率也很重要。在学习的这段日子,我感触很多,我们班的学习氛围还不错,有时候大家一起讨论、学习、共同进步,有问题也可以询问助教,比自己一个人闭门造车来的更有效果!讲师在授课之余,还传授很多其他方面的知识,大大扩展了我们的见识,增加了学习的兴趣!
学习是一个日积月累的过程,只有从菜鸟做起,一步步的来,才能在学习JAVA的道路上留下你深深的脚印,在学习中享受!人之所以能,是相信能!同时在学习过程中应该注意的几点有:
1)首先是java环境的配置,对于已经习惯双击“setup”进行安装的我们来说,安装完毕后就可以使用软件了,但是java不是这样,安装完java jdk后需要对你所在的操作系统进行环境的配置,设置一些最最基本的环境运行变量。测试环境变量的配置是否正确。
2)添加你应用所需的功能扩展jar包。
3)配置好应用需要的dll动态链接库文件。
4)在项目建立初期进行输出打包测试,这样做的好处在于:应用软件的最终运行状态是软件需要发布,并可以在其他用户的计算机正确的运行,项目初期就进行输出、安装测试可以提早发现软件的非编码错误,另一点是将软件初期的GUI操作发布给用户,可以让用户提出一些宝贵的软件功能、界面上的整改意见,这样可以使软件更贴合用户的需求。
5)多多阅读相关知识点的英文资料,当然好的中文资料也是不可少的。
6)多多访问一些技术论坛,国内还是有一些不错的纯技术论坛的,在哪里你可以看到java的方方面面,及时更新自己的知识,“冲刷”自己的头脑是非常必要的,国外的技术论坛有时候需要翻墙才能访问,需要提前准备好翻墙的工具。不过我发现台湾的java论坛比国内的好,从版面的设置到人的参与性都比国内的要好,学习讨论的氛围也很浓厚。
7)多多写写问题总结,这样可以使自己加深对问题解决方法的理解,说不定哪天你会有更好的方法来解决问题。
8)多多学习别人的源代码,要知道社会发展到今天都是后人站在前人肩膀上作出来的成就,必须要清楚的知道现在的工作都是靠一群人开发才能完成的,学习别人的代码可以少走弯路,使自己更快的成长。
9)看一些技术的原理性东西,当然这个取决于你自己想从深层次的方面去应用技术还是泛泛的应用就行,每次都想快速的掌握他,虽然短时间里看起来很“繁荣”,但是当需要深入应用时就会发现心有余力而力不足,所以在适当的时间看一些技术原理性的东西是非常有必要的。
10)最后是一个个人习惯,在今天你打开计算机前或打开IDE前,先想好今天要完成哪些工作,昨天的问题解决了吗?如果没有是否有了新的思路?软件代码的备份也很重要。
【java 学习线路】推荐阅读:
2015年北京地铁线路规划图(北京地铁各线路的颜色)09-07
线路设计方案08-20
供电线路检修09-19
高频电子线路教案08-28
旅游线路范文09-12
线路改造验收报告09-20
关于线路改造的合同06-18
光缆线路专业试题06-29
强弱电线路改造合同06-30
输电线路工程资料培训07-05