java学习小结(精选7篇)
1.java学习小结 篇一
1,作用域public,protected,private,以及不写时的区别 不写的时候为private 2,ArrayList和Vector的区别,HashMap和Hashtable的区别
答:vector是线程安全的,而ArrayList则是线程不安全的,但执行效率较高,视具体情况而定用哪一种;
HashMap是非线性安全的允许使用null键和null值,而HashTable则不能,基本上hashMap替代了HashTable.3,char型变量能不能定义为一个中文?为什么? 能,用unicode码实现
4,多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?
口,答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接同步的实现方面有两种,分别是synchronized,wait与notify 5,继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 6,内部类的实现方式? 内部类分为四种:
1.成员内部类 2.局部内部类 3.静态内部类 4.匿名内部类
7,垃圾回收机制,如何优化程序?
虽然程序员无法控制JVM的垃圾回收机制。但是可以通过编程的手段来影响,影响的方法是,让对象符合垃圾回收条件。
例如声明int型变量时,可以这样,Integer a = new Integer(47);最后a = null;就符合jvm回收机制了。8,float型float f=3.4是否正确? 不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 或float f = 3.4f 在java里面,没小数点的默认是int,有小数点的默认是 double;Jsp方面
1,jsp有哪些内置对象?作用分别是什么?
1、request对象:客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
2、response对象:response对象包含了响应客户请求的有关信息。
3、session对象:session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
4、out对象:是向客户端输出内容常用的对象
5、page对象:page对象就是指向当前JSP页面本身,有点象类中的this指针。
6、application对象:application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。
7、exception对象:exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。
8、pageContext对象:pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
9、config对象:config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)。
2,jsp有哪些动作?作用分别是什么? 答:JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
3,include的两种实现方式的区别? 以下是对include 两种用法的区别 主要有两个方面的不同;一:执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<%@ include file=”relativeURI”%>
引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
1.forward跳转:
2.response跳转:response.sendRedirect(“跳转页面地址”);
forward跳转:服务器端跳转,地址栏不改变;
response跳转:客户端跳转,地址栏改变;
request.getRequestDispatcher(“/message.jsp”).forward(request, response);Servlet方面:
1,说一说Servlet的生命周期? servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣
运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
2,Servlet版本间(忘了问的是哪两个版本了)的不同? Jdbc,Jdo方面
1,可能会让你写一段Jdbc连Oracle的程序.2,Class.forName的作用?为什么要用? 3,Jdo是什么? JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强 Xml方面
1,xml有哪些解析技术?区别是什么? SAX 边读边解析,它只知道当前读到的元素,不知道其前后关系的元素,比较省内存
DOM 把整个文档读入内存,可以知道所有元素之间的关系,比较耗内存。2,你在项目中用到了xml技术的哪些方面?如何实现的? 用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中 3,用jdom解析xml文件时如何解决中文问题?如何解析? EJB方面
1,EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? MVC方面
1,MVC的各个部分都有那些技术来实现?如何实现? 设计模式方面: 1,开发中都用到了那些设计模式?用在什么场合? JavaScript方面 1,如何校验数字型? CORBA 1,CORBA是什么?用途是什么? 以上就是我的总结,可能不是全部,因为时间问题,如果能够记起来,我会再加上,有些问题描述的可能不准确,希望大家批评指正,问题都很基础,即使不知道,花上一点时间查找(csdn/java版)就能弄懂,希望对正在找工作的朋友有所帮助,有所提醒.一份正确率很高的笔试卷可能会为你的面试减轻负担,少问不少问题.当然我还是要提醒从
Java陷阱一箩筐—-面试题集 找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司。
面试是没什么道理可讲的,它的题目有的不合情理、脱离实际。有在纸上写的,有当面考你的,也有在电话里问的,给你IDE的估计很少(否则你赶快去买彩票,说不定中)。所以如果你看完此文后,请不要抱怨说这些问题都能用IDE来解决。你必须在任何情况下准确回答这些问题,在面试中如果出现一两题回答不准确很 有可能你就被拒之门外了。当然这些都是Java的基本题,那些面试的人大多数不会问你Hibernate有多先进,Eclipse的三个组成部分,或command design pattern,他们都是老一辈了,最喜欢问的就是基础知识。别小看了这些基础,我朋友水平一流,结果就栽在一到基础知识的问题下,和高薪无缘。好了废话少说,开始正题。
第一,谈谈final, finally, finalize的区别。最常被问到。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。这个问得很少。
第五,HashMap和Hashtable的区别。常问。
第六,Collection 和 Collections的区别。你千万别说一个是单数一个是复数。第七,什么时候用assert。
API级的技术人员有可能会问这个。第八,GC是什么? 为什么要有GC? 基础。GC:Java的垃圾回收器。
Java是由C++发展来的。它摈弃了C++中一些繁琐容易出错的东西。其中有一条就是这个GC。
写C/C++程序,程序员定义了一个变量,就是在内存中开辟了一段相应的空间来存值。内存再大也是有限的,所以当程序不再需要使用某个变量的时候,就需要释放这个内存空间资源,好让别的变量来用它。在C/C++中,释放无用变量内存空间的事情要由程序员自己来解决。就是说当程序员认为变量没用了,就应当写一条代码,释放它占用的内存。这样才能最大程度地避免内存泄露和资源浪费。但是这样显然是非常繁琐的。程序比较大,变量多的时候往往程序员就忘记释放内存或者在不该释放的时候释放内存了。而且释放内存这种事情,从开发角度说,不应当是程序员所应当关注的。程序员所要做的应该是实现所需要的程序功能,而不是耗费大量精力在内存的分配释放上。
Java有了GC,就不需要程序员去人工释放内存空间。当Java虚拟机发觉内存资源紧张的时候,就会自动地去清理无用变量所占用的内存空间。当然,如果需要,程序员可以在Java程序中显式地使用System.gc()来强制进行一次立即的内存清理。
第九,String s = new String(“xyz”);创建了几个String Object? 第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 第十一,short s1 = 1;s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错? 面试题都是很变态的,要做好受虐的准备。第十二,sleep()和 wait()有什么区别? 搞线程的最爱。
第十三,Java有没有goto? 很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。第十四,数组有没有length()这个方法? String有没有length()这个方法? 第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 常问。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 第十七,给我一个你最常见到的runtime exception。
2.java学习小结 篇二
随着计算机应用领域的扩大和软、硬件的发展以及用人单位的不断需求, 在高职高专的计算机教学中, 程序设计语言的学习及应用越来越显示出其重要地位。JAVA语言以其平台无关、面向对象、分布式等特性, 已经成为当前较为流行的编程语言之一。目前国内许多高职院校根据市场人才需求, 已经将JAVA课程体系包括:JAVA程序设计、JSP/Servlet技术、JAVA EE架构技术, 甚至Android开发引入教学中来。JAVA程序设计在整个专业人才培养的过程中起到承前启后的重要作用。
然而高职院校学生高考分数普遍不高, 良好的学习习惯没有养成, 学习计算机语言类课程有一定的难度, 这要求我们不仅要转变教学观念、改进教学内容, 还要变革教学手段。
随着互联网、移动互联网的兴旺, 充分利用网络信息技术, 创设数字化的学习环境, 开发符合学科课程要求的学习资源、探究网络环境下的教学模式, 搭建网络环境下的学习平台逐步成为教育改革的发展方向。专题学习网站作为网络化学习平台的一种新形式, 顺应时代的潮流应运而生。
但由于目前学生使用的终端设备多种多样, 屏幕的分辨率千差万别, 我们不太可能为每种设备专门设计一套网站。在这样的环境下, 设计并实现响应式的JAVA专题学习网站, 使得网站页面随浏览设备的不同而自行响应, 动态调整布局结构和元素的规格样式, 将相同的内容以不同的布局呈现给不同终端的学生用户, 可以方便学生随时随地进行学习。这对于促进高职院校教学改革的深化、提高高职院校教育质量有着较为深远的理论研究价值和较强的实践意义。
2网站的设计
2.1网站专题内容设计
对于JAVA程序设计, 我们按照学生认知规律, 采用分层法设计专题知识, 层次间采用树型结构表示。我们把JAVA程序设计分为新手入门、基础学习、进阶应用、延伸探究三个专题层次, 让学生循序渐进的进行学习。每个层次中, 我们根据内容的需要, 划分出了子专题层, 子专题层由若干原子专题聚合而成, 原子专题作为原子型对象 (树型结构的叶节点) 是粒度最小的。如果当前层次没有再划分出子专题层, 则这个层次就是原子专题本身。
对于新手入门这个层级, 我们划分了JAVA语言概述、搭建JAVA开发环境、开发第一个JAVA程序这样三个原子专题模块, 让初学者通过这三个专题知识的学习, 从零基础到初步了解JAVA语言和平台, 并能创建第一个JAVA程序, 以提高他们的学习兴趣和动手能力。
对于基础学习这个层级, 我们划分了JAVA语言编程基础、JAVA语言与面向对象和系统常用类三个专题。让初学者由浅入深, 详细地了解JAVA语言的基本语法知识, 初步掌握JAVA语言的编程思想和方法。
对于进阶应用这个层级, 我们划分了JAVA语言的I/O操作、异常处理技术、线程处理技术、Applet小程序开发、图形用户界面开发、图形图像处理技术、多媒体技术、网络编程技术和数据库处理技术这样几个专题, 使学生可以更深入地学习JAVA技术, 从而能够编写有一定规模的应用程序。
对于延伸探究这个层级, 我们划分了Java Bean和RMI、JSP和Servlet这两个专题, 不仅涉及软件的复用性和Java的分布计算等能力, 同时也让学生初步了解JAVA的一些应用领域, 为将来进行实用性程序开发打下基础。
这一系列专题的设计, 打破了一般普通教材章节限制, 由浅入深、循序渐进的对JAVA相关的一系列知识进行重组。不仅可以辅助教师进行课堂教学, 还可以很好的帮助学生通过自学, 来探究JAVA的一系列知识, 使学生尽快掌握JAVA编程思想和技巧。
2.2响应式专题学习网站的组成
响应式专题学习网站是把专题学习网站采用响应式设计方法来实现的网站, 所以本质上仍是一种专题学习网站, 它也是指在互联网络环境下, 围绕某门课程与多门课程密切相关的某一项或多项学习专题进行较为广泛深入研究的资源学习型网站。它应该包括一般专题学习网站的以下四个基本组成部分:
2.2.1结构化知识展示
展示与学习专题相关的结构化知识, 把课程学习内容相关的文本、图片、图像、动画等知识结构化重组。所用到的媒体可通过网络搜集, 也可通开发者自行建设, 按一定的教学策略进行分类, 以合适的形式进行组织, 并制作成生动的、有较强交互性的以网页形式呈现的网络课件。
2.2.2拓展性学习资源
拓展性学习资源是结构化知识的补充和延伸, 将与学习专题相关的扩展性的学习素材资源进行收集管理, 包括结合学科特点的不同学习工具和相关资源网站的链接。其资源可以是“按规范开发的、与本专题相关并综合各学科知识的资源数据库, 也可以是一些经过整理和分类的相关学科网页的集合, 或者是指向互联网上相关资源网站或网页的超链接清单, 也可以是一些搜索引擎工具等。师生在教学过程中发挥创造的内容也可以作为拓展资源存入资源库, 供师生共享。
2.2.3网上协商讨论空间
网上协商讨论空间实质上是一个可以为学习者创造协作、探索、交流的学习环境的平台, 根据学习专题, 构建网上协商讨论, 答疑指导和远程讨论区域。专题学习网站可以提供Email、BBS、微信、QQ等网络通讯工具为师生提供同步和异步的交流。
2.2.4网上自我评价系统
基于专题学习网站的学习情况评价依赖于网上评价系统的实现。网上评价系统收集了与学习专题相关的基础性强、覆盖面广、难度适宜的大量试题, 让学习者能进行网上自我学习评价。
2.3网站总体架构设计
响应式《Java程序设计》专题学习网站的设计原则是, 紧紧围绕上面划分的Java专题知识和结合专题网站的基本组成部分, 有机整合本门学科和相关学科的相关知识及相关多媒体学习资源, 构建有助于学生自主、探究、协作学习的知识结构系统。
我们根据课程内容要求和学习者的特征, 恰当地选择文本、图片、视频、课件等学习资源以及相关学科的相关内容, 通过结构化的资源重组, 构建符合逻辑的知识体系。我们根据协作学习的需要, 建立了讨论交流论坛, 为学习者开展协作、探索、交流活动创造学习环境, 培养学生创新和团队合作的精神。我们根据专题学习目标, 编制相应的评价内容, 制作在线测试模块, 方便学习者自我评价。
我们按照真实网站开发过程中构建专题知识内容, 并将拓展性的学科知识和相关资源融入其中, 基本形成了网站的总体架构框架, 如图1所示。
3网站的实现
本网站采用JSP/Servlet技术进行开发, 开发和部署过程中用到的工具、框架, 全部采用常用的开源软件。现将网站开发过程中的关键技术和工具介绍如下。
3.1 SSH框架
本网站在总体架构上, 采用了非常成熟的SSH框架。SSH为Struts+Spring+Hibernate的一个集成框架, 是目前较流行的一种Web应用程序开源框架。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层 (实体层) , 以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构, 负责MVC的分离, 在Struts框架的模型部分, 控制业务跳转, 利用Hibernate框架对持久层提供支持, Spring做管理, 管理struts和hibernate。
采用上述开发模型, 不仅实现了视图、控制器与模型的彻底分离, 而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化, 模型层只需很少的改动, 并且数据库的变化也不会对前端有所影响, 大大提高了系统的可复用性。而且由于不同层之间耦合度小, 有利于团队成员并行工作, 大大提高了开发效率。
3.2 Maria DB数据库
Maria DB是一个增强的My SQL替代品, 是由原来My SQL的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。Maria DB采用Maria存储引擎, 与My SQL相比较, Maria DB具有更快的复制查询处理能力, 运行速度更快, 支持对Unicode的排序等很多优点。
3.3 Bootstrap框架
响应式网站前端框架的出现, 提高了网站研发效率, 极大减轻了网站开发和运维成本。在本响应式《JAVA程序设计》专题学习网站的开发中, 采用了目前较为流行的Bootstrap3前端框架。
Bootstrap提供了优雅的HTML和CSS规范, 它是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎, 一直是Git Hub上的热门开源项目。Bootstrap的主要优势在于:
(1) Bootstrap是彻底的开源框架。
(2) 坚持移动先行, 支持响应式Web设计。
(3) 涵盖了从布局到表单、按钮等网站前端设计的各个方面。
(4) 全面支持HTML5和CSS3。3.4 HTML5技术
HTML5的设计目的是为了在移动设备上支持多媒体。HTML5的新特性主要有:
(1) 新增了语义化标签元素。
(2) 良好的多媒体支持
(3) 跨文档信息通信。
(4) 客户端存储。
本网站的在线视频播放采用高压缩、低损坏的视频格式。开发中运用HTML5与内嵌播放器结合的视频播放方式, 可以跨平台兼容现在的所有主流浏览器, 解决了在线播放视频的兼容性问题。
4网站效果测试
由于移动设备上的用户体验和桌面电脑差异很大, 因此对响应式页面的测试具有非常重要的意义。
在开发过程中, 我们采用Google Chrome的开发者工具 (Dev Tools) , 其中有一个称作设备调试模式 (device mode) 的模块, 它是一套专门用于调试和测试响应式页面的工具集。chrome的device mode不像其他的响应式页面测试工具仅仅简单地调整视区 (viewport) 大小, 而是可以兼顾到模拟移动端的用户体验, 特别是触屏手势交互, 例如轻击 (tap) , 滑动 (swipe) , 而这一切都在网页浏览器里进行模拟。
但我们不得不承认, 再好的测试工具也仅仅是模拟而已, 网站最真实的效果还是要经过部署, 真正使用才能看到。不过移动设备种类繁多, 我们不可能对每一种设备都进行采购和测试。由于从平台角度看, 在国内目前所有活跃的移动设备中, 安卓平台设备占据主要地位, 而智能手机是生活中最常见的智能移动终端。所以本文对所开发的响应式《JAVA程序设计》专题学习网站分别在PC端和Android手机端进行了测试。
4.1在PC端
在IE浏览器上, 运行开发完成的网站, 效果如图2所示。
4.2在移动端
由于篇幅限制, 我们不可能把网站中涉及的所有模块, 如视频播放等一一为大家截图演示, 所以针对上面PC端显示的主要模块, 响应式《JAVA程序设计》专题学习网站在移动端的显示效果如图3、4、4所示。
5结语
本文设计实现的响应式的JAVA专题学习网站, 有效补充了高职院校教学中专题学习网站建设的不足, 提供了一个丰富的适合学生自主探究和协作学习的资源库, 构建了方便师生、生生之间同步或异步协作交流的平台。由于本网站是响应式网站, 所以能使网站页面随浏览设备的不同而自行响应, 动态调整布局结构和元素的规格样式, 将相同的内容以不同的布局呈现给不同终端的学生用户, 方便学生随时随地进行学习, 从而使本网站充分发挥它在课程改革和网络化教学中的积极作用。
参考文献
[1]王咸伟.Java网络通信专题学习网站的设计与开发[J].中国教育信息化, 2010 (17) .
[2]张金鹏, 张成远, 季锡强.Maria DB原理与实现[M].北京:人民邮电出版社, 2015.
[3]陈甫.Bootstrap3在Java Web项目中的应用[J].电脑编程技巧与维护, 2014 (17) .
3.java学习小结 篇三
【关键词】建构主义学习观 ; 培养自主学习 ; 优化学习能力 ; 提高学习效率
【中图分类号】G633.6 【文献标识码】B 【文章编号】2095-3089(2015)36-0209-02
1.什么是学习小结
许多学习资料中都有章末复习小结,用来概括归纳一章的知识要点和典型例题。实际上,我们在教学中完全可以鼓励和提倡学生以每一小节为单元,写一篇学习小结。
学习小结的内容和形式与章末复习小结差不多,只是短小一些。简单地说,学习小结的内容一般包括:知识要点;题型归纳;思想方法及错题。
学习小结和章末复习小结又有所不同,章末复习小结通常是老师编写好后再展示给学生,学生的参与程度很小。而学习小结完全由学生自己独立完成,是学生的自主学习活动。
2.学习小结的教学功能
学生写学习小结对数学教学有什么作用?能不能提高学习能力,提高教学效率,是我们最关心的问题,回答是肯定的。事实上,写学习小结有如下的教学功能。
2.1写学习小结是培养学生自主学习的有效途径
建构主义学习理论认为:
(1)学习不是由教师把知识简单地传递给学生,而是由学生自己建构知识的过程。学生不是简单被动地接收信息,而是主动地建构知识的意义,这种建构是无法由他人来代替的。
(2)学习不是被动接收信息刺激,而是主动地建构意义,是根据自己的经验背景,对外部信息进行主动地选择、加工和处理,从而获得自己的意义。外部信息本身没有什么意义,意义是学习者通过新旧知识经验间的反复的、双向的相互作用过程而建构成的。
(3)学习意义的获得,是每个学习者以自己原有的知识经验为基础,对新信息重新认识和编码,建构自己的理解。在这一过程中,学习者原有的知识经验因为新知识经验的进入而发生调整和改变。所以,建构主义者关注如何以原有的经验、心理结构和信念为基础来建构知识。
所以说,“没有老师能教好数学”。好的老师应该努力促进学生主动学习,自主建构。新课程改革的理念也在大力提倡自主学习和研究性学习,革新学生的学习方式,还原学生的学习主体地位,培养学生自主学习的能力。
由于学习小结是学生对学习活动的整理加工,就是学生的自主学习活动。在写学习小结的时候,他必须依照个人的经验和需要,去总结知识要点,根据自己的理解去整理知识网络,并力求弄清知识的前后联系;在大量的例题习题中归纳出最典型的几个题型,归纳解题方法;挖掘学习活动中的数学思想和方法。因此,写学习小结的过程,就是学生知识体系的自主建构过程;就是思想方法的自主建构过程;也是认知经验的自主建构和完善过程。鼓励学生写数学学习小结,是培养自主学习的有效途径。
2.2写学习小结可以培养和提高学生的学习能力,优化思维品质
首先,写学习小结可以提高记忆的效率。
记忆是智慧之母——埃斯库罗斯。如果没有记忆,我们就无法思维,过去的一切经验都等于零。学习小结是“每个学习者以自己原有的知识经验为基础,对新信息重新认识和编码,建构自己的理解”的产物。学生通过自己整理和概括出来的东西,总是更符合他本人的理解水平和学习习惯,因此更便于理解和记忆;通过写学习小结,学生手脑眼并用,调动了更多的感知器官,因此更便于理解和記忆;通过归纳和概括,学生弄清了知识的前后联系,知识的条理性和系统性更好,因此更便于理解和记忆。
其次,写学习小结,可以培养和提高学生概括和归纳的能力。
概括能力是一项非常重要的学习能力,概括能力不好就好比消化能力不好,吃得再多也没用。一个学习能力好的人,必定也是一个概括能力强的人。写学习小结要求学生不能像作笔记一样完全照搬老师的课堂讲义,而是要对知识要点进行概括,提炼出最典型、精炼的基本题型,并总结解题方法和数学思想,是对知识和学习活动本身的认识活动。由于一般是一节学完之后才写学习小结,因此,学生必须从课堂学习,课外练习,甚至是考试测评中进行概括和提炼,才能写好学习小结。
最后,写学习小结,可以提高学生知识迁移的能力。
学习数学知识,最终是为了应用,是为了能解决问题。教学中经常发现学生上课听得懂,课外做题做不来。究其原因,主要是对课内知识概括的不够,不知道学了些什么知识,这些知识能解决那些问题,看到题目,总是不能把它和所学知识联系起来,无法把问题转化为基本数学知识和数学思想方法。坚持写学习小结,坚持对学习进行总结,就会对知识点和考点了然于胸,能看到许多问题的联系点和相似点,甚至是思想方法的相似点,在他的眼里,同一类型的问题实际上是一个问题。这样就能提高学生解决问题的能力,大大提高知识的迁移能力。
2.3写学习小结可以帮助学生提高学习效率,把学生从题海战术中解救出来
当前教学模式下,许多学生的学习效率是低下的。表现为解题能力低,速度慢,准确率不高,一些问题反复出错。他们总是把问题简单的归结于做少了题,于是就转身投入到题海战术的怀抱,这显然不可取。
古人云:学而时习之,不亦乐乎?温故而知新,可以为师矣。学习的技巧在于要经常复习巩固,自觉改造和完善学习者的知识和经验系统。“学习不是简单的信息积累,更重要的是包含新旧知识经验的冲突,以及由此而引发的认知结构的重组”。
通过写学习小结,学生的记忆能力,概括能力和知识的迁移能力都大大提高,学习自然就会有事半功倍的效果。同时,由于弄清了知识的前后联系,总结了解题方法上的相似性,达到了知识的高度概括性和系统性,培养了学生自觉归纳和使用数学思想方法的能力。学生思维的广度和深度上有了质的飞跃。学生总结了一个问题的解法,就等于掌握了一类问题的解法,掌握了一个问题的研究方法,就是掌握了所有相似问题的研究方法,再也不需要像以往那样,为了提高解题能力,不得不在题海书山中苦苦挣扎而不得其果。所以说,写数学学习小结,可以提高学习新知识的效率,优化复习巩固的效果,提高解题能力,从而提高学习效率。
参考文献
[1]陈越.《建构主义与建构主义学习理论综述》,上海市第六十中学,2002年06月17日
[2]戴步云.《如何提高记忆能力》,2010年04月16日
4.java学习小结 篇四
this关键字代表自身,在程序中主要的使用用途有以下几个方面: 1.使用this关键字引用成员变量
在一个类的方法或构造方法内部,可以使用“this.成员变量名”这样的格式来引用成员变量名,有些时候可以省略,有些时候不能省略。
eg1.public class ReferenceVariable {
} private int a;
public ReferenceVariable(int a){ this.a = a;}
public int getA(){ return a;}
public void setA(int a){ this.a = a;}
按照Java语言的变量作用范围规定,参数a的作用范围为构造方法或方法内部,成员变量a的作用范围是类的内部,这样在构造方法和setA方法内部就存在了变量a的冲突,Java语言规定当变量作用范围重叠时,作用域小的变量覆盖作用域大的变量。所以在构造方法和setA方法内部,参数a起作用。
这样需要访问成员变量a则必须使用this进行引用。当然,如果变量名不发生重叠,则this可以省略。
但是为了增强代码的可读性,一般将参数的名称和成员变量的名称保持一致,所以this的使用频率在规范的代码内部应该很多。2.使用this关键字在自身构造方法内部引用其它构造方法, this语句是是构造函数的第一个语句,它的形式是this(参数表)
在一个类的构造方法内部,也可以使用this关键字引用其它的构造方法,这样可以降低代码的重复,也可以使所有的构造方法保持统一,这样方便以后的代码修改和维护,也方便代码的阅读。
public class ReferenceConstructor { int a;public ReferenceConstructor(){ this(0);//调用了另一个构造方法
} public ReferenceConstructor(int a){
this.a = a;} }
这里在不带参数的构造方法内部,使用this调用了另外一个构造方法,其中0是根据需要传递的参数的值,当一个类内部的构造方法比较多时,可以只书写一个构造方法的内部功能代码,然后其它的构造方法都通过调用该构造方法实现,这样既保证了所有的构造是统一的,也降低了代码的重复。
在实际使用时,需要注意的是,在构造方法内部使用this关键字调用其它的构造方法时,调用的代码只能出现在构造方法内部的第一行可执行代码。这样,在构造方法内部使用this关键字调用构造方法最多会出现一次。
3.使用this关键字代表自身类的对象
在一个类的内部,也可以使用this代表自身类的对象,或者换句话说,每个类内部都有一个隐含的成员变量,该成员变量的类型是该类的类型,该成员变量的名称是this。eg1.public class ReferenceObject { ReferenceObject instance;public ReferenceObject(){
instance = this;} public void test(){
System.out.println(this);} }
在构造方法内部,将对象this的值赋值给instance,在test方法内部,输出对象this的内容,这里的this都代表自身类型的对象。
4.使用this关键字引用成员方法
在一个类的内部,成员方法之间的互相调用时也可以使用“this.方法名(参数)”来进行引用,只是所有这样的引用中this都可以省略。
Super
1.在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的。同时还要注意的一点是:“super(参数列表)”这条语句只能用在子类构造方法体中的第一行。
2.当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。当然,如果父类的成员变量没有被覆盖,也可以用“super.成员变量名”来引用父类成员变量,不过这是不必要的。
3.当子类的成员方法覆盖(重写)了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。eg1.class Country{
String name;
void value()
{ name=“China”;}
} class City extends Country{
String name;
void value()
{
name=“Beijing”;
super.value();
System.out.print(name);//父类的成员变量被覆盖
System.out.print(super.name);//输出父类成员变量
} //输出的结果为 Beijing China Static 1.在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法。
class Simple { static void go(){ System.out.println(“Go...”);} } public class Cal { public static void main(String[] args){ Simple.go();} } //输出为Go...,调用一个静态方法就是“类名.方法名”
2.静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间。eg1.class Value { static int c=0;static void inc(){ c++;} }
class Count { public static void prt(String s){ System.out.println(s);} public static void main(String[] args){ Value v1,v2;v1 = new Value();v2=new Value();prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);v1.inc();prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);} } //结果:v1.c=0 v2.c=0 v1.c=1 v2.c=1 //都显示为1,但是只调用了v1.inc(),可以证明它们共享一块存储区
eg2.class Value { static int c=0;Value(){ c=15;} Value(int i){ c=i;} static void inc(){ c++;} } class Count { public static void prt(String s){ System.out.println(s);}
//static定义的变量会优先于任何其它非static变量,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面
Value v=new Value(10);static Value v1,v2;
//在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一//次,且在类被第一次装载时。Static { prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);v1=new Value(27);prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);v2=new Value(15);prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);} public static void main(String[] args){ Count ct=new Count();prt(“ct.c=”+ct.v.c);//这句? prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);v1.inc();prt(“v1.c=”+v1.c+“ v2.c=”+v2.c);prt(“ct.c=”+ct.v.c);} }
//运行结果 v1.c=0 v2.c=0 v1.c=27 v2.c=27 v1.c=15 v2.c=15 ct.c=10 v1.c=10 v2.c=10 v1.c=11 v2.c=11 ct.c=11
3.通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类.eg1.public class StaticCls{ public static void main(String[] args){ //注意此处用法,创建一个类的内部类对象
OuterCls.InnerCls oi=new OuterCls.InnerCls();} } class OuterCls{ public static class InnerCls{ InnerCls(){ System.out.println(“InnerCls”);} } //结果:InnerCls
Final Final成员: 1.在类中定义变量加上final关键字,那便是说,这个变量一旦被初始化便不可改变(对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变)。其初始化可以在两个地方,一是其定义处,二是在构造函数中。这两个地方只能选其一。
2.方法中的内部类在用到方法中的参变量时,此参变也必须声明为final才可使用
eg.public class INClass{ void innerClass(final String str){ class IClass{ IClass(){ System.out.println(str);} } IClass ic=new IClass();} public static void main(String[] args){ INClass inc=new INClass();inc.innerClass(“Hello”);} } Final方法:
1.final方法不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法(即可以直接使用)。
2.inline的机制,它会使你在调用final方法时,直接将方法主体插入到调用处,而不是进行例行的方法调用
Final类:
一个final类是无法被任何人继承。对于final类中的成员,你可以定义其为final,也可以不是final。而对于方法,由于所属类为final的关系,自然也就成了final型的。
常量的定义:final static 定义时候:多次引用的字符串和数字等需要定义常量。
5.Java学习路线 篇五
首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA)。J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它是三者的基础,属于桌面级应用开发,这部分如果学得好很容易拓展J2EE和J2ME。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手机,PDA等等。J2EE,Java 2 Platform,Enterprise Edition,就是所谓的企业级Java,适合企业的大型应用开发。
J2SE:
新手最初学习的时候先要从J2SE开始学起,所包含的内容主要分为:面向对象概念的理解、Java基本语法的学习,Java桌面图形界面应用程序的开发,掌握常用的Java API等(关键是要学会怎样查阅)。
重点:Java基本语法(循环结构,数据类型,数组,运算符等)、Swing,awt,事件机制、文件输入输出流处理等
难点:面向对象思想的理解(接口、类等)、线程、socket网络编程等
视频教程推荐:孙鑫的Java基础视频教程、张孝祥的Java基础视频教程,讲的都很细,而且这两位老师在教学方面都有很好的经验。
J2EE:
在学习了J2SE之后,你可以尝试着慢慢过渡到J2EE,当然,学习J2EE海需要很多非JAVA技术的支撑,比如数据库技术,网页编程技术等等,待会我会详细介绍这两方面的内容。J2EE有三个必学的框架,如果你说你学了J2EE,但又不会这三个框架的话,那会让人笑掉大牙,这三个框架分别是Struts、Spring和Hibernate,虽然这三个框架应用很广,但不代表这三个框架就代表了J2EE,J2EE还有很多其他的东西,比如EJB,作为一款重量级(此重量级不是指重量级选手那个意思,此重量级非彼重量级)框架,虽然这个应用慢慢的再被其他框架所取代,但EJB3.0的出现也给它带回一些生机,作为一个分布式应用的框架,也是大家要去学习和了解的知识。
当然,刚才说到J2EE包含的范围很广,即使我把我所了解的所有技术说出来,也并不能代表J2EE,这是一个很深很广的学问,需要大家以后再工作的时候慢慢去发现了。我所了解的还包括:
JDBC:Java数据库连接对象,基础中的基础,Hibernate也只是对它的封装而已 JNDI: Java 命名与目录接口,J2EE重要规范之一 EJBS: 上面已经提到过了
RMI: 提供远程调用方法的支持,主要用于程序分布式开发 JMS: Java消息服务,中间件技术
JAVA IDL: 提供J2EE平台与CORBA交互能力和互联能力的技术 JTS: 组件事务监视器 JTA: 事务划分的一个技术 JAVAMAIL: Java中的邮件技术 JAF: Java启动框架,没研究过 Log4j,一款日志处理的框架应用
Junit:单元测试的好帮手
freemarker、velocity:两款不错的模板引擎
与Flash的交互Flex:目前很多的SNS应用就是使用到了这个技术
Web services:想知道我们论坛天气预报的效果是怎么做的吗?请关注这个技术 SOA:面向服务架构,未来技术发展的趋势之一 ……
不过前面介绍到得这些都不是J2EE的基础,是属于框架应用级别的.要真正把上面说到的知识掌握好,还是的学习J2EE最核心的东西:JDBC、JSP、servlet和JavaBean,后面三个也是学习SSH的基础(StrutsSpringHibernate的简称).鉴于J2EE的内容太过复杂,建议大家最初只学习: JSP, servlet和JavaBean,等这个基础掌握好再把SSH学习了,再对其他J2EE技术有个大致的了解就可以出去找工作了。当然,找工作的前提除了把Java学习好,还会有一些其他的技术也是必须要掌握的。数据库技术:
数据库几乎是程序中不可或缺的一部分,在整个软件开发中更是占据了重要作用.数据库在整个软件中扮演的是地基的角色,你要修房子,就要先打好地基,你要做软件,就要先设计好的数据库.目前数据库几乎都是关系型数据库,代表的有: SQL Server,目前最新的好像是2008,我不是很喜欢追赶时髦,用的还是2005,不过也很不错了,在此之前还有2000.MySQL,最知名的开源数据库之一,我很喜欢它的小巧耐用,学过SQL SERVER数据库再学它,无师自通,易如反掌.ORACLE.甲骨文公司的产品,大型数据库,正版的一般公司买不起.只有看看了,不过现在Java开发60%都是会使用到这个数据库,再加上现在甲骨文已经把sun公司收购了,JAVA和ORACLE得关系更加暧昧,各位得多花些时间在这上面了.除了这些,你还应该了解一些桌面应用软件开发用到的数据库,比如说sqlite。你在制作安装程序的时候可以把这个数据库打包进你的安装程序。
网页编程基础:
网页编程基础要学的内容也比较多,但主要集中在以下这三个技术之上,大家每天看的各种样式的网页都是它们呈现的: HTML:超文本标记语言 CSS:层叠样式表
Javascript:浏览器客户端脚本语言
现在更是流行各种JavaScript库,比如:Jquery、ExtJs等,你要是会其中的某一个库的使用,找工作so easy。
J2ME:
如果你在学习了以上技术还不过瘾,可以再学习手机程序的开发,就我个人看来,开发手机程序技术其实蛮简单的,难点在于优化,比如怎么让你写的程序尽量的节约手机资源,“代码诚可贵,手机价更高“,所以不得不比PC机多考虑很多成本和实用性问题。J2ME的学习的话,切忌不要单纯的再模拟器上测试,一定要找真机测试,真机和模拟器的效果之间差别是很大的。更多手机开发技术,有兴趣的朋友可以和我一起探讨。
开发工具:
开发工具的选择主要还是看大家的习惯,我个人比较喜欢使用eclispe,功能很强大,也很好拓展其他的功能。当让初学你也可以选择JCreator,或者最好就直接用记事本。等你熟悉了Java代码之后,就可以使用JBuilder、eclispe或者netbeans这一类的工具了。
6.JAVA学习报告 篇六
摘要:古人有云:“纸上得来终觉浅,绝知此事要躬行”。自从走进了大学,距离工作就不远了,学校为了拓展我们学生自身的知识面,扩大与社会的接触面,增加个人在社会竞争中的经验,锻炼和提高我们的能力,以便在以后毕业后能真正走入社会,在学习通信专业知识三年之后,组织我们进行认识与生产实习。认识实习是教学与生产实际相结合的重要实践性教学环节。它不仅让我们学到了很多在课堂上根本就学不到的知识,还使我们开阔了视野,增长了见识。生产实习是对我们进行专业基本训练,培养实践动手能力和向实践学习,理论联系实际的重要课程。,这有利于提高我们业务素质和政治素质。为我们以后更好把所学的知识运用到实际工作中打下坚实的基础。在认识与生产实习过程中,学校也以培养学生观察问题、解决问题和向生产实际学习的能力和方法为目标。
关键字:java、oracle数据库、对象与类、线程、触发器、游标
前言
随着计算机科学的迅速发展,计算机已深入到揉合社会的各个领域,它的应用已不再局限于科学计算,以解决一些数学问题,而且可以解决一些抽象化的具体问题,更多地用于控制,管理及数据处理等非数值计算的处理工作,这便为我们日常生活提供了很多方便。如今程序设计的语言很多,再好的程序设计业要有一个比较完善、清晰的思路——算法。为了编写一个好程序,必须分析待处理对象的特性以及各个处理对象之间的关系,以便能更好的解决问题。
一、主要实习内容 1.1实习目的
生活在这个信息化的时代,为了能够在编程方面有所突破,能够找到一份好的工作,就应该好好了解一些知识。是由microsystems公司于1995年5月推出的java程序设计语言(以下简称java语言)和java平台的总称。用java实现的hotjava浏览器(支持)显示了java的魅力:跨平台、动态的、internet计算。从此,java被广泛接受并推动了web的迅速发展,常用的浏览器现在均支持java applet。另一方面,java技术也不断更新。java平台由java虚拟机(java virtual machine)和java 应用编程接口(application programming interface、简称api)构成。java 应用编程接口为java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个java平台之后,java应用程序就可运行。现在java平台已经嵌入了几乎所有的操作系统。这样java程序可以只编译一次,就可以在各种系统中运行。java应用编程接口已经从1.1x版发展到1.2版。目前常用的java平台基于java1.4,最近版本为java1.7。oracle 是以高级结构化查询语言(sql)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是目前最流行的客户/服务器(client/server)体系结构的数据库之一。1.2实习内容
1.2.1课程体系结构
(1)java se:java核心语法、面向对象程序设计、继承、接口和内部类、异常处理、集合、多线程等
(2)以oracle为平台,介绍oracle数据库的安装,oracle体系结构,物理组件、权限分配,数据管理,深入讲解数据库设计范式。全面讲解各类sql语句的使用,深入学习了oracle数据库对象:tirgger(触发器)、pl/sql语法,作用,使用游标、超出过程、函数等问题。
下面是我学习java的一些内容:
(一)java的关键术语: 1.java语言是简单的 java语言的语法与c语言和c++很相近。另一方面,java丢弃了c++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符的重载、多继承、自动的强制类型的转换。特别是java语言不使用指针。
2.java语言是一个面向对象的
java语言提供类、接口和继承等原语,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。java语言全面支持动态绑定,而c++语言只对虚函数使用动态绑定。总之,java语言是一个纯的面向对象设计语言。3.java语言上分布式的
java语言支持internet应用的开发,在基本的java应用编程接口中有一个网络应用程序接口(java.net),它提供了用于网络应用编程的类库,包括socket、urlcnnection等。4.java语言是健壮的
java的强类型机制、异常处理等是java程序健壮性的重要保证。对指针的丢弃是java的明智选择。java的安全检查机制使得java更具有健壮性。5.java语言是安全的
java通常被用在网络环境中,为此,java提供了一个安全机制以防恶意代码的攻击。除了java语言具有的许多安全特性外,java对通过网络下载的类具有一个安全防范机制。6.java语言是体系结构中立的 java程序(后缀为java的文件)在java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的开发。7.java语言是可移植
这种可移植性来源于体系结构中立的,另外,java还严格规定了各个基本数据类型的长度。
8.java语言是多线程的
在java语言中,线程是一种特殊的对象,它必须由thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,实用型构为thread(runnable)的构造子将一个实现了runnable接口的对象包装成一个线程,其二,从thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。
(二)对象与类
类是构造对象的模板或蓝图。
2.1、对成员内部类的使用,如何定义内部类对象: 在外部类里面访问内部类:直接访问
在外部类外面访问成员内部类: 外部类.内部类 对象名=外部类对象.new 内部类构造器();2.2、成员内部类和外部类属性、方法相互访问
外部类访问成员内部类的属性或方法,需要在一个外部类的方法中引用内部类构造对象来使用内部类的属性和方法。
内部类访问外部类的成员属性或方法,则直接使用。2.3内部类是一种特殊的(或者叫复杂的)方法。作用是用来完成外部类给定的复杂算法。
静态内部类:为部类的类属性,或者叫复杂的类方法 2.4、对静态内部类的使用,如何定义静态内部类对象: 在外部类里面访问静态内部类:直接访问--在一个方法中定义静态内部类对象
外部类外面定义静态内部类对象:
外部类.内部类 对象名=new 外部类.内部类构造器();2.5、静态内部类和外部类属性、方法相互访问
外部类访问静态内部类的属性或方法,需要在一个外部类的方法中引用内部类构造对象,然后来使用内部类的属性和方法。
静态内部类只能直接使用外部类的静态属性和方法。
注意:如何在内部类里面访问外部类的this: 外部类名.this.局部类:在方法中定义的类
注意:局部类的角色和方法中的临时变量一样
局部类不能有访问修饰符
局部类的有效范围和临时变量一样,仅仅存在于方法体内。
局部类所处于的方法是否静态,来决定是否能访问外部类的成员属性。局部类所定义的方法可以直接使用局部类定义对象。局部类体里面不能使用方法中的形参,但是可以使用常量形参
2.6局部类的使用,如何定义局部部类对象: 只能在所定义局部类的方法中定义局部类对象。2.7、局部类和外部类属性、方法相互访问
1-局部类可以直接访问外部类的属性以及方法,但是要考虑局部类所处于的方法是否静态,来决定是否能访问外部类的成员属性以及成员方法。
2-外部类可以访问局部类的属性和方法吗? 可以:2.1-局部类继承外部类 2.8-局部类将自己的对象引用传给外部类自己类型的对象
然后使用多态的形式外部类就访问到了局部里的属性以及方法。2.9 匿名内部类
1-要求,匿名内部类必须有指定的继承类2-匿名内部类的定义格式:
父类 对象名=new 父类(){ 匿名类定义过程体 };父接口 对象名=new 父接口(){ 匿名类定义过程体 };3-如何定义匿名类的构造方法?原则上不存在匿名类的构造器,但是可以使用匿名语句块实现
匿名类中的匿名语句块就会充当构造器的功能,只不过不能传递参数 2.10抽象方法:没有方法体的方法
抽象方法必须用abstract关键字声明
一个类如果含有抽象方法,就必须是抽象类。
抽象类作用:
1-不能直接调用自己的构造器生成对象,但是可以被子类的构造器使用super(...)调用,来开辟子类继承父类的属性空间
2-对未知的事物做一个预定:让子类必须帮我实现一个方法。
抽象类:一个天生的父类
注意:含有抽象方法的类一定是抽象类,但是抽象类中不一定必须含有抽象方法
(三)线程的概念
多线程程序在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务。通常,每一个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序。3.1线程的操作
生成线程类的方式,以及执行的方式:
继承thread,对象.start();实现runnable接口,new thread(对象).start();这两种方式有缺点:
1-优点直接继承thread中的方法,使用起来比较方便。缺点,不能再继承别的类,也就是一个纯粹的线程类。
2-优点实现runnable接口,不仅具备线程的功能,还可以继承别类,完成非线程的功能。缺点:没有现成的线程功能方法使用。线程对象的生命周期:
主线程:用来启动别的线程的线程,称为主线程,例如main线程就是mt和mt2的主线程
子线程:被别的线程启动的线程,称为子线程。例如mt、mt2就是main的子线程
线程的守护:随着主线程的结束,子线程跟着结束,称为子线程为守护线程。反之为非守护线程
设定守护线程: 子线程对象在start()之前,使用setdaemon(true)方法来设定。线程的调度
1-使线程暂时休眠 sleep(long time);2-使线程让步 2.1、非指定让步 thread.yield();注意:非指定让步不一定可以让出去。
3.2、指定让步 指定让给的线程对象.join();指定让给的线程对象.join(指定让出时间);线程同步:如果有多个线程在使用同一个资源对象时,让他们串行使用的方式。
线程同步方法:1-在资源对象上定义同步方法,当一个线程在使用本资源对象时,会在本对象上加锁。
如果这时另一个线程来访问这个对象,又发现需要使用同步方法时,本对象有被其他
线程加锁了,我们第二个线程需要等待第一个线程执行完毕后释放了对象锁,他才能继续执行。
注意:同步方法定义需要使用 synchronized 关键字修饰,同一时刻只能有一个线程执行这个对象的同步方法。
即使,别的线程执行这个对象的别的同步方法也不行。
一个对象如果有多个同步方法,同一时刻只能有一个同步方法被执行。如果要使用 wait()notifyall()来进行线程调度,需要两个以上的线程。下面是在oracle数据库中的学习内容:
(一)数据库打开分为三个阶段 :
1-nomount : 作用—维护数据库系统文件,2-mount:作用—维护用户文件,3-open:作用:进行数据访问,对数据做增、删、改、查
(二)sql语句的特点
1。综合统一: 集数据定义、数据操纵、数据管理的功能于一体,语言风格统一,可以独立完成数据库的全部操作。
2。高度非过程化——提出“做什么”而不是“怎么做” 面向集合的操作方式——结果是元组的集合 3。语言简洁,易学易用 只有7个动词(insert ,delete , update, select , drop, alter, create)
(三)注:需要管理员权限的用户来操作 1-创建用户:
create user 用户名 identified by 密码
注:新建的用户缺少权限,需要分配使用权限才能连接
grant connect,resource to 用户名(连接和数据资源使用权限)2-锁定用户: alter user 用户名 account lock;3-解锁用户:
alter user 用户名 account unlock;
(四)数据库体系结构:结构组件汇总
内存结构
系统全局区(sga):数据库缓冲区高速缓存、重做缓冲区以及各种池 程序全局区(pga)进程结构
用户进程和服务器进程 后台进程:smon、pmon、dbwn、ckpt、lgwr、arcn 等
存储结构逻辑:数据库、表空间、段、区和 oracle 块
物理:用于存储数据、参数、重做和操作系统块的文件 1.2.2实习成果
学习了java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。学习了sql的基础知识及正确的运用方法,和有关的技术。通过学习,提高了分析、判断和处理问题的能力,锻炼了自己的实际动手能力,增强子的团队协作意识,了解软件开啊的思考角度和主要流程。为毕业之后能够找到一份好工作奠定了基础。回顾实习的这段日子,从最初的新鲜感到后来的无不充实,从最初对自己缺乏信心,在原老师的悉心教导下有问必答,严谨认真又充满了亲和力,让我增添了信心,开始了认真的学习。1)基本输入输出语句 //屏幕输出
system.out.println(abc);system.out.print(abc);//对话框输出
joptionpane.showmessagedialog(null, test);//屏幕输入
scanner sn=new scanner(system.in);string info=sn.nextline();system.out.println(你好+info);//对话框输入
string name=joptionpane.showinputdialog(请输入你的姓名:);joptionpane.showmessagedialog(null, 你好+name);2)byte-->short-->int-->long-->float-->double 行。
循环:有限次重复一种操作1 定义循环变量2 判断循环条件 1满足第一个条件时,精度低的往精度高的转换自动进行,否则强制进 3 变更循环变量
3)方法覆盖的目的(原因):当我们子类继承父类的方法不适用时,需要方法的覆盖
方法的覆盖也称为方法的重写
方法重写注意类的访问规则的定义问题:
子类覆盖父类方法时,访问规则只能比父类的限定要小。或者一样。什么样的方法不能被覆盖:1-看不见的方法2-不能继承的方法
3.1final修饰的方法不能被覆盖。(因为final的方法是特殊意义上的拒绝继承)4)异常的分类: 1-运行时异常(未捕获异常):可以不使用try-catch来包含可能有问题的代码,出现这种异常系统自动捕获并提示
2-捕获异常:如果你调用了捕获异常发生的代码,即使不会出现异常,也必须使用try-catch来调用这个有异常风险的代码。
异常的再抛出:
在方法调用过程中,如果被调用的方法出现异常,它自己能处理就处理,如果处理不了会再抛出给调用我的方法。
再抛出分类: 1-显性再抛出:在方法声明的参数列表后以及方法体之间使用 throws 异常类 称为显性再抛出。
2-隐形再抛出:不使用 throws 异常类来进行异常的再抛出。只有运行时异常(未捕获异常)才能进行隐形抛出。
手动抛异常:在代码中使用 throw 异常对象
注意:覆盖一个显性抛出异常方法时,子类中的覆盖方法的显性异常声明可以是父类被覆盖异常的子类或者其本身,不能使用比父类显性抛出异常范围还大的异常类。(子类可以不显性再抛出,也就是默认出现的异常我自己子类方法能处理)5)异常处理机制:
1-我们把可能发生异常的代码,放到try{...}代码段中,然后在其后使用catch(可能出现的异常类<定义一个>异常对象来捕获可能出现的问题){提示出现的问题} 2-如果try代码段有一句出现异常,并抛出。则try代码段中其后的代码不执行。跳到catch去捕获异常。
3-异常捕获的catch代码段,如果没有捕获到try代码段抛出的异常对象,则整个程序崩溃了。
4-为了满足一个代码段的多种错误处理,允许有多个catch代码段。这些catch代码段将“从上到下”的顺序捕获try代码段抛出的异常对象,直到捕获到为止。一个try代码段后的多个catch代码段,最多只能有一个catch被执行
5-使用exception来作为catch的收尾工作,确保所有异常对象都能被捕获到。6-异常父类的catch代码段不能放到异常子类catch代码段之前
7-异常处理的最后使用finally代码段,是程序安全的最后一道屏障。无论出现什么情况finally代码段都执行。oracle数据库中 1)触发器的组成:
触发事件:即在何种情况下触发trigger;例如:insert, update, delete。
触发时间:即该trigger 是在触发事件发生之前(before)还是之后(after)触发,也就是触发事件和该trigger 的操作顺序。
触发器本身:即该trigger 被触发之后的目的和意图,正是触发器本身要做的事情。例如:pl/sql 块。
触发频率:说明触发器内定义的动作被执行的次数。即语句级(statement)触发器和行级(row)触发器。
语句级(statement)触发器:是指当某触发事件发生时,该触发器只执行一次;行级(row)触发器:是指当某触发事件发生时,对受到该操作影响的每一行数据,触发器都单独执行一次。
数据库触发器是存储在数据库中、根据发生的事件而执行的一种存储子程序。它与存储过程不同的是,存储过程通过其它程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。该事件可以是一个ddl操作,如对象的创建、修改或删除;也可以是一个dml操作,如表或视图上的一个insert、update或delete操作;也可以是系统事件,如数据库启动和关闭、登录和登出;还可以是一个用户事件,如模式登录和登出。2)游标
游标是构件在pl/sql中,用来查询数据库,获取记录集合或者结果集合的指针,它可以让开发者一次访问一行结果集。oracle中游标的分类:显示游标、隐式游标。显示游标是早期定义的用于处理多行结果集的游标。隐式游标是由oracle定义的,它是和单行select„into语句,显示游标的使用:打开游标、将结果集取到pl/sql记录或者各个pl/sql变量中、关闭游标
3)游标的使用
定义了以后,在使用时:open—fetch—close insert语句、update和delete语句关联在一起使用的。4)参数化游标
显示游标可以带参数,并能为特定的参数返回数据集。
可以在游标名称后面,用括号括起参数的名称和数据类型来定义游标的参数。游标变量就是一个pl/sql变量,可以在运行时针对不同的查询使用该变量。同一个变量能指向不同的工作区。
使用游标变量的原因:
1、它能在存储子程序之间传递结果集。
2、在运行时一个游标变能与多个查询相关联。5)游标变量:
1、它能在存储子程序之间传递结果集。
通过游标变量,只要有游标变量指向某工作区,用户就能够通过该游标变量取到该工作区的内容。
2、在运行时一个游标变能与多个查询相关联。
使用游标变量:
1、分配内存
2、打开游标变量
3、把结果集取到pl/sql记录或者单独的pl/sql变量中
4、关闭游标变量
6)使用游标表达式的原因:
1、可以避免声明和使用多个游标
2、避免了在sql select语句中使用复杂链接
3、可以把游标表达式作为pl/sql游标的一部分使用。在能使用动态sql的地方,就能使用游标表达式并把值取到ref cursor变量中。7)分析函数使用实例
问题:给出各部门销售代表工资最高的前3名。
该问题具有二义性。
这是因为有重复的值,即可能有4个人都赚同样的工资,那该怎么办? 可以给出3种合理的解释:
1、给出销售人员工资最高的前3名;也就是说,查找唯一的工资总数的集合,对他们进行排序,得到最大的前3名
2、最多给出3个工资最高的人,如果碰巧有4个人工资最高,答案是没有任何行记录;如果有2个人赚最高的工资,有2个人赚同样次高的工资,答案是仅有2行记录(2个最高的)。
3、对销售人员按照工资从高到低排列,给出前3行记录,如果一个部门少于3个人,则将返回少于3个记录。
通过学习了java和oracle做一些简单程序,如银行存取款系统、扫雷、画板等程序。
二 实习心得
通过这一个多月的实习,给我的触动很大。在信息时代,学习是不断地汲取新信息。作为一名即将毕业的大学生更应该把学习作为保持今后工作积极性的重要途径。在今后的学习、工作和生活中,我将继续学习,深入实践,不断提升自我。
通过实习,我初步学习了java se,oracle数据库的有关知识,学习了如何用java连接数据库,对于一些简单的小问题,能够动手排除。实习是个人能力的锻炼。我个人认为,这次实习对于我是非常有意义的,对我个人的影响也比较大。通过这次实习,我得到了一次全面系统的锻炼机会,增长了不少知识,学到了许多知识和技能。“在大学里学的不是知识,而是一种叫做自学能力”参加实习后才真正体会到这句话的含义。在这个信息化的时代,我们必须在实际项目勤于动手慢慢琢磨,不断学习不断积累,遇到不懂的地方,自己先想办法解决,实际不行可以虚心请教他认,而没有自学能力的人迟早会被社会和企业所淘汰。
参考文献
[1] 计算机丛书编委会.frontpage 2000 网页制作实用教程[m].北京:希望电子出版社,2002.[2] 李劲.asp数据库程序设计[j].上海:计算机研究,2001,(4):14-16.[3] liu guangyuan,yu juegang, a fast learning algorithm via a hybrid approach[j].journal of uest of china, vol.27, no.3, jun.2000.[4] /(台州学院计算机基础教学网)[5] java面向对象编程基础教程 作 者:信必优技术学院研发部 出版社: 清华大学出版社 出版时间: 2009-7-1 isbn: 9787302203193 [6] java编程思想(第4版)作者:(美)埃克尔 著,陈昊鹏 译 isbn编号: 9787111213826 出版社: 机械工业出版社 [7] java从入门到精通(第2版)isbn编号: 9787302227465 出版时间: 2010-7-1 出版社: 清华大学出版社 作者: 李钟尉,周小彤,陈丹丹 等编著 副书名: 软件开发视频大讲堂
7.java学习心得 篇七
经过一个学期的学习,Java的课程已经结束了。学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方法是这样定义的了。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。