java项目学习总结
现在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,有勇气和有基础的人可以尝试一下。
课程项目化是突出高职办学特色、促使课程改革走向优质的一条有效途径。课程项目化改革,实质上是要尽快摆脱以学科中心的课程模式的影响,倡导以从事现实职业活动的任务要求为课程内容,以现实职业活动过程为组织教学的线索。其实质在于: 全面落实工学结合要求。
【关键词】
课程项目化;高职;职业活动
1 项目化课程内涵
项目化课程的基本内涵是:项目可理解为一件产品的设计与制作,一个故障的排除,一项服务的提供等。项目化课程是以通过对工作体系的系统化分析所获得的工作项目为单位设置课程,并组织课程内容的职业教育课程模式。它以培养学生能完成实际工作任务的职业能力为目标;明确任务与知识的联系也是重要课程内容;强调知识与知识、知识与任务、任务与任务之间的复杂、整体联系;课程结构与工作结构相匹配;项目完成要让学生获得一个具有实际价值的“产品”等等,具有综合性、完整性、相对独立性的特点。
2 《Java EE框架技术》项目化课程建设
《Java EE框架技术》是长春职业技术学院的第一门国家级精品课程,它是一套系列课程。分为三个阶段。《Java EE框架技术》是java的基础课程,主要是培养面向对象的思想,学完可以做一些C/S架构的桌面程序,如聊天室、小游戏、坦克大战等。《Java EE框架技术》主要介绍JSP、Servlet等技术,可以实现基于互联网的Java Web应用程序。《Java EE框架技术》是主要使用JavaWeb主流框架技术Struts2、Hibernate、Spring等进行企业级项目开发,是对前续课程知识的综合应用和技能的提升,而且开设在第五学期,后面就面临着实习和就业,所以我认为很有必要把本门课程建成一门符合Java 程序员岗位要求的项目化课程,为学生积累项目开发经验,为实习、就业增加砝码。
2.1课程培养目标
课程以程序员为培养目标,使学生能够了解项目开发流程和规范、理解SSH2整合开发的工作原理、掌握SSH2整合开发技巧;能根据用户需求分析报告,进行系统架构、用例详细设计。能按照软件开发规范,进行软件编码、单元测试和集成发布;能够配合好团队成员,完成指定模块的研发;有良好的学习能力,喜爱专研新技术;能严谨、认真的完成代码的编写和测试,并按时提交任务。通过以上的培养目标,使学生真正达到与企业零距离的对接,完成了由学员阶段到程序员阶段的角色转换。
2.2面向主要岗位
本课程对应IT企业的软件开发部门。面向的首次岗位是初级程序员、软件测试员、软件实施员。二次岗位是高级程序员、测试工程师、实施工程师。未来发展岗位是系统架构师、系统设计师和项目经理。本课程面向的主要岗位就是java程序员。
2.3典型工作流程
java程序员典型的工作流程是:首先要通过需求分析阶段制定好的分析报告,来深入了解客户需求、业务流程;然后进行方案设计,主要进行用户界面设计、角色和权限设计、数据模型设计、系统架构设计,在本环节会生成系统详细设计说明书和测试用例;方案设计以后是系统定制阶段,主要完成程序代码设计和单元测试工作,本环节会生成系统实现的详细文档;最后是系统的集成测试和部署实施阶段,本环节会生成用户使用说明书。以上就是java程序员典型的工作流程。
2.4学习型项目
课程采用了与订单企业共同构建的学习型项目——网上购物管理系统来组织教学。该系统是通过对Java程序员岗位的工作任务、工作过程、工作环境等内容加以分析提炼,确定出该岗位所需的专业技能、职业素养,并按照以项目为载体,以工作任务引领课程内容的原则而构建的典型学习型项目。本课程是采用框架技术对系统的重新架构和设计,最终实现了一个四层架构的网上购物管理系统。
2.5学习情景
确定了课程的教学项目,依据项目开发流程中各个环节对应的企业岗位,并对岗位技术能力进行分析,确定了本课程的学习情境。下面我们具体来分析一下学习情境是如何划分的:软件项目开发首先要进行的是系统需求分析,对应的企业岗位是需求分析师,所需要的职业技能是系统分析能力,对职业技能进行知识转换,从而形成了第一个学习情境:系统设计;然后是系统架构设计、系统编码实现两个环节,对应的企业岗位分别是架构设计师、程序员。所需的职业技能分别是系统架构能力、软件编码能力,从而形成了第二个学习情境:系统实现;最后是系统整合测试、打包发布,对应的企业岗位是测试员、实施员,所需职业技能分别是系统测试能力、实施能力,从而形成了第三个学习情境:系统实施。
2.6教学模式
课程采用了“三阶段 一体化 双螺旋”的教学模式。三个阶段对应三个学习情境,并分别采用不同的教学组织形式,由教师的在引领中教学、在开发中教学、在应用中教学,到学生的在讨论中学习、在探索中学习、在实践中学习,充分的培养了学生自主、探究、协作等学习能力,完成了由学会到会学的转变。另外,学生课后独立完成拓展项目的研发,使学生巩固了专业技能,积累了项目开发经验。
2.7考核方式
课程考核采用平时成绩考核、拓展项目考核、企业案例考核三种考核方式。
平时成绩、拓展项目考核在一定程度上监督学生的平时表现,是保证课堂教学质量及培养学生核心能力的前提。
企业案例考核由学校与企业共同制定,企业案例考核占总成绩的60%。学生在进行案例考试的同时,就是在模拟企业实际工作中的项目开发,使考试内容与工作实践结合更加紧密,考试结果的说明性更强。“企业案例考核”能够保证以最小的误差评定学生在Java程序员岗位的工作实践能力,能够为IT校企联盟中的企业提供最精确的人才素质信息。
以上就是《Java EE框架技术》这门课程进行项目化课程改革的基本情况。项目化课程改革的全面推进, 将打破传统的教学管理模式, 摒弃忽视学生个性发展的传统教学方法, 为学生自主学习、个性发展和实践活动提供更多的时间和更广泛的空间, 为行业和企业培养面向一线的高素质技能型人才。
【参考文献】
[1]戴士弘.《职教院校整体教改》清华大学出版社,2012.05.
[2]曾红、李臻颖. 高职项目化课程的课程管理研究与实践 [J].职教论坛,2012(12).
这是一次比较完整的团队合作项目,它要求团队各成员对系统的主体设计搭成一定的共识,这包括数据库设计,需求分析,以及其它一些细节,因此在编码之前的准备工作一定要充分。
在设计之前,我们两组对于数据库的设计进行了激烈的讨论,最后在一些关键的问题上统一了意见。接下来的工作便是需求分析,具体结构设计,并制订小组项目详细计划,项目的进行将严格按照所制订的计划执行。然后小组成员对各自的数据库进行了设计,并且以数据字典的形式进行了共享。
企业级人力资源系统分为十个子系统:机构编制管理、人员信息管理、人事档案管理、考勤管理、薪资福利管理、社会保障管理、招聘管理、合同管理、查询统计管理、系统管理。
我负责人员信息管理子系统,这方面需要处理的业务逻辑比较少,表单比较多,要把握好与其它子系统的关联。员工基本信息表是与其它子系统关联的桥梁,大部分表都涉及到与基本信息表的外键关联。其中,职员编号(employeeId)是作为外键关联的字段,我给它设置了自增长。有人认为在企业里,职员编号应该是有一定规律的数字,而不应该设置自增长。这样的是想法很符合实际情况,后来我和两个组长讨论,认为自增长可以保证数据的唯一性,非自增长的主键在增加时可能遇到不可知的问题,并且其他组员的数据库已经设计好,改起来就麻烦了。因此最终职员编号采用了自增长。
有了上面的共识,接下来的重要工作便是依次完成表的增删改查、数据校验。其中,分页和批量删除是我计划最后完成的部分,并且一定要完成。
基本数据校验按各数据格式进行,例如手机号、e-mail等。另一方面要对职员编号与姓名的一致性,职员编号的存进行验证,这些通过DAO里面的方法实现,针对出错,用JS给出友好的提示。
在做好基本功能的前提下,争取做出特色。我尝试写了Hibernate分页、批量删除的代码,最后都测试成功。同时加入了JS控件,对于一些有特殊格式要求的字段,防止用户填写错误(比如日期的填写格式为yyyy-mm-dd),使系统更加人性化。经过讨论,对员工基本信息主表及与其关联的所有表,配置级联删除。当主表信息被删除时,与之外键关联的子表信息同时被删除。
回顾这段历程,遇到了一些瓶颈,例如批量删除时如何有效的处理选中的id,要明白它得到的是一个String[],需要转化成int[]就好办了。关于分页,我也是琢磨了好久。在网上看了不少实例,具体实现起来还是一头雾水。就在项目验收的前两天晚上,我决定自己写的试试。第一个方法是需要获取表里面总记录数count,按照套路执行hql,我这样处理了结果:
count = list.size();结果出了问题。数据库里有6条记录,结果打印出count为1。在这里折腾了好久,后来打印list为[6],这下才明白list.size()得到的是list里元素的个数,这个元素是6,我需要获取的是元素的是值(基础知识薄弱)。明白这点就好办了,最后我是这样处理的
String a = list.get(0).toString();//获取list第一个元素(对象),并转换成String
count = Integer.parseInt(a);//将a转换成int,得到count 这样做分页的第一步就完成了。第二天早上比较顺利的完成了剩下的代码并测试成功。
相比网上的分页代码,总的来说我写的很容易看懂,至于它有什么问题目前还不知道。
编译命令javac
编译命令:java
JVM:java虚拟机,类声明:
1、一个java文件中只能有一个public class 的声明,但是容许多个class声明
Class 声明:生成的.class 文件和类文件名相同
2、类声明是每个单词首字母大写(习惯)标志符:字母 数字 下划线 $符号 不能用数字开头 数据类型:基本数据类型 :数值型 字符型 布尔型
引用数据类型 :接口 类 数组
运算: 判断语句: 循环语句: 数组: 方法:
java.util.Arrays.sort(x)安升序排列
system.arraycopy(源数组,源数组开始点 ,目标数组 , 目标数组点,长度)面向对象:
面向对象的三个特征:封装 继承 多态 类包括:属性 方法
对象的产生步骤:声明对象,实例化对象 封装 常见的
构造方法:每一个类中都有一个构造方法,那么这个方法实际上就是构造方法
必须和类名相同
没有返回值类型的声明
不能使用return返回一个内容 匿名对象:只使用一次的对象
String 类:
字符:根据字符串的索引找到指定位置的字符 char charAt(index)
将字符数组变成字符串
全部变成字符串 String(char c[])部分变成字符串 new Sting(char c[],int offset,int count)字节:string 变成字节数组: byte[] getByte()将字符串变成字符数组 char[] toCharArray String 变成字符数组:插入char[] getChar(start,end,char des[],目的字符串数组的复制起始位置)字节数组到String 同上面 String 类中的常用方法
length()一个字符串的长度: equals()
equalsIgnoreCase()忽略大小写 startsWith()endsWith()
compareTo()按字典顺序比较难-1,0,1 根据字符串的索引找到指定位置的字符 char charAt(index)根据字符,字符串,找到字符串的位置 int indexOf(char c,int fromIndex)int indexOf(String c,int fromIndex)
字符串的截取: string substring(int beginIndex,int endIndex)字符串的拆分: String[] split(string regex)字符串的替换: replace(char old,char new)replaceAll(string old,string new)trim()去掉字符串前后的空格 toUpperCase()转换成大写: toLowerCase()
concat()连接两个字符串 substring()
substring(begin,end)
字符串转换成其他数据:
Integer.pareseInt(string)Character.pareseChar(string)Double b=Double.pareseDouble(string)
基本数据类型变成字符串:
Static string valueOf(int)valueOf(double)类:类是对对象状态和行为的定义
内部类:在一个类的内部还有另一个类
匿名内部类
包装类:
在包装类的操作中存在 装箱 和拆箱的 在jdk1.5后可以自动
重要的一点,可以将字符串变成基本数据类型
包,实际上就是一个文件夹,在不同的文件中可以存在同名的类
抽象类:包括一个抽象方法的类 抽象方法只是声明而未实现的方法,所有的抽象方法和抽
象类都都必须用abstract关键字声明
抽象类不能直接实例化,可以声明 必须被继承 子类必须直接全部继承抽型方法 继承:
继承的限制:java不支持多重继承,一个子类只能继承一个父类
代码块:包括四种:普通代码块
构造块,静态块 :优先于主方法执行,优先于构造块,而且只执行一次
同步代码块 this super
final 声明的类不能有子类
声明的方法不能被覆写
声明的变量变成了常量
如果final定义一个常量,常量的标识符必须是大写 接口:接口是一个特殊的类,是由抽象方法和全局常量组成: Interface 定义一个接口 Implements 实现接口
一个抽象类可以有多个接口,但一个接口不能继承抽象类 对象的多态:主要指子类对象和父类对象相互转换关系
向上转型:父类 父类对象=子类实例 自动完成
向下转型:子类 子类对象=子类(父类实例)强制完成 用packet来定义包 Import 导入包 系统常用的包
泛型: 异常: 多线程: Java常用类库 StringBuffer String是一个字符串,但是字符串的内容不可以改变,改变的只是内存地址的指向,想改变字符串的内容,必须使用StringBuffer append 将字符串链接
string和stringBuffer没有关系,如果先把StringBuffer对象变成string 必须用toString 常用方法 append()insert(int string)添加 delete(start,end)删除 reverse()反转字符
system类
system.currentTimeMillis()获得当前的时间
gc()方法:
finalize()throws Throwable 此方法将在对象被调用前使用 Date类 java.util.Date Arrays 是一组与数组操作相关的类 正则表达式
集合框架
Collection set list List 内容可以重复,Set内容不可以重复 IO流
在将近三个月的java学习中,我接触到了编程的乐趣.我热爱java,热爱编程.我将不懈的努力遨游在编程的浩海之中.我将我在java学习中经常出错的地方作个总结列出如下:
1.一个class中只能有一个main方法.2.静态的方法不能调用非静态的方法.若要调用,需要把非静态的方法加上static.3.类名的首字母要大写.字段,变量名,方法名,首单词要小写,其后单词的首字母要大写.包名全小写.并且所有的单词要紧靠在一起.4.声明一个String类型的变量时,其值要用双引号;声明一个char类型的变量时,其值要用单引号.5.“=”是赋值运算符,”==”是关系运算符.所以在if条件结构中,括号内的条件要是boolean类型的.6.Switch结构中,case 后紧接的是”:”.并且每个case后要加上一个break.7.类是对象的模板,对象是类的实体.8.将对象实例化要使用new关键字.9.尽可能的加上注释,并用javadoc生成自己的程序文档.10.“.”操作符后是方法.用法是:对象名.方法名.11.toString()是一个很重要的方法.它返回的是一个字符串.12..length在数组中是属性,在字符串中是方法.13.数组中,声明,分配并赋值的写法有两种:
1变量类型[] 变量名=new变量类型[此处为空] {X, X, X ,X,……};○
2变量类型[] 变量名=new○
【摘 要】在《Java 程序设计语言》教学中引入项目教学法,充分激发了学生学习的积极性,培养了学生的动手能力,提高了课堂的教学质量。本文主要对项目教学法在《Java 程序设计语言》课程中的实施进行了深入的讨探。
【关键词】项目教学法;实施;Java程序设计语言
《Java 程序设计语言》是一门面向对象的编程语言,具有很好的易用性及跨平台性,因此受到业界的欢迎。为迎合企业用人的需求,各大高校的计算机专业都将其设置为骨干课程,另外,本门课程还是《Java Web程序设计》、《轻量级JavaEE开发》等课程的前导课,具有很强的理论基础。在教学的过程中,教师应侧重培养学生的学习兴趣及动手能力,传统的教学模式多偏重于理论教学,轻视实践教学,这种方式下培养的学生独立学习和创新的能力相对较差,枯燥的理论学习极易将学生的学习积极性打消。为了避免这种传统教学手段所带来的弊端,满足企业对应用型人才的需求,提出将项目教学法引入到《Java程序设计语言》课程中来以提高课程的教学效果。
1.项目教学法
项目教学法是通过设计并实施一系列完整的项目而进行的教学活动[1]。传统的教学方法侧重于知识与技能的传授,通常以教师为主体,学生多处于被动的状态,很难主动参与到教学的过程中。项目教学法是由教师选择适当的项目,在教师的指导下,学生可以采用分组的形式共同完成对项目的实施。整个教学的过程中,形成以教师为主导,以学生为主体的教学模式。
项目教学法中所选择的项目应切合实际并且要紧密联系本门课程的教学内容,项目的难度要适中应围绕一个具有实际价值的项目展开,以达到激发学生学习兴趣的目的[2]。项目教学法以培养学生能力为中心,既考察项目最终是否按要求完成,又要考察项目完成的过程及质量,充分培养了学生遇到问题、分析问题、解决问题的能力,提高了学生的职业素养和专业水平。
2.项目教学法的实施
《Java程序设计语言》是一门应用性很强的课程,在采用项目教学法完成授课时需要注意项目实施的过程,以确保项目能够按照预期的进度进行开发。
2.1项目的选择
项目确定的是否合理是项目教学法能否顺利达到预期目标的关键因素[3]。所选择的项目应符合本门课程所涵盖的知识点,项目的难易程度应适中,太难的项目会导致学生完成时失去信心,太简单的项目难以实现预期的教学目标,因此能否合理的选择项目是对任课教师教学水平的一个考验。任课教师除了要充分掌握所教授课程的专业知识外,还应具有项目开发的能力,这样才能更有效的组织好项目教学工作。
为了能够让学生更好的掌握面向对象的编程思想,所选择的项目应该符合教学大纲的要求,从实际的角度出发本次的项目确立为网络聊天程序。该项目的实施可解分为三个阶段性的任务。任务一:编写网络聊天程序的界面。在该任务阶段主要完成聊天程序界面的设计,掌握Swing中的常用组件的使用情况。任务二:编写网络程序中接收消息端。通过该阶段的学习学生可以掌握事件处理机制相应代码的编写及多线程相关的内容。任务三:编写网络程序中发送消息端。在该阶段中除继续巩固事件处理机制外,还应掌握网络编程的相关类及方法。
2.2项目的具体实施
部署好项目阶段性任务后,教师可将学生分为几个小组,每组确定一名项目组长,每组的项目组长根据项目所需完成的任务在同组内进行细化分配给各组的组员,保证每名同学都能够参与到项目的开发中。在项目开发的过程中,教师要跟进每个项目组开发的进度,定期召集各项目组组长会议,了解各组的项目进展及开发过程中遇到的问题,并将相应的内容形成文字材料以便于后期对项目进行总结。
在项目实施的过程中,教师可以针对项目中所涉及到的知识点进行一下简单的讲解,让学生自己对本门课程中的内容进行扩展,起到“抛砖引玉”的作用以达到培养学生自主学习能力的目的。项目实施程中会遇到很多问题,对于普遍存在的共性问题,教师应提供一种解决的方案并启发学生考虑是否还有其它的解决办法。对于个别项目组存在的问题,可以让各项目之间组进行讨论,商讨解决的方案,以达到增强学生团队精神的目的。
项目教学法更注重学生项目完成的过程,在项目实施的阶段教师要充分发挥项目经理的作用,引导学生完成各个阶段的任务,每个阶段结束后对本阶段存在的问题进行总结,找到改进的措施并准备进入下一个阶段的开发,充分让学生体验企业中项目开发的过程。各阶段任务结束后,教学应要求各项目组对整体的项目进行测试,检测项目存在的不足并进行最终的修改,修改完成后形成项目结题报告,阐述项目开发过程中遇到的问题、解决的办法及通过该项目了解的知识点,为日后项目教学法更好的应用打下坚实的基础。
2.3项目的评价
项目结束后教师可以组织学生以项目组为单位对自己的项目进行汇报展示,每个项目组需要说明本组项目开发的整体架构及开发流程,还要阐述在项目开发过程中所遇到的问题及解决的办法。通过听取汇报的方式,其它组的成员可以提出自己的意见和建议,与此同时也会对自身项目存在的不足有一个清醒的认识,做到取他人之长补自己之短。之后教师要对此次项目的完成情况进行总评,对学生项目完成的质量、知识量的涉取、完成项目的创新之处等方面进行评价。首先要对学生在项目开发过程中的闪光点进行表扬,以激发学生学习的积极性。其次还要对项目中存在的问题及可完善的部分进行总结,并提出解决的建议。最后对本项目中所涉及到的知识点进行梳理,加深学生对本门课程知识点的理解。通过这种评价方式可以全面提高学生的学习兴趣及综合素质。
3.项目教学中注意的问题
在教学的过程中要实施项目教学法完成教学任务需要注意几下几点:
(1)项目的选取。项目的选取是项目教学法能否顺利实施的关键,取材要遵循教学目标,所选的项目应尽量覆盖本门课程的知识点。项目的选取应符合学生的能力,这样学生在项目开发的过程中可以获得成就感,有利于学生自信心的建立。通过循序渐进的方式完成项目的开发可以扩展学生知识的广度和深度,达到培养学生专业能力的目的。
(2)师生角色的重新定位。项目教学过程中,教师从传统意义上知识的讲授者转变为任务的制定者和学生的引导者,学生从被动接受知识,转变为主动解决问题。项目开发的过程中教师与学生相互交流,对学生遇到的问题进行指导,培养了学生解决问题的能力。
(3)增强师资培训。项目教学法将书本上的知识转换为实际的项目,需要教师自身具有很强的专业能力及项目开发的实践经验,因此需要增强教师的业务能力,以适应这种新的教学模式并提高教学的水平。
4.结论
项目教学法将枯燥的理论知识融入真实的项目,充分发掘了学生的创造潜能,突破了学生以往学习的方式,培养了学生主动获取知识的能力。将项目教学法引入到《Java程序设计语言》中,提高了学生的学习兴趣,在此过程中学生也积累了项目开发的经验,为后续其它系列课程的学习及实现培养满足企业用人需求的目标奠定了坚实的基础。
【参考文献】
[1]尹强国,冯娜.企业项目教学法在计算机实践教学中的运用[J].现代企业教育,2008(18).
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的用法
JAVA:JAVA解释器用于执行JAVA字节码。它所执行的是一个类并不是一个文件,所以后面类的名字区分大小写。
JAVAC:JAVAC解释器用于将JAVA源代码编译字节码。
JAVADOC:JAVADOC用于从程序源代码中抽取类、方法等注释形成一个和源代码配套的API文档。它执行的也是一个以.JAVA为扩展名的源文件,所以后面的文件名不区分大小写。
五、JAVA标识符
1、标识符由数字、字母下划线“_”或“$”符号组成。
2、标识符必须以字母、下划线“_”或“$”符号开头。
3、不能使用JAVA关键字。
4、字母区分大小写
六、数据类型原始数据类型数值类型
l BYTE
l 整型:SHORT、INT、INT
l 浮点:FLOAT、DOUBLEBOOLEAN类型引用数据类型数组类接口
七、变量
变量可分为类变量、局部变量、方法变量。
类变量在定义时就有默认值,数值类型的默认为0,CAHR的默认a,BOOLEAN默认FALSE。
方法变量中没有默认值,需要赋值才能使用。
八、类和对象的区别
类是对象的模板,对象是类的特例
类是抽象的,客观上并不存在的对象是具体的,是客观存的九、类的构造方法
构造方法具有和类相同的名字,它是一个没有返回值的方法。有隐式构造方法和自定义构造方法两种。JVM在没有自定义造构方法时提供一个没有参数也没有方法主体的默认构造方法。但是如果有自定义的构造方法时,JVM不再提供默认的构造方法。如果在类的实例化是需要用默认构造方法时,必须显示的定义。
十、方法的重载
可以对构造方法或者自定义的方法进行重载,对方法的重载必须满足以下三个条件:
1、参数个数不同
2、参数类型不同
3、参数顺序不同
十一、面向对象的特性
1、封装
2、继承
3、多态
十二、继承的特性
继承允许重用现有的类来构造新类的机制。在继承中具有如下特性:
1、默认继承Object2、单继承,只能有一个父类
3、子类继承父类除private以外的全部成员和方法。
十三、方法的重写
构成方法重写的条件:
1、两个继承关系的类里
2、方法名、返回值、参数必须一致。
十四、静态(变量、方法、块)
静态类型的变量或方法都是属于类的,并不是属某个具体对象的。所以也称类变量和类方 法,所有对象共享一份类变量。定义类变量或类方法的关键字是static。静态块是在类第一次 加载时执行。它的作用是初始化类变量成员。
十五、抽象类
抽象类是具体抽象方法的、不可以实例化对象的类。构成抽象类的条件: a)具有一个以上的抽象方法。
b)继承一个抽象类,但没有实现全部的抽象方法。
c)继承一个接口,没有实现全部的抽象方法。
十六、异常
Error:内部错误,不期望用户捕获的一种错误。
try语句:try句子里面主要是放置要监控的程序句子
catch:以合理的方式捕获和处理异常,主有try语句出错才会执行。finally:释放资源,不管try里面的语句是否出错都要执行。
throw:手动引发异常
throws:由方法引发的异常
多层捕获:异常子类一定要位于异常父类之前。最后一个catch块要用Exception捕获,以便捕获到所有异常。执行其中一条catch语句之后,其它的catch将被忽略。
以上的内容不包括JAVA界面方面的知识,JAVA界面的开发需要用JBUILDER和一些专用的类,这些类在SUN公司帮助里都可以查到详细的说明。总的来说,经过以上几点的理解会更加深刻了,对以前看书感到迷惑的知识点现在可以帮助消化吸收。
java语言产生于C++语言之后,是完全的面向对象的编程语言,充分吸取了C++语言的优点,采用了程序员所熟悉的C和C++语言的许多语法,同时又去掉了C语言中指针、内存申请和释放等影响程序健壮性的部分,可以说java语言是站在C++语言这个“巨人的肩膀上”前进的。
java采用的是相对简单的面向对象技术,去掉了运算符重载、多继承的复杂概念,而采用了单一继承、类强制转换、多线程、引用(非指针)等方式。
在java程序中不能采用地址计算的方法通过指针访问内存单元,大大减少了错误发生的可能性;而且java的数组并非用指针实现,这样就可以在检查中避免数组越界的发生。无用内存自动回收机制也增加了java的鲁棒性。
JAVA执行过程 :
1.java程序的编辑可以使用任何一种文本编辑器,例如UltraEdit、Notepad、Wordpad甚至word,然后只要把编辑好的文件存成.java文件。当然也可以用一些集成开发环境,例如Borland公司的JBuilder,IBM公司的Visualage for Java,此外还有cafe、kawa等其它集成开发环境。下面两幅图分别是用UltraEdit和JBuilder编辑Property.java文件的情况。
2.Sun公司为全世界的java程序员提供了一个免费的java程序开发包(Java Develop Kit,简称JDK),其中包括了java编译器命令“javac”,以及java执行命令“java”,还有帮助文档生成器命令“javadoc”等等。所有这些命令都可以在命令行下运行,例如我们要编译上述java文件Property.java,如果是在windows中进行开发,就可以在“命令提示符”下进行编译,在命令行中敲入“javac Property.java”
3.当编译结束以后,在java源文件中的每一个类都会生成相应的.class 文件,例如上图中就会生成一个Property.class文件,而java程序在执行时调用的是.class 文件。Java application的执行是在命令行下进行的,如果是在windows系统中,就可以“命令提示符”下敲入“java Propery”进行执行,该“java”命令会启动java虚拟机,并读入Property.class文件进行执行。
J2SE的知识和技巧
1.只有创建了对象,它才能分配到内存,方法也才能用。作用是分配内存。
2.方法equals(),比较对象的内容而不是reference.3.对于前置递增和前置递减,(也就是++a和——a),操作过程是会先计算再返回。
4.对于后置递增和后置递减,(也就是a++和a——),操作步骤是先返回再计算。
5.比较两个对象的实际内容,使用每一个类都有的equals()方法。
6.如果你创建了自己的类,再使用equals()方法的缺省行为是比较reference.所以,在新类里覆写(override)equals()方法。
7.将float或double转换成整数的时候,它总是将其后面的小数截去。
8.Math.random()会生成0.0,用数学术语,它的值域是[0,1)(方括号表示包括,而括号表示“不包括”)
9.如果你写了一个没有构造函数的类,那么编译器会自动为你创建一个默认的构造函数。
10.只要定义了构造函数(不管带不带参数),编译器就不会再自动合成默认的构造函数了。
11.变量的初始化会先于任何方法,甚至是构造函数的调用。
12.编译单元里只能有一个public类。没有public修饰,它是package权限了,只能用于package内部。
13.取得当前工作目录,是文件系统中的java命令被调用的位置String curDir = System.getProperty(“user.dir”);
14.static成员只会在需要的时候初始化。第一次访问static成员的时候被初始化。
15.每一个编译单元(文件)只能有一个public类,只能一个公开的接口。根据需要文件里添加任意多个提供辅助功能的package权限的类。两个以上public类,编译器会报错。
Java语言学习的要点
1.学习的目的是为了将来进行应用程序的开发,而不是进行语言理论研究
2.将来的应用开发是在成熟的平台上展开,而不是自己从底层开发平台
一、掌握静态方法和属性
静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征。Java中大量应用了静态方法和属性,这是一个通常的技巧。但是这种技巧在很多语言中不被频繁地使用。理解静态方法和属性对于理解类与对象的关系是十分有帮助的,在大量的Java规范中,静态方法和属性被频繁使用。因此学习者应该理解静态方法和属性。Java在方法和属性的调用上是一致的,区别只表现在声明的时候,这和c++是不同的。
二、重视接口
在面向对象早期的应用中大量使用了类继承。随着软件工程理论的不断发展,人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接口近年来逐渐成为Java编程方法的核心。另一方面,就应用而言,大部分开发是建立在规范基础之上的,不需要自己建立复杂的继承关系和庞大的类。因此读懂规范和用好规范已经成为应用程序开发人员的首要任务,Java各项规范的主要描述手段就是接口。
三、学好集合框架
Java描述复杂数据结构的主要方式是集合框架。Java没有指针,而是通过强大的集合框架描述数组、对象数组等复杂的数据结构。学好这些数据结构的描述方法对于应用程序编写,特别是涉及到服务器方、3层结构编程至关重要。程序员在这个时候不能再用诸如数据库结果集之类的结构描述数据了。
由于很多语言没有这么强大的集合框架体系,很多初学者不知所措,更不知道拿来做什么用,因此应该引起足够的重视。
四、例外捕捉
Java对例外捕捉的强调是空前的,它强迫程序员用显著的与逻辑方法完全不同的方式描述例外捕捉,对于程序描述的完整性和严谨性有很大的意义。c++也有类似的机制,但是我们看到很多c++程序员并不习惯使用这些机制。
Java的初学者应该充分学习好这种例外捕捉机制,养成良好的编程习惯。
五、多线程需要理解机理
很多Java程序员热衷于多线程程序编写,认为是对逻辑能力的挑战。其实在大量应用中根本就不需要编写多线程程序,或者说大多数编写应用程序的程序员不会去写多线程程序。这是因为多线程机制都内置到基础平台当中了。
程序员应该了解的是多线程原理和多线程安全,这对于今后准确地把握程序是至关重要的。
例如JSP中编写到不同的位置对于多个用户环境的安全影响完全不同,又如著名的Super Servlet是每一个访问作为一个进程,但是每一个页面是一个线程,和Servlet正好相反,对程序的性能和安全的影响有天壤之别。
六、了解java网络编程
Java号称是最强的网络编程语言,但是大多数应用程序开发人员是从来不会自己开发什么底层的网络程序的。
需要做只是了解原理就够了。网络机制的实现是靠平台实现的,除非自己开发平台,否则是不需要知道socket怎么实现,怎么监听访问的。因此在这方面花太多的功夫就偏离了“将来的应用开发是在成熟的平台上展开,而不是自己从底层开发平台”这一假设
1.欲速则不达,初学者请不要被新技术迷惑,先把基础学扎实。JAVA2入门教材完全是适合初学者的,配合有视频讲解,大家可以免费索取,并不是它说了多少知识,多少api.它只说了更多的“基础知识”
2.要扎扎实实,一步一个脚印的逐步学习,不要想着一步登天。给自己定一个学习流程,按照流程学习。不要看到大家都在学J2EE了,就去学J2EE发现大家又在讨论JSP,又放下J2EE去学JSP.浮躁的人永远学不到什么东西。
3.多查API,它是Java编程的基本方法,也是编程过程中所不断利用的资源。Java的学习过程不仅仅是基本语法的学习,更多的是去学习和掌握它所提供的API类库。对于所接触到的类,方法,都去仔细去阅读文档的说明,再用自己编写的实例去此时一下。
4.看再多的书是学不全脚本的,要多实践,学习脚本最好的方法之一就是多练习; 不要只看不练,一定要把书上的例子亲手敲到电脑上实践,千万不要照抄,更不要复制粘贴; 看得懂代码,不代表会写代码。学编程语言不仅仅是从理论上的学习,更重要的是要利用这门语言为你的思想服务。理解这门语言是首要的,但是要达到心领神会、融会贯通就必须勤动手,多去时间,多编一些例子。计算机科学是注重实践的学科,成功的软件开发人员无不经过大量的上机锻炼,只有理论和实践相结合才能真正掌握只是和技能。
5.看得懂的书,请仔细看;看不懂的书,请硬着头皮看; 书读百遍,其义自现。第一遍书看不懂就看第二遍、第三遍。
Java基础部分
1、请简要描述oop的主要特征,并谈谈对这些特征的理解。
Oop主要特征:抽象,封装,继承,多态; 抽象:忽略与当前主题无关的部分,抓住重点
封装:使用方法将类的属性隐藏起来,控制用户对类的修改和数据访问的程度,继承:子类继承父类的方法和属性,使程序结构清晰,提高挨骂复用,一种is a 的关系。多态:不同对象对统一消息进行回应。一种多种同名方法共存
2、char型变量中能不能存贮一个中文汉字?为什么? 能,java中编码方式是unicode,char占2个字节,一个汉字刚好两个字节所以可以
3、short s1 = 1;s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错?
错,需要强制转型为short,+=是java定义的运算符故编译是jvm会自动处理
4、请说明break,continue,return的作用。
Break,可用于switch分支一条case语句结束以后,可用于跳出循环 Contiue :用于跳出里层循环
Return :也可用于终止循环,有返回类型的方法是用与返回
5、用abstract修饰符修饰的类和方法有什么特点?
修饰的类为抽象类,包含有抽象方法,修饰的方法,为抽象方法只有方法体而没有具体实现
6、protect 修饰的方法与不加任何修饰的方法有什么不同? 加上为修饰后访问为同一包中和该类的子类,不加为默认的包访问权限。
7、什么是对象?什么是类?它们之间有什么关系
对象:具有某些属性和行为的名词,类:具有相同属性以及相同行为的一组对象,关系:对象是类的实例化
8、请描述对象的初始化顺序。
对象初始化顺序:加载类,分配内存空间,清零,加载变量然后方法。先父类静态变量,父类静态块,子类静态成员变量,子类静态块,父类非静态变量,父类构造函数,子类非静态变量,子类构造函数
9、什么是继承?继承的特性可给面向对象编程带来什么好处?
继承:子类继承父类的方法和属性,使程序结构清晰,提高代码复用,一种is a 的关系。
10、什么是方法的覆盖? 与方法的重载有何不同?方法的覆盖与属性的隐藏有何不同?
方法覆盖:子类重写与父类同名的方法,拥有相同的参数名和返回值,多态的一种体先,重载:具有相同的方法名但是有不同的返回类型或参数。
属性隐藏:子类定义与父类同名的属性,父类的属性就会被隐藏。
11、请简述接口和抽象类的区别。并分别举例说明应用场景。
接口:接口中全是抽象方法,若一个类实现这个接口就必须是先接口中所有的方法。关键字implements和interface 抽象类:用关键字abstract修饰,包含抽象方法(仅有方法体而没有具体实现),可以包含普通方法和构造方法,使用时不能用new创建实例
12、说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是集合,按数组的方式存储,查找比较快,vector是线程安全的,但效率上低于arraylist,Linkedlist:链式集合双向链表,按序号索引数据进行向前向后遍历,所以插入和删除数据最快。
13、请说明Collection和Collections的区别。
Collection是一个j集合的接口,set和list都实现这个接口
Collection:是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
14、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
hashset我们自己区分的时候利用迭代器 iterator,内部利用hashcode然后equals方法实现区分是否重复。
15、Error和Exception它们继承自哪个类?有什么区别? 继承Throwable这个类,区别:error错误,一般来说很难回复,如内存溢出,exception,则为程序正常运行时永远不会发生的的异常,程序员需要处理。
16、什么情况出现NullPointerException异常?怎样处理?
使用一个对象是,对象为null,在适用对象前进行判断
17、请列举Java类中的方法修饰符,并简述其含义。
18、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会,在return前
19、Java中如何读写文件,请写出Java代码实现读写文件的基本过程。20、常见的xml解析方式有哪些?区别是什么?
Sax,dom:dom一次性全部读取xml文件,创建一个一颗文档树,故读取大文件是熟读缓慢
21、简要描述数据库连接池的工作机制,并列出使用数据库连接池的优点。
程序运行时,创建一定数量的池连接,比在以后维持不少于这个数量的连接。提高程序运行的效率
22、对于一个Linux命令,可以通过哪些方法了解其具体的使用方法。
Help,info,man,使用格式 help ls;ls –help;info ls;man ls;
23、Linux系统中,请简要描述文件和目录的访问权限的9个权限位的作用,请列举修改权限的命令。
Xxxxxxxxx;前三位表示所有者的可读可写可操作权限,中间所有者的所在用户组;后三位是其他用户,Chmod 777 要更改权限的对象。
24、数据库中,什么叫视图(View),什么叫索引(Index)?什么情况下会用到索引,视图的主要作用有哪些。
视图 :一张虚拟的逻辑表。并不包含实际的数据,相当于一个窗口,可通过该窗口对数据进行查询和修改。作用:使复杂查询变得容易,提供数据独立性,限制数据访问。索引:帮助查找数据。用指针加速取回数据。
Java web部分
1、请简述对J2EE的理解。
由sun公司提供的一种企业级基于组件的java开发规范。J2EE定义了13种组件如servlet,jsp,jdbc等。
2、简要描述对mvc的理解,并举例说明在项目中的实现思路
Mvc是一种开发模式,优点:耦合性低,可维护性高。,分别代表三个单词:Modle,Veiw,Control,模型层控制程序的业务逻辑,视图层,是接受用户输入和显示数据给用户与用户交互,控制层:控制程序走向,模型层与视图层的中间桥梁。
3、Javascript有什么特点?并说明其主要用途。
Javascript: 一种脚本语言,是基于事件的面向对象语言,弱数据类型,安全,运行速度快,有强大的函数库,主要用途:客户端验证用户输入,给用户动态的提示。美化页面。
4、什么是servlet容器?它的作用是什么? Servlet容器:用于创建和维护servlet,提供一个运行环境给servlet的东西。
5、请描述servlet的生命周期以及在每个阶段所调用的方法。
实例化:有容器进行。初始化:调用init()方法。处理请求:根据请求方式的不同调用service()中的不同方法如:doget,dopost。销毁:调用destroy方法。
6、怎样在web.xml文件中注册一个servlet?
主要两大块:
7、请描述在servlet中forward和redirect的区别与联系。
Forword:请求转发,服务器跳转,一次请求,地址栏不改变,request对象中的信息不丢失。Redirect:请求重定向,客户端跳转,两次请求,地址栏改变,request对象中的信息丢失。
8、请描述jsp的执行过程。
Jsp执行经过两个阶段:
1、转译阶段,将jsp转译为servlet,2、编译servlet,生成.class文件,3、调用.class文件生成html页面显示给用户。
9、如何执行一个线程安全的JSP?
<%@ page isThreadSafe=true%>
10、Jsp的9个内置对象是什么?他们分别有什么作用。
Jsp九大内置对象:page,request,response,session,application,pagecontext,config,exception,out。四个域对象:out输出信息,e:处理异常,config:拿到一些配置信息。
11、请列举出至少5个request对象的常用的方法。
12、Jsp的四个域对象是什么?他们的“域”指的是什么?
Page,requerst,session、,application,域表示有效时间,及在什么范围内有效。
13、请列列举四个jsp 指令,并说明它们的含义。
Page:设置页面属性,taglib,:标签指令,include:包含指令。
14、Jsp有哪些动作?作用是什么?
15、请描述Jsp和servlet的区别与联系。
。。。。
16、请说出在jsp中静态包含和动态包含技术的异同点。
静态是先包含再执行,动态为先执行在编译。
17、在 JSP 开发过程中,对于同一个用户的会话,要想在不同的页面之间共享数据,可以有几种选择?请一一列举
Request,session,application,cookie,重写地址栏,隐藏域。
18、请说明过滤器的工作原理以及重要的接口。
过滤器:当一个请求到达是过滤器会进行拦截,服务器响应消息时也会同样拦截。根据编写的故偶滤器确定是否放行和是否要做相应的处理。重要接口:filter,filterchain,filterconfig。
19、什么是监听器?它的作用是什么,请举例说明。
监听器是:专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时。监听域对象自身的创建和销毁的事件监听器 监听域对象中的属性的增加和删除的事件监听器
监听绑定到 HttpSession 域中的某个对象的状态的事件监听器
20、使用http传输协议将客户端的请求传送至服务器端最常用的是哪两种方式,他们的区别是什么。
Get,post,Get:方式相对来说速度较快,当传输的数据量要小于1kb,传输的信息会在地址栏显示,安全性存在隐患。Post:比get方式安全,传递的数据量也比之要大。
21、简述struts2的工作流程。
Struts2:核心为一个过滤器,当一个请求到达的时候,服务器对之进行拦截,参考struts.xml文件,寻找到对应配置的action,寻找到action类,对请求做出相应的处理。处理完后返回一个String,参考struts.xml文件中的配置的result显示相应的页面给用户
22、Struts2配置文件struts.xml中有哪些常用的配置项,它们分别有什么作用?
23、请说明在ognl表达式中#、$、%的作用。
Ognl表达式:#是取非valuestack中的值时使用,如request„.还有操作集合是时也可以用到。
$配置文件中那取action中的值是会使用到。国际化资源文件中引用ognl表达式 %当强制声明为ognl表达式或字符串是会使用到
24、写出3组常见的Struts标签,并简述其作用。
25、value stack是什么?它的作用是什么?在页面中怎样访问?
Struts的值栈,存放一些请求响应信息,直接访问。
26、请简要描述Struts2中拦截器的主要作用、配置及执行流程。
拦截器,servlet中的过滤器相似,当客户端请求到达是经过拦截器,响应是也会经过,是一种aop的思想。配置:interceptor Servlet是线程不安全的,采用多线程的方式调用service方法。CGI就是单线程,所以servlet比之效率高。Servlet实现单线程的方法:实现singleThreadmodel。
【java项目学习总结】推荐阅读:
2024国培项目远程培训学习总结02-20
java学习总结体会10-19
java基础学习总结01-13
java管理系统项目10-30
项目式学习概念01-04
项目技术学习内容01-11
研究性学习项目计划12-03
标准化项目部学习心得01-29
13.建立学习型组织(项目管理)12-23
如何学习java框架12-27
注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:iwenmi@163.com