java知识学习笔记(精选7篇)
1.java知识学习笔记 篇一
1.JSP内置对象分类
与Servlet有关的隐含对象
page、config
与Input/Output有关的隐含对象
out、request、response
JSP执行时,提供有关Context的隐含对象
session、application、pageContext 与Error有关的隐含对象
exception
2.get与post区别
get方式:将表单内容经过编码之后,通过URL发送,使用get方式发送时有255个字符的限制(可以在地址栏里看到方式和地点)
post方式:将表单的内容通过http发送,post没有字符长度的限制(在地址栏里看不到表单提交的信息
3.forward与sendredirect区别 服务器端跳转
使用
使用服务器端跳转,可以通过
response.sendRedirect(“uri”);地址栏改变的跳转
所有代码执行完毕之后再跳转
使用response时,不能保存request属性
使用客户端跳转,可以通过重写URL的方式来传递参数 4.JSP内置对象session
session对象用来存储有关用户会话的所有信息直到它的生命周期超时或被人为释放掉为止。
设置session session.setAttribute(“name”, “admin”);根据名称去获取session中存放对象的值
String name =(String)session.getAttribute(“name”);根据名称去删除session中存放对象的值 session.removeAttribute(“name”);用户注销功能的实现 session.invalidate();5.JDBC API JDBC API可做三件事:与数据库建立连接、执行SQL语句、处理结果 DriverManager :依据数据库的不同,管理JDBC驱动 Connection :负责连接数据库并担任传送数据的任务
Statement(PreparedStatement):由 Connection 产生、负责执行SQL语句 ResultSet:负责保存Statement执行后所产生的查询结果
JDBC应用开始->装入JDBC驱动程序
->创建与数据库的连接->创建语句对象——Statement或PreparedStatement->利用语句对象执行SQL语句,得到结果
->处理结果 JDBC应用结束 6.MVC设计模式
模型(Model)JavaBean 代表应用程序状态和业务逻辑
视图(View)JSP 提供可交互的客户界面,向客户显示模型数据
控制器(Controller)Servlet 根据客户的请求来操纵模型,并把结果经由视图展现给客户
Model I设计模式
JSP+JavaBean(View + Model)
Model II设计模式
JSP+JavaBean+servlet(View + Model+controller)
Model I和Model II的对比
Model I缺少控制器(Controller),不易维护和扩展 Model I开发速度快,适用于开发中、小型项目
Model II 代码的重用性 有利于开发的分工
各司其职、互不干涉 7.EL表达式
由于jsp标准动作的局限,一般是操作JavaBean的属性
JavaBean的属性只能为基本数据类型不能进行逻辑操作,而el却可以精确的访问存储对象,Bean属性的简略记法,空值取代错误消息 优点
代替复杂代码,省去条件判断 访问Bean的属性 Bean属性的简略记法
以输出MVC中的内容,代码简单 8.EL隐式对象
pageScope:范围和JSP的page相同,只限于当前页面 requestScope:范围和JSP的page相同,范围限于一次请求 sessionScope:范围和JSP的session相同,范围为一次会话
applicationScope:从服务器一开始执行服务,到服务器关闭为止 9.jsp中动态include和静态的include 区别
动态INCLUDE总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态include伪码实现,不会检查所含文件的变化,适用于包含静态页面 10.Servlet和JSP的关系
Servlet是JSP的早期版本,在JSP中,更加注重页面的表现,而在Servlet中则更注重业务逻辑的实现。
同时,JSP只能处理浏览器的请求,而Servlet则可以处理一个客户端的应用程序请求。因此,Servlet加强了Web服务器的功能。10.Servlet的生命周期
Servlet是服务器端运行的。Servlet是javax.servlet包中HttpServlet类的子类,由服务器完成该子类的创建和初始化。
Servlet的生命周期主要由3个过程组成。
1、init()方法:服务器初始化Servlet。
2、service()方法:初始化完毕,Servlet对象调用该方法相应客户的请求。
3、destroy()方法:调用该方法消灭Servlet对象。其中,init()方法只在Servlet第一次被请求加载的时候被调用一次,当有客户再请求Servlet服务时,Web服务器将启动一个新的线程,在该线程中,调用service方法相应客户的请求。11.JSP 6种基本动作
jsp:include:在页面被请求的时候引入一个文件。jsp:useBean:寻找或者实例化一个JavaBean。jsp:setProperty:设置JavaBean的属性。jsp:getProperty:输出某个JavaBean的属性。jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
12.Request对象的主要方法:
setAttribute(String name,Object):设置名字为name的request的参数值 getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度
getHeader(String name):获得HTTP协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例
getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值 getProtocol():获取客户端向服务器端传送数据所依据的协议名称 getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端的IP地址 getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性 13.会话跟踪技术
Session 隐藏表单域 URL重写 Cookie使用 14.cookie的使用
cookie是一段字符串,由HTTP支持,在客户端可以永久保存.写入(硬盘).每次请求,响应中都会为cookie留有空间.Cookie cookie=new Cookie(“name”,cookie);//必须指定cookie的键与值,且必须为字符串.response.addcookie(cookie);
cookie.setMaxAge(3600);//以秒为单位.读取客户端发送过来的cookie,返回值类型为: cookie数组
request.getCookies();循环读取键与值.小常识:(1).一个网站最多向一个客户端写20个cookie.(2).一个客户端最多接收300个cookie.
2.java知识学习笔记 篇二
Java自问世以来,以其得天独厚的优势,在IT业界掀起了研究、开发它的浪潮,显示了鹏程万里的美好前景。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。“连Internet,用Java编程”成为程序设计者的时尚。
2 Java及相关组件的学习顺序和方法
2.1 Java的学习顺序
在美国,80%以上的大学都在教授Java课程,在中国,许多高校都开设了Java课程,许多计算机培训机构都将Java作为主要编程语言来讲授。由于各种原因,很多人反映Java难学,在此根据自己学习的情况谈一下自己的看法。
2.1.1 循序渐进
学习Java应该循序渐进,不要妄想一下子就学会。最好开始找一本篇幅较短的入门书从学习那些最简单、最基本的东西开始。
2.1.2 课堂和视频结合
对于Java技术类的学习,课堂学习更应注意自身独立思考的过程,上课的时候,老师讲课的速度很快为了不遗漏要点,通常要仔细听,认真记,并要及时对技术知识点进行思考。课下要能对所学知识进行简单的理解,做到不会就问。如果选择视频学习的方式,相对来说可以减少记忆压力,其优点在于,通过视频学习应学会慢慢培养自己独立思考的能力,要有时间想,同时对特定的知识点可以重点重复看,重复做思考,这种学习方式类似于跟人做技术沟通。但缺点在于缺少老师指点,对于不会的和重要的知识点无法有更深的体会和把握。因此,最好能将课堂和视频双方面结合起来,进行学习。
2.1.3 了解底层机制
在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。此外,在学习的过程中一定要动手做、写代码,最好能参与一些实际的项目。
3 学习Java
3.1 分类
学习Java没有捷径可循,“唯手熟尔”,要想学好Java,首先要知道Java的大致分类。自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为3大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入式系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站ERP系统。J2SE开发桌面应用软件比起VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,又有点深奥,而且一般开发者很难有开发环境。所以现在应用最广泛又最好学的就是J2EE。J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。
3.2 学习J2EE
第一,建议从最基本的面向对象的语法开始,明白面向对象的概念和特征,然后熟悉Java常见的类库,其中包括I/O包,Util包,Lang包,Math包等等,这些都是学习Java最基本的内容,一定要熟悉并掌握。此外Java介入的领域很广泛,不同的领域有不同的API(Application ProgrammingInterface,应用程序设计接口),没有人熟悉所有的API,对一般人而言只是熟悉工作中要用到的API。如果做界面开发,那么需要学习Swing/AWT/SWT等API;如果进行网络游戏开发,需要深入了解网络API/多媒体API/2D3D等;如果做Web开发,就需要熟悉Servlet等API。总之,需要根据工作的需要或兴趣发展方向去选择学习特定的API。
第二,学JSP。JSP就是在HTML中嵌入Java代码,它提供了一种简单快速地建立动态网页的技术。所以学习JSP必须要有HTML的基础。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
第三,该学一学Servlet了。Servlet就是服务器端小程序,它负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。
3.3 Javabean
以往JSP在html中嵌套Java代码的方式较为混乱,而与ASP的主要区别在于SUN提供了Javabean可以把JSP中的Java代码封装起来,便于调用也便于重用。接着就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,使用它可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是Weblogic,Websphere这些J2EE服务器)完成了,所以使用时要做的程序代码量很少,大部分工作都在设计和配置中间件上。
3.4 JDBC
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JD-BC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。
4 编程实践
对Java和J2EE有了一些基本概念之后,就应该练习开发一些程序。
4.1 阅读有实例且带光盘的书籍
最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接Ctrl+C再Ctrl+V复制粘贴下来,然后保存起来以备后用。还有就是要经常上一些好的Java论坛,遇到不会不懂的问题随时向别人提问,这样可以大大减少闭门造车浪费的时间。
4.2 读开放源码的程序
大家知道开放源码大都出自高手,这些源码设计合理,考虑周到,再加上有广大程序员的参与,所以读源码可以很好地提高编程水平。学Java必读的两个开源程序就是Jive和Pet Store.。Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易地在不同数据库中移植。Pet Store(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,很具有权威性。
5 结语
虽然理论学习和程序训练双管齐下,但是距离学会Java还只是万里长征走完了第一步。具体一个项目需要进行组织设计和开发,靠一些散乱的代码是不可能做出来的,要学会Java最关键的是实际的工作经验,而不是书本上那些凭空想出来的程序。
只有参加Java实际项目的开发,熟悉和掌握开发的思路和过程,并且能够熟练运用Java开发项目的时候,才算是初步学会了Java,剩下的就是在实践中继续提高自己。
参考文献
3.java知识学习笔记 篇三
【关键词】JAVA语言;WEB开发
一、JAVA简介
当今社会,编程语言种类繁多。面临着越来越高要求的客户需求,我们急需功能更加强大,语言更灵活的编辑语言。JAVA语言就在这样一个背景下应运而生。JAVA语言功能强大,优点众多。下面简要说下它的几个优点:第一、JAVA语言可适用于多种操作系统平台,支持多线程并行操作,并且多个线程可以一起进行。这样节省了大量的时间,可以让不同程序同时进行,减少了等待时间;第二、JAVA语言使用简单灵活,被人们广泛关注和运用;第三、JAVA语言很多程序,在执行操作的时候,运行效率高速度快(甚至快于C++),出错率低;第四、JAVA语言适用面广。由于这门语言的自身特点,可以使其无论是在复杂还是单一的环境中都可以方便的开发使用。如:开发设计ORACLE等环境。
由于JAVA语言的搭建,是通过框架结构来实现的,这也是为什么JAVA语言简单的一方面因素。不过这也导致了使用JAVA语言过程中,并不能很好的给编程人员带来编程语言能力的提高。在以后的发展道路上,我们还需要更加努力,不断完善JAVA语言,这样才能在种类繁多的语言当中脱颖而出,绽放光彩。
二、JAVA五大特点
1.灵活简单。C语言,C++,JAVA语言都是常见的编程语言。其中C语言的语法比较复杂且难以理解,C++应用是编程技术要求较高,因此常常令编程者感到难以学习和接受。相比之下,JAVA语言比较简单,没有太高的语法和编程技术上的要求,而且JAVA语言在集成功能程序方面也有着其他编程语言不可比拟的优势,因此常常被作为WEB开发的首选,其发展也相对成熟。
2.java语言不像c++那样只可以对函数继承,还包括各种类等属性。JAVA语言可以称得上是一种面向对象的、整体操作过程动态机制的程序设计。
3.安全方面。JAVA语言可以利用自带的机制,阻止其他恶意程序代码的攻击,并利用自带的安全预防机制对网络下载的包、类进行分析得以实现程序的运行。就是因为JAVA语言的安全性,因此常常被用于常见的网络环境中。
4.JAVA语言可并行操作。在JAVA的操作环境下,Thread类和Runnable接口的对象通过独特的编写方式和相关的类库等程序操作来创建一种特别的对象——线程。基于这样的编写方式和操作流程,JAVA语言具有更高的效率,能够多线程一同或者并行工作且互不影响。
5.动态性。我们当初是为了开发这样一门语言:可以实时的进行数据操控,能够通过语言在动态的环境中进行数据操作。JAVA语言应运而生,它不仅可以在不影响操作程序的前提下,通过动态的编辑操作将类和包调入到运行的系统环境当中,还可以实时的对包和类进行调用和下载。
三、JAVA语言开发WEB的环境
从功能上来区分的话,JAVA的开发环境可以分为Jcreator(简单环境)和像Eclipse(强大开发环境)两种。通过对目前国内外的形势来看,客户所需要开发的软件功能较为复杂,所以很多大中型的开发公司都在Eclipse和Jbuilder的环境下通过JAVA来研发软件的。如下,介绍下Eclipse和Jbuilder。
Eclipse:其本身就是一个框架,可扩展的研究开发平台,通过插件的形式来搭建集成环境。有以下几个有点供大家参考学习:第一、Eclipse不仅具备开发程序还具备调试相关程序的功能,所以在很多开发环境中我们更倾向于选择使用它;第二、方法简单高效。在Eclipse环境中,具备多种可以直接被调用的快捷键方法。这样减少了大量的人力和时间。第三、时效性强。可以在程序调试的时候,进行断电设置。这样我们可以在突发情况下,快速准确的找到并跟踪问题所在,可以任意中断程序,能达到早发现早处理的良好效果。在使用Eclipse这一集成开发环境的过程中,我们发现其存在着一些不足。比如在WEB的研发过程中并非所有的功能都能通过Eclipse实现。因此,经过进一步探索研究,增强了Eclipse的多个功能,开发出了MyEclipse工具,大大减少了WEB开发所需的时间。
Jbuilder:由BORIt1ND公司开发成功,增强了WEB开发技术。能够使得不同地域的人共同合作,同时研发同一个项目,解决了由于团队磨合上造成的大量没必要的人力和金钱损失。这一环境的开发重要是为了在JAVA的最新版本下运行,得到功能上更好更多的效果。客户通过builder的相关操作,可以实现一下几个方面:第一、可以得到所需的数据库表的JAVA类;第二、实现各种各样电子商务平台的开发;第三、结合运用JAVA语言开发动态WEB,实现图形模式窗口和线程并行操作。
四、JAVA在WEB开发中的相关技术
ava Database Connectivity:JAVA语言的这一技术操作,主要是实现访问连接数据库。当我们在程序开发过程中,很有可能会伴随着不断的调试程序,修改程序等操作,这就带来了数据库会不断中断的现象。我们如何实现这一功能。我们利用这一技术,通过一个特定的类和借口,运用更为高端的工具进行连接。随时对后台数据库进行访问连接。
Java Annotatio:这一技术将JAVA程序中的各项函数整合起来,建立一种统一的操作规范。通过这一技术我们可以让操作程序中的各类数据量(如类和变量等)进行统一,然后对其进行相关的程序操作。Java Annotatio技术当中还伴随着一个独立的控制体系,就是JavaBeans技术。这一独立技术在WEB当中被广泛应用,起着至关重要的作用。它创造了真实世界的相应内容,不仅安全系数非常高而且移植性也非常强。
Java Media Framework API:这一操作技术,可以使得我们在JAVA语言的编写过程中更好的调用使用一些视频等技术或者在Applet程序中体现出这一效果。这一操作顺应WEB动态网络平台这一现实情况,实现了动态网页的多样化,更加方便快捷的实现了多媒体效果。对于开发人员来说,这更是提供了一个很好的机会,能够使得开发人员更好的完成用户在动态网络平台上想要实现的效果。
Java Remote Method Invocation:这一技术主要是为了达到客户系统和服务器之间的连接。我们是通过应用小程序(分布式)和在JAVA中将对象和类进行调用来实现的。我们程序员在WEB的开发设计过程中,为了实现程序的安全完整性,就是采用这一技术对进行数据操作,达到整合信息资源的效果。
五、结语
对着编程语言的更新换代,客户对要实现的功能需求越来越高,编程语言在实现功能方面,也面临着越来越大的考验。在这一严峻的形势下,JAVA语言依然被人们所广泛应用。这不仅在一定程度上充分说明了JAVA语言功能强大高效实用,而且说明了当今WEB网络平台开发上,JAVA有着不可替代的地位。在JAVA语言的准确安全方面,还有更广阔的发展空间。我们可以通过更好的方法来提高利用率,以便于提高JAVA的准确安全性。当然,客户对于WEB平台的开发不断的提出更高更难以实现的要求。这就意味着我们要不断努力,完善和改进JAVA技术来处理客户的相关需求。相信,经过我们的不断探索分析,我们将把这一技术做的更加完善,做到更好。
参考文献
[1]王咸伟.Java面向对象编程语言及其应用[J].电脑技术,2010(12).
[2]徐柏燕.Java编程语言及其应用[J].电脑与信息技术,2010(6).
[3]郝蓄.基于Java的网络中文平台的研究与实现[D].西安电子科技大学,2010.
[4]郭慧萍.基于模板的动态Java字节码生成器的设计与研究[D].北京工业大学,2009.
作者简介:高飞(1982—),男,现供职于渤海船舶职业学院教育技术中心。
4.好程序员学习笔记-Java网络 篇四
2、JAVA网络编程网络与分布式集群系统的区别:每个节点都是一台计算机,而不是各种计算机内部的功能设备。Ip:具有全球唯一性,相对于internet,IP为逻辑地址。端口(port):一台PC中可以有65536个端口,进程通过端口交换数据。连线的时候需要输入IP也需要输入端口信息。计算机通信实际上的主机之间的进程通信,进程的通信就需要在端口进行联系。192.168.0.23:21协议:为了进行网络中的数据交换(通信)而建立的规则、标准或约定。不同层的协议是不同的。网络层:寻址、路由(指如何到达地址的过程)传输层:端口连接TCP模型:应用层/传输层/网络层/网络接口端口是一种抽象的软件结构,与协议相关:TCP23端口和UDT23端口为两个不同的概念。端口应该用1024以上的端口,以下的端口都已经设定功能。套接字(socket)的引入:
Ip+Port=Socket(这是个对象的概念。)Socket为传输层概念,而JSP是对应用层编程。例: java.net.*;(Server端定义顺序)ServerSocket(intport)Socket.accept();//阻塞方法,当客户端发出请求是就恢复 如果客户端收到请求: 则Socket SI=ss.accept();注意客户端和服务器的Socket为两个不同的socket。Socket的两个方法:getInputStream():客户端用getOutputStream()服务器端用使用完毕后切记Socket.close(),两个Socket都关,而且不用关内部的流。在client
端,Socket s=new Socket(“127.0.0.1”,8000);127.0.0.1为一个默认本机的地址。
练习:
1、客户端向服务器发出一个字符串,服务器转换成大写传回客户端。大写的函数:String.toUpperCase()
2、服务器告诉客户端:“自开机以来你是第n 个用户”。12.12UDP编程:DatagramSocket(邮递员):对应数据报的Socket概念,不需要创建两个socket,不可使用输入输出流。DatagramPacket(信件):数据包,是UDP下进行传输数据的单位,数据存放在字节数组中。UDP也需要现有Server端,然后再有Client端。两端都是DatagramPacket(相当于电话的概念),需要NEW两个DatagramPacket。InetAddress:网址这种信息传输方式相当于传真,信息打包,在接受端准备纸。模式:发送端:Server:DatagramPacketinDataPacket=new DatagramPacket((msg,msg.length);InetAdress.getByName(ip),port);接收端:clientAddress=inDataPack.getAddress();//取得地址 clientPort=inDataPack.getPort();//
datagramSocket.send;//Server
datagramSocket.accept;//Client URL:
在应用层的编程 注意比较:
http://Localhost:8080/directory//查找网络服务器的目录 file://directory//查找本地的文件系统 java的开发主要以http为基础。反射:主要用于工具和框架的开发。反射是对取得端口号
于类的再抽象;通过字符串来抽象类。JAVA类的运行:classLoader:加载到虚拟机(vm)Vm中只能存储对象(动态运行时的概念),.class文件加载到VM上就成为一个对象,同时初始静态成员及静态代码(只执行一次)。
5.Java笔记总结 篇五
2、Java语言的特点:简单、安全、跨平台、面向对象、支持多线程。
3、Java的三个技术平台分别是 JavaSE、JavaEE、JavaME。
4、Java程序的运行环境简称为 JDK。
5、编译Java程序需要使用 javac 命令。
6、javac.exe和java.exe这两个可执行程序存放在JDK安装目录的bin目录下。
7、PATH环境变量用来存储Java的编译和运行工具所在的路径;CLASSPATH环境变量 则用来保存Java虚拟机要运行的“.calss”文件。
8、.class文件在 java.exe 文件启动的JVM中运行。
9、JRE与JDK之间的区别:
a)JRE(Java Runtime Environment)提供java程序运行所需要的基本条件(如JVM)和许多基础类。
b)JDK(Java Development Kit)是Java程序开发工具包——包含编译工具、解释工具、打包工具等开发工具。
10、JVM——Java虚拟机,相当于一个虚拟的操作系统,负责运行javac.exe生成的 字节码(二进制)文件。java.exe执行”.class”,就是java.exe启动JVM运行”.class”文件。
11、标识符命名规则:
a)包名所有字母一律小写。
b)类名和接口名每个单词首字母大写。
c)常量名所有字母都大写,单词之间用下划线分开。
d)变量名和方法名的第一个单词小写,之后的每个单词首字母大写。
12、强制类型转换:
a)格式:目标类型 变量名 =(目标类型)值
b)int类型转换成byte类型 很容易造成 精度丢失。因为int类型变量是32位,byte类型只有8位,所以在转换过程中会丢失int类型的高3位字节。
c)在用”双字符“型运算符(+=、-=之类的)运算时,强制类型会自动完成,不用程序显示的声明。
13、三元运算符:判断条件?表达式1:表达式2;——若条件成立,执行表达式1,否则执行表达式2。
14、跳转语句:
a)break:
i.用于switch语句,终止某case并跳出switch结构。ii.用于循环语句,跳出循环语句,执行后面的程序。
b)continue——只用于循环语句中:终止本次循环,执行下一次循环。
15、方法重载:
a)2个条件:方法名相同、参数个数或参数类型不同。b)与返回值类型无关。
16、数组:
a)定义数组:
i.类型[ ] 数组名 = new 类型[ 数组长度 ] //这种定义方式只指定了长度,元素的初值由系统自动赋0。(动态初始化)
ii.类型[ ] 数组名 = new 类型[ ]{元素,元素,......} iii.类型[ ] 数组名 = {元素,元素,......} //这2种称为 静态初始化。
17、冒泡排序:
a)若有n个元素,则进行n-1轮排序(n-1次外循环)
b)第1轮排序,元素之间进行n-1次比较;第2轮排序进行n-2次排序......最后1轮只进行1次比较。c)外循环条件:i < arr.length d)内循环条件:j < arr.length1
18、二维数组:
a)定义方式1:类型[ ][ ] 变量名 = new 类型[ 几行 ][ 几列 ];b)可理解为数组的 数组——例arr[0][1]-->数组名arr[0],第二个元素[1];c)二维数组的 长度 由”[ 几行 ]“确定!
d)定义方式2:类型[ ][ ] 变量名 = new 类型[ 几行 ][ ];//行数确定,列数不确定——每行可以随便 赋值。
e)定义方式3:类型[ ][ ] 变量名 = { { ,...,...,...},{ },{ },......} //这种行数、列数都不确定。大括号 内的每个 大括号 代表 一行 的元素,每行有多少个元素 取决于 内大括号 中元素的个数。
19、面向对象的特点:封装性、继承性、多态性。
20、在创建变量后,JVM运行程序时,会自动初始化变量。引用型变量 为 null。
21、垃圾对象——没有变量引用的对象。
22、类的封装:将类中的属性 私有化。外界访问私有属性时 只能通过该属性的 getxxx()方法。
a)//择Generate getter and setter--> 自动生成
set和get方法。
23、构造方法:实例化对象。
a)可以用 带参数的构造方法 在实例化对象时就 给私有属性 赋值。b)好的程序员 应该为每个类 写一个 无参构造方法。c)定义构造方法的条件:
i.方法名与类名相同。ii.没有返回值的 声明。
iii.方法中 不能有return 返回值。
24、this关键字
a)this指代 该类实例化的 对象。所以可以用 this.xx的方式调用 成员。b)在成员方法中使用this关键字,避免参数名与属性名相同。c)用this关键字调用 构造方法
i.只能在构造方法中 用this调用其他构造方法; ii.此时this语句必须位于第1行,并且只能出现一次 iii.不能在一个类的两个构造方法中互相调用。
25、static关键字
a)静态变量:
i.用static修饰的变量 ii.静态变量被所有实例共享
iii.可以使用“类名.变量名”的形式来访问。iv.只能修饰 成员变量 b)静态方法
i.希望在不创建对象的情况下也能条用 类中的 某个方法,那就用static关键字休息这个方法 ii.静态方法 只能访问 静态成员!
//因为非静态成员 必须先创建对象才能访问,而静态方法在被调用的时候可以 不创建对象——那么就没有非静态成员可供访用。
c)静态代码块
i.当类被加载时,静态代码会执行一次。而类只会被加载一次,所以静态代码块只会被执行一次。
ii.通常会用静态代码块对类的成员变量进行初始化。d)单例模式
i.private static 类名 INSTANCE = new 类名();量——自己创建一个对象。private 类名(){};
//私有的 构造方法,只能内部访问
}
//私有成员变public static 类名 getInstance(){ return INSTANCE;//定义静态方法,返回自己的实例对象。ii.第二种单例模式创建方法。
1.Private 类名(){} 调用。
2.public static fianl 类名 INSTANCE = new 类名();的不能被修改的 静态成员对象。
26、内部类——定义在类里面的 类
a)成员内部类
i.相当于成员方法,可以访问外部类的所有成员;
ii.因为成员内部类相当于 成员方法,所以想要创建内部类对象时,必须得用外部类的对象 去创建内部类对象:
1.外部类名.内部类名 变量名 = new 外部类名().new 内部类名();b)静态内部类
i.用static修饰的成员内部类,也相当于静态方法。只能访问外部类的静态成员。
ii.因为静态,所以在创建内部类对象时,可以不用先创建外部类对象:
1.外部类名.内部类名 变量名 = new 外部类名.内部类名();iii.静态内部类中 可以定义静态成员,非静态内部类则不可。c)方法内部类
i.在方法中定义的类,只能在当前方法中被使用。
27、当一个对象被当成垃圾从内存中释放时,它的 finalize()方法会被自动调用。
//公有
//私有的 构造方法,只能在类的内部被
28、继承
a)继承关键字:extends。b)格式:Class A extends B{} c)单继承——一个类只能有一个直接父类。
29、重写父类方法
a)条件:方法名、参数、返回值类型 3个都相同。
b)重写之后,子类调用被重写的方法时,就是调用自己写的方法。c)重写应用:
i.应用对象 是父类的 公有方法。重载 应用的对象是 类本身的 方法。ii.重写父类 不适合子类的 方法 iii.实现接口。
30、super关键字
a)调用父类成员变量和成员方法:
i.super.成员变量;ii.super.成员方法(参数1,参数2,...);b)调用父类的构造方法
i.super(参数1,参数2,...);ii.必须位于子类的构造方法的第一行,且只能出现一次。
iii.在实例化子类时,系统会在 子类的构造方法中 调用
父类的构造方法——如果子类的构造方法中 没有调用 父类的构造方法,系统会自动调用父类的无参构造方法。所以 每个类的 无参构造方法 一定不要漏了!子类也可以显示的调用 父类的有参或无参构造法方法。c)解决 重写了父类方法之后,不能调用父类方法的问题。
31、final关键字
a)final修饰的类 不能被继承 b)final修饰的方法 不能被子类重写
c)final修饰的变量 是常量,不能被修改,且必须在定义时 为变量赋值。
32、抽象类
a)关键字 abstract b)抽象方法:abstract void shout(){};——没有方法体。
c)包含抽象方法的类必须声明为 abstract类:abstract class Animal{} d)抽象类可以 不包含任何抽象方法,只需用abstract修饰。e)抽象方法不能直接实例化,只能让 子类实例化。
33、接口
a)定义关键字:interface——interface Animal{} b)接口中的方法 被默认修饰为:public abstract——抽象方法。c)接口中的变量 被默认修饰为 :public static final —— 全局常量
i.所以变量最好用
全大写
表示。
d)因为方法都是抽象的,所以必须定义一个类 来实现(implements)接口——Class A implements B{} e)接口之间可以继承——interface C extends B{} f)一个类可以实现多个接口,接口直接间用逗号隔开。g)一个类可以在继承一个类的同时,实现其它的接口。
h)如果一个类去实现接口的话,那么这个类必须实现接口中所有的方法。
34、多态
a)方法上的多态
i.类内部方法的重载 ii.子类对父类方法的重写 b)对象上的多态性
i.假设父类:A;子类B B b = new B();ii.对象的自动向上转型:A a = b;//子类对象,变成了父类对象。
1.虽然a指向A的对象,但是如果B重写了A的方法,那a调用的还是B中的方法。
iii.对象的强制向下转型
1.若 A a = new A();2.B b =(B)a;
//父类对象变成了 子类对象。3.这时对象b调用的是 子类的重写的方法。
4.注意:对象发生强制向下转型之前,必须保证已经发生了向上转型,否则会出异常。
35、异常
a)异常类分为:编译时异常、运行时异常 b)异常处理机制: i.try...catch...finally 1.try代码包含可能发生异常的Java语句,catch块中包含针对一场进行处理的代码。
2.当发生异常时,系统将异常信息封装成一个异常对象传递给catch代码块。所以catch需要定义1个对应的异常类 变量。3.finally代码块包含,无论发生什么异常都要执行的代码。常用于关闭系统资源。
ii.throws关键字声明抛出异常,调用者对其处理。这种方法能通过编译,但是发生异常后就会终止运行。
c)自定义异常
i.首先定义 一个继承Exception异常的 异常类;异常类中 编写一个无参构造方法(调用父类无参构造方法),再编写一个 带String参数的构造方法(也调用父类的带Stirng参数的构造方法)。ii.再定义一个 测试类,定义要调用的方法,并在此方法后面用 throws关键字 声明抛出自定义异常;再在 方法体 内判断什么时候 用throw new 自定义异常(“要打印的信息”)。//声明自定义异常对象。
iii.最后在 测试类的main 方法中,iv.try{...}
catch(...){ System.out.printlan(e.getMessage)}
finally{...}
36、线程的创建: a)继承Thread类,并重写run()方法。然后new Thread().start;开启线程。
b)实现Runnable接口,重写run()方法。然后new Thread(new myRunnable).start开启线程。
37、两种实现多线程的比较——实现Runnable接口的方法更好
6.java知识学习笔记 篇六
第一章:
2分钟看完,老生常谈,即使没怎么用过java也知道这些。
第二章:
1.instanceof应该是c++中没有的,c++使用RTTI解决这个问题的,很难用。
2.super这种引用父类的方法也是比较简单的,C++中是用父类名::父类方法()解决的,有点难看。
3.自动类型转换和C++一样,精度变高的随便转,精度变低的会丢失。
4.强制类型转换只有(type)这一种,不像c++有static_cast、dynamic_cast、reinterpret_cast、和const_cast。
5.运算符什么的和c++几乎一模一样。
半小时看完。
第三章:
1.break可以跳出语句块,c++中没有语句块。语句块的定义就是在一段语句前加上花括号和冒号;
其他基本上和c++一样,5分钟看完。
第四章:
1.java数组越界会在运行时抛异常,c++不会,声明数组的方法也有些不一致。
java 声明数组的所有办法
int[] a = new int[4];
int a[] = new int[4];
int[] a = {1, 15, 26};
int a[] = {1, 15, 26};
2.java的数组是一个对象,自带length属性,使用简单。c++的数组不自带方法和属性,要知道数组长度只能sizeof(arrayObject)/sizeof(int)。当然如果使用STL中的vector之类的也和java一样简单。
3.java的所谓数组赋值(或者叫数组拷贝)其实就是c++中的两个数组指针的赋值,java没有指针,所以作者费了一大堆口水。好在java有垃圾回收,要不然一个指针的内存就算泄露了。至于真正的数组内容赋值,是使用System.arraycopy(ir, srcPos, ir, destPos, length);而C++一般使用memcpy等函数。若使用STL中的vector,那么就看vector的拷贝构造函数怎么写的,应该是vector的对象赋值过去而不是指针指过去。
4.重温了冒泡排序(时间复杂度O(n2)),和快速排序(最坏情况的时间复杂度为O(n2),最好情况时间复杂度为O(nlog2n))。
5.For-Each语法被引入java了,在很多地方用起来真是简单。Python和c#早就支持了,c++中虽然STL的algorithm包中引入了for_each,但是由于需要使用函数指针还是略显繁琐。
这章挺多,看了一个多小时啊!
第五章:类和对象
1.Java中方法的重载和c++的一样,都是通过参数的不同来区别。但是c++中可以设置默认参数,而java不可以。
2.java中的对象大部分只能new出来,或者clone出来,或者反射出来,而不能直接在栈上定义出来。而c++的对象在栈上和堆上创建的都很多。
3.基本类型的参数传递,java和c++都是传值。对象的参数传递,java是传引用,c++是拷贝,也就是传值。其实c++中大部分时候也是传引用或者传指针,但java没有指针,也没有选择耗时耗空间的拷贝,只能传引用了。
这章对于c++程序员来说太简单,几分钟过一遍就可以了。
第六章:继承
1.方法被覆写后,如果要调用父类的方法,c++必须用父类名::方法名,而java用super.方法名即可。
2.多态和动态绑定,java和c++几乎一样,都很简单。
3.final关键字:java中的final关键字可以将一个类限制为无法继承的,同样的还有C#中的sealed关键字。而c++是没有这个玩意的。
4.java的抽象类和c++几乎一样。
5.java是独根语言,引入了Object类,它的clone方法就好像c++中的拷贝构造函数,它的equals方法是用来比较内容的,而toString方法是将对象作为字符串输出的。
这章对于c++程序员来说同样简单,几分钟过一遍就可以了。
第七章:接口
1.java中有接口。C++没有,唯一类似的是含有纯虚函数的虚类(没有纯虚基类这个说法)。但是COM、CORBA等中间件中都有IDL语言(接口定义语言),使用这些中间件的c++程序员也没有少写接口。
2.接口实现的一些规定:
1)如果实现接口的不是抽象类,则必须实现其接口的所有方法才能被实例化;
2)接口中所有的方法默认为public;
3.接口可以用来实现多态;
4.java的内部类和c++差不多,都没人关心,最多懒得想名字的时候用用那个匿名内部类(例如什么UI的响应函数)。
5.java的对象克隆,吹了一堆就是个c++中的拷贝构造函数。所谓什么“浅克隆、深克隆”问题,就是c++中拷贝构造是遇上类中定义了指针的问题。C++程序员一望即知。
接口是为了维护单继承机制弄出来的,花半小时看看还是值得的。
第八章:面向对象编程
C++程序员不用看。
第九章:异常处理
1.java的异常处理中有finally语句块,而c++中没有,所以程序员要自己想办法来处理异常发生后诸如“资源释放”之类的问题;
第十章:线程
1.java语言自带线程机制,c++目前还是不带线程机制的。虽然boost::thread库也被众多c++程序员广泛使用。但是windows下用得最多的还是windows SDK自带的线程函数;而linux下用得最多的还是pthread。另外还有一些号称同时支持多个平台的多线程库。
2.java多线程有两种方法实现,第一是派生Thread类,第二种是实现Runnable接口。
3.java线程分为4种状态:new、runnable、non runnable和done,这和其他线程库大同小异;
4.run、start、stop、sleep、suspend、resume、yield、wait、notify和notifyall等方法的含义也和其他线程库一致。但suspend、resume和stop等方法是不建议使用的,因为可能会导致死锁。
5.java可使用join方法来等待线程结束,而在某些线程库中join方法经常是不可用的。
6.java的互斥使用synchonized关键字实现,它很类似于boost.thread中的lock(mutex),只不过它是对线程对象隐含的锁加锁。其实这很不利于新手理解。另外还介绍了synchonized的一些乱七八糟的用法,相信对于新手这只有反作用。
这一章对于线程,介绍得比较浅显,实现简单的多线程应该没问题,但是稍微复杂一点的也许就需要其他的开发包了。Java线程连个Mutex类都没有,这是最让我吃惊的,仅仅使用synchonized来实现同步、互斥、信号量该多麻烦啊,也许是我还没弄懂java多线程吧。
第十一章:图形编程
1.IDE的年代,GUI还是画出来吧。Java中也就Layout类需要看看,其他大部分Layout类也是凑数的,根本不会有人用。
第十二章:事件处理
随便看看了解即可,新手可以试着写写代码,老手直接IDE中添加事件即可。
第十三章:Swing用户界面设计
同第十一章,随便看看即可。界面一般有专人搞,普通程序员能看懂就行了。
总结:《java从入门到精通》这本书整体质量尚可,c++熟手大概一到两天可以看完,掌握程度在80%左右。看完后能够有一些基本概念,可以写一些基本程序。看完后离入门还早,更谈不上精通了。
7.做笔记:学习地理的有效方法 篇七
1993年6月,以钟祖荣教授为组长的调查组对北京市部分学生的学习现状进行了抽样调查。其中一项学习方法中的“课堂笔记”里反映出:8.67%的人不记或记得很少,58.86%的人只是抄黑板,只有32.37%的人有时能用自己的语言组织笔记,记得较完整,这种学生在重点学校占42.31%,一般学校占21.38%,差距明显。由此可以说明,好的笔记是教科书知识的浓缩、补充和深化,是思维过程的展现与提炼。学生自觉地把笔记作为学习中随时可以应用的一根手杖,就能有效地提高读书效率,增强学习效果和质量,更好地达到有效学习的目的。
1.做好笔记有助于吸收、巩固知识
学生刚接触的课文,即使预习过,对课文的结构、重要的知识点仍没有像老师那样钻研。教师为了把知识正确地传授给学生,事先都要经过反复阅读才开始备课。备课的过程大致是粗看、细看、精看,遇到疑惑的问题请教参考书、同伴并取得一致意见后,才提炼出有效信息:关键句、重点词,再设计板书提供给学生,达到提纲挈领的作用。当需要补充课本上没有但与课文内容关系密切或有联系的知识时,补充到什么程度都要周密思考。遗忘规律指出,在接受新知识后较短的时间内记忆,其效果非常显著,在及时初记时应注意在理解基础上记忆,同时还应注意记忆的准确性,如果第一次记忆就出现错误,以后要克服是十分困难的。由此我们想到,一些学生虽然记了笔记,但考试或作业中出现笔记中的错别字屡见不鲜,这大概是使用课件上课受时间的限制,记的速度快,记下了错误的字;有的因写字速度慢,完整的句子记不下来,下课也没有整理补上,到了考试只好乱翻、将错就错,失去了记笔记的意义。记笔记应成为复习考试时适合自己使用的有用材料。我们知道,人的大脑通过“书写”和笔记实现了沟通,当注意力集中的时候,就实现了记忆,书写出现错误时就会及时得到更正;如果注意力不集中就容易抄错或忘记。
2.做笔记可以实现教学与纪律双赢
学生在日常学习中,长时间听老师讲课,看课文不写字容易疲劳、倦怠;一旦教室里的学生骚动起来,教师就应暗示这个知识点很重要,希望大家动笔记下来,教室会安静下来。有一次考试后,几个学生因回答问题偏差而扣了分,就是因为在书上的重点句子没有做上任何符号,找不到后用自己的话语回答,答的语言表达欠妥而扣分的。从此之后,学生上课就认真多了,笔记也规范了。为了让学生认真做笔记,又遵守课堂纪律,单一的方法肯定无效。教师在板书设计方面要格外讲究艺术性,如“秦岭—淮河南北”一课的内容,既有人文知识,又有自然知识。教师上了课之后普遍认为学生学起来有难度,于是打破课程编排体例,运用列表格进行对比的教学方法。另外,还有我国行政区的简便记忆法“东北三省黑吉辽,北部边疆内蒙古;两河两山连京津,两湖三江接皖沪;南部琼台闽粤桂,川黔云藏加重庆;西北陕甘宁青新,港澳特别行政区”等。学生认为学习起来省力、方便又感到新鲜、易懂,就会主动在书上空白地方做笔记。巴西教育家保罗·弗莱雷说过:“教育不是单纯机械地将知识传授给被动和顺从的学生。”由此可见,学生的需要是学习的内驱力。
二、怎样的笔记对地理学习有效
由于每个学生的学习方法不一样,因此做笔记的方法也不一样。作为初中的《地理》、《历史》或《历史与社会》课程,大多数地区实行开卷考试,把笔记直接做在课本上是最方便复习和考试的方法。
(1)把课本与笔记合二为一,实现课本与笔记互补。把笔记做在课本上,要有自己辨认的符号系统。它可以把老师讲的要点,结合课本上的内容记录下来,所有的精华都留在了课本上。只要复习或考试时打开课本,就一目了然。不管翻到哪一页、哪一章,都有当时记录的痕迹,复习起来很方便。划书可以用不同颜色的笔来勾画不同的内容,也可以用不同的符号来表达不同的意思。有的用波浪线、有的用直线,有的关键词、关键句还可以用圈、点、三角形等符号表示知识点的重要。同时,利用课本上空白处,记录听课的补充内容,对照课文一一排列,将上课的重点依次记录下来。
(2)有选择性地做笔记,把自己需要的资源记下来。由于学生接受和理解知识能力存在差异,兴趣、意志力等非智力因素也存在差异。人是有高级需要的动物,活动是受需要支配和驱使的,没有需要就没有活动。一个教师的课堂教学能使全班学生都感兴趣是不可能的,讲授的知识使全班学生都需要也是不可能的。所以,课堂里的学生有的在记笔记,有的无动于衷。笔者认为,那些说与读的技能失调,词不达意,阅读时吞吞吐吐,写字经常把字词、符号写错的学生,坚持做笔记,对提高读和写的基本技能很有帮助。
(3)教学与学习可能性相适应。教师的教学要求与学生的学习可能性是教学的基本矛盾。要解决好这个矛盾,教师要掌握好度的要求。在教与学的关系上,教师的作用力与学生的作用力要适应,而且这个度是动态的。一个班级中学生的非智力因素不同,有的喜欢理科,有的喜欢文科;有的喜欢听,有的喜欢记。勉强学生记笔记,往往引起师生冲突,有的因记笔记忘记了听,顾此失彼,只有满足学生的需要才是提高教学与学习质量的保证。
【java知识学习笔记】推荐阅读:
java 学习线路08-13
java学习的一般步骤08-08
物理知识点总结笔记07-03
公共基础知识笔记汇总07-09
综合基础知识复习笔记07-29
方剂学习笔记10-16
小学老师学习笔记06-25
干部政治学习笔记07-14
规范党员学习笔记07-29
教师业务学习笔记09-15