Java程序设计-1-概述_第1页
Java程序设计-1-概述_第2页
Java程序设计-1-概述_第3页
Java程序设计-1-概述_第4页
Java程序设计-1-概述_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Java程序设计教程》张永强、张默华主编清华大学出版社ISBN:978-7-302-23720-4主讲:李妍琰E-mail:第一章JAVA概述本讲要点课程介绍什么是Java?我们的学习目标学习方法指导学习资料推荐Java语言概述Java语言的技术简介JDK安装和配置Java程序的类型Java工作原理什么是Java?什么是Java?Java是一种解释型的、面向对象的编程语言。一种软件平台平台是程序运行的硬件或软件环境,Java平台与大多数其它平台不同,是基于其它软件或硬件的纯软件平台。JVM:Java虚拟机,是Java平台的根底JavaAPI:Java应用程序接口,JavaAPI是软件组件的集合,它们提供了很多有用的功能,如图形用户界面〔GUI〕。学习目标近期目标在校期间,掌握JavaWeb应用本学期目标本学期,Java语法、J2se平台根底、面向对象编程思想和方法,培养自学能力。学习方法指导奠定Java语法根底学习Java的第一步是用Java语言来编写程序,学习Java语言的第一步,就是熟悉其语法的使用。注意思考和总结在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。即便对一个简单的例子也要有耐心去琢磨、调试、改动。动手写代码在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己。在学到一定阶段后,试用学过的东西做些什么。培养自学能力JavaAPI文档英文地址:中文:网上搜索下载充分利用网络学习资源使用搜索引擎参加论坛参与讨论学习资料推荐参考书〔1〕《Java学习笔记》,良葛格著,清华大学出版社,2006.8。〔2〕《Java编程根底、应用与实例》,[韩]徐明浩著武传海译,人民邮电出版社,2005.10。〔3〕《Java编程思想》第3版,〔美〕埃克尔〔Eckel,B.〕著陈昊鹏等译,机械工业出版社,2005.5。〔4〕《Java就业培训教程》,张孝祥编著,清华大学出版社,2003.9。网络学习资源〔1〕Java中国开发网--:///〔2〕中文JAVA技术网--/〔3〕天新网-软件开发-Java开发〔4〕视频教程《Java无难事视频教程》孙鑫:///〔5〕ChinaJavaWorld技术论坛://〔6〕赛迪网技术社区〔7〕SUN中国技术社区:///1.1 Java的技术简介1.Java的历史1991年,美国SunMicrosystems公司成立一个开发小组,最初的目的是为电视机顶盒,电冰箱等家用消费电子产品开发一套软件,通过这套软件,可以把电子邮件发给这些家用电器,从而对它们进行控制。这个工程被命名为Green,由JamesGosling领导。该小组开始采用的编程语言是C++,但由于C++过于复杂,平安性差,需要更多内存等缺点,所以该小组在C++的根底之上,创立了一种新的语言,起初叫做C++++--,后来命名为Oak〔橡树〕。但是由Oak开发的这套系统在投标中以失败告终,并没有转换成Sun公司的产品,所以没有为Sun公司带来什么收益——Oak面临夭折。1994年,随着Internet的迅速开展,为Oak带来了绝处逢生的时机,原工程组成员使用Oak编写了一个叫做WebRunner的浏览器软件,并产生了一个叫做Applet的技术,这是一个将Oak开发的程序嵌入到网页中进行执行的技术,从而使互联网从静态网页过渡到动态网页——Oak获得重生。1995年1月,Oak被重新赋予一个更响亮的名字——Java,WebRunner浏览器也被重新命名为HotJava。3月,Sun公司将Java和HotJava在互联网上免费发布——Java诞生。Java之父——JamesGosling詹姆斯·戈斯林1955年出生于加拿大,是一位计算机编程天才。在卡内基·梅隆大学攻读计算机博士学位时,他编写了多处理器版本的Unix操作系统。1984年-2010年间,供职于Sun公司。在2010年甲骨文收购Sun不久后离职,并在2011年初参加谷歌。2011年8月离开谷歌,参加开展海洋探测业务的机器人制造公司LiquidRobotics,任首席软件架构师。2Java组成3JAVA平台的扩展三个版本(1999.6)J2SE:Core/DesktopJ2EE:Enterprise/ServerJ2ME:Mobile/WirelessJAVA语言的特点简单、面向对象、与平台无关……简单Java语言是建立在C++语言之上,风格类似于C++,易上手;抛弃了C++中容易引发程序错误的一些特性,如指针、结构、枚举以及内存管理等;Java提供了丰富的类库,可以帮助我们很方便的开发Java程序。面向对象面向对象可以说是Java最重要的特性,所以它支持继承、重载、多态等面向对象的特性。Java语言的设计是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。分布式程序设计语言面向网络的语言,编写网络应用程序与平台无关、可移植性“一次写入,到处运行”健壮、平安、高性能、多线程、动态性等等4Java的应用范围应用:Java是当今最流行的软件开发语言之一,Sun推出了Java2&J2EE使Java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络效劳,嵌入式系统等。据有关单位调查显示,从开发领域的分布情况上看Web开发占了一半以上,为57.9%,JavaME移动或嵌入式应用占15%,C/S应用占11.7%,系统编程占15.4%。近30%的开发者用Java从事C/S应用或系统级应用的开发。具体的企业信息化,特别在企业级应用,如通信、金融电子政务及办公自动化嵌入式设备及消费类电子产品太空领域应用范围5.JAVA平台的新开展JavaSE〔JavaPlatform,StandardEdition〕。JavaSE以前称为J2SE。它允许开发和部署在桌面、效劳器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE包含了支持JavaWeb效劳开发的类,并为JavaPlatform,EnterpriseEdition〔JavaEE〕提供根底。JavaEE〔JavaPlatform,EnterpriseEdition〕。这个版本以前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且平安的效劳器端Java应用程序。JavaEE是在JavaSE的根底上构建的,它提供Web效劳、组件模型、管理和通信API,可以用来实现企业级的面向效劳体系结构〔service-orientedarchitecture,SOA〕和Web2.0应用程序。JavaME〔JavaPlatform,MicroEdition〕。这个版本以前称为J2ME。JavaME为在移动设备和嵌入式设备〔比方、PDA、电视机顶盒和打印机〕上运行的应用程序提供一个健壮且灵活的环境。JavaME包括灵活的用户界面、健壮的平安模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于JavaME标准的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。1.2JDK的安装与配置Java开发工具包(JavaDevelopmentKit)简称JDK,它是用于构建在Java平台上发布的应用程序、Applet和组件的开发环境,也是一切Java应用程序的根底所有的Java应用程序都是构建在这个JDK之上,它包括了一个提供Java程序运行的虚拟机和一些运行支持的类库文件,以及一些工具程序JDK版本历史JDK版本发布日期版本说明JDK1.01995-5正式对外发布,直到1996年1月形成一个完整的版本。包括标准的I/O库、网络API、Applet、文件I/O及基本的窗口库JDK1.11997-2内部类、新的事件处理模型、RMI、JavaBean、JDBC、串行化、国际化、性能改进JDK1.21998-12浮点运算改进,Swing支持、集合、Java2D、可访问性、引用对象及性能改进JDK1.32000-5称为Kestrel。CORBA兼容性、Java音频支持、JNDI及性能改进JDK1.42001-12称为Merlin。断言支持、64位空间、新的I/O库、模式匹配、JavawebStart、IPv6、XML进一步性能改进等JDK1.5(5.0)2003-7称为Tiger。通用性(代码模块)、某些运算符重载等JDK1.6(6.0)2006称为Mustang。没有新的语言特征,是一个以稳定、提高为目的的版本。JDK1.7(7.0)2011新的语言特性、性能的改进1.2Java程序运行环境的安装与配置第一步:下载JDKJava可以从Sun公司网站:///免费下载(寻找适宜的版本)(jdk-6u18(21)-windows-i586se版.exe)JDK(JDK,JavaDevelopmentKit)包括Java编译器(javac,例如:javacHelloWorld.java)Java解释器(java,javaHelloWorld)文档生成器(javadoc,Documentationgenerator)…第二步:安装点击jdk的可执行程序,开始安装JRE的安装第三步:环境配置-设置操作系统环境变量JDK安装目录结构简介binjavac:Java编译器,用来将java程序编译成字节码文件.class。java:Java解释器,执行已经转换成字节码的java应用程序。appletviewer:Java虚拟浏览器,用来解释嵌到网页中的java小应用程序。lib:Java类库Jre\lib:Java核心类库系统环境变量的设置JAVA_HOME目的是指明JDK的安装目录,如:(或者D:\Java\jdk1.6.0_21)等CLASSPATH目的为了让JVM找到指定的Java程序 〔JVMclass〕.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar;简化CLASSPATH配置如果一个目录(例如在d:\jars)下有很多.jar文件,可以按照如下方式配置:d:\jars\*系统环境变量的设置〔cont.〕PATH目的是让操作系统找到指定的工具程序

〔WindowsJDK〕例如java.exe,javac.exe等%JAVA_HOME%\bin%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\ProgramFiles\MicrosoftSQLServer\90\Tools\binn\;%JAVA_HOME%\bin注意编译和执行java程序时,编译系统会自动到当前工作目录、jdk安装路径下的lib目录下寻找需加载的类。因此,可以简化classpath变量的设置。检查Java运行环境设置C:\>javaUsage:java[-options]class[args...](toexecuteaclass)orjava-jar[-options]jarfile[args...](toexecuteajarfile)C:\>javacUsage:javac<options><sourcefiles>…

…C:\>java–versionjavaversion"1.4.2_03"Java(TM)2RuntimeEnvironment,StandardEdition(build1.4.2_03-b02)JavaHotSpot(TM)ClientVM(build1.4.2_03-b02,mixedmode)1.3java程序的类型应用程序-JavaApplication独立的Java程序程序入口方法:publicstaticvoidmain(String[]args){…}小应用程序-JavaApplet在Web浏览器中运行(内嵌Java虚拟机)特定标记<APPLETCODE="HelloWorld.class"WIDTH=150HEIGHT=25></APPLET>特定的程序Servlet、EJB等JavaApplication程序根本结构import语句class{publicstaticvoidmain(String[]args){}}主类名称方法体1.3第一个Java应用程序〔01〕/**〔02〕*程序1-1:一个向控制台输出字符串的应用程序〔03〕*/〔04〕publicclassHelloWorldApp{〔05〕/*main方法是构成Java应用程序执行不可缺少的局部〔06〕@paramargs一个String类型的数组〔07〕*/〔08〕publicstaticvoidmain(String[]args){〔09〕 ("HelloWorld!");//向控制台输出〔10〕}〔11〕}注释定义类Main函数方法体注意:保存为HelloWorldApp.java说明Java程序严格区分大小写import导入所需包中的类,在类中包含我们使用的方法〔函数〕。类定义关键字class前面可以有修饰符〔如public〕,如果前面的修饰符是public,该类的类名必须要与这个类所在的源文件名称相同在一个源文件中,可以同时定义多个类,但最多只能有一个public类型的类在记事本编辑Java程序单击开始依次选择程序->附件->记事本//这是名称为“HelloWorld.java”的简单程序importjava.io.*;classHelloWorld{ publicstaticvoidmain(Stringargs[]){ (“欢送访问Java世界!“);}}编译和运行单击开始依次选择程序->附件->命令提示符进入程序所保存的目录输入命令编译HelloWorld输入命令执行HelloWorld输出结果JavaAPI文档选择包选择包中的接口或类可查看相应帮助和其他语言开发过程的比较Java程序开发步骤〔编码,编译,解释,执行〕C程序开发步骤〔编码,编译,执行〕类的定义关键字class-表示要定义一个类(模板),一个类在结构上包含数据变量和方法,表示功能的语句总是包含在方法中。1.3.2JAVA应用程序编程原那么publicclass

Dog{Stringname;publicvoidbark(){ System.out.println(“brak!");}}定义类文件public修饰的类名称必须与包含它的Java源程序文件名一致publicclassDog{ ...}那么文件名一定要是:Dog.java并且大小写敏感(一致)

1.3.2JAVA应用程序编程原那么总之,类文件的定义一个Java应用程序至少包含一个类。一个Java源文件一般只包含一个public类定义。一个类可以是一个空类,不包含任何属性定义和方法声明。声明一个类时,其类名的第一个字母应该大写。类名通常是有意义的。主方法(mainMethod)每个Java应用程序必须有且只能有的一个方法,它是程序执行的入口,运行时被虚拟机自动执行该方法的声明格式是固定的,不能变更方法被程序调用而执行,并不会自动执行1.3.2JAVA应用程序编程原那么publicclassDog{publicvoidbark(){System.out.println(“brak!");}publicstaticvoidmain(String[]args){ Dogd=newDog(); d.bark(); }}类和变量的引用一个类中引用其他类,要注意在文件头,使用import加载java.lang包中的类不需要明确import引用一个类或对象的变量和方法,要通过“.”实现引用JAVA应用程序编程原那么import;publicclassHelloWorld{ publicstaticvoidmain(String[]args){Datenow=newDate();

System.out.println(now); }}类和包介绍类是描述提供某种功能的模块的一般术语。Java开发集〔JDK〕给出了一套标准的类〔称作类库〕,这些类可执行大局部所需的根本行为不仅为编程任务〔例如,类可提供根本的数学函数、数组和字符串〕,而且为图形和网络程序开发提供了丰富的支持。类库被组织成许多包,每个包都包含几个类。如下所列为一些重要的包:java.lang包含一些形成语言核心的类,如String、Math、Integer和Thread。java.awt包含了构成抽象窗口工具包〔AWT〕的类,这个包被用来构建和管理应用程序的图形用户界面。java.applet包含了可执行applet特殊行为的类。包含执行与网络相关的操作的类和处理接口及统一资源 定位器(URLs)的类。java.io包含处理I/O文件的类。java.util包含为任务设置的实用程序类,如随机数发生、定义系统特性和使用与日期日历相关的函数。书写标准每个程序应以说明程序目的,作者,日期和时间的注释开始;使用空格和空行可以提高程序可读性;花括号对“{}”-类,方法,语句块语句分号“;”结尾缩进:当程序中输入一对花括号,然后把光标重新定位到两个括号之间,先缩进一级,再开始输入程序体,该习惯有利于防止漏掉括号的错误JAVA应用程序编程原那么importjava.util.*;publicclassArrayDemo{ publicstaticvoidmain(String[]args){ int[]a={10,7,9,2,4,5,1,3,6,8}; Arrays.sort(a); Set<String>week=newHashSet<String>(); Iterator<String>it=week.iterator(); week.add("hello"); for(Stringstr:week){ System.out.println(str); } }}对齐关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各局部对齐。连续赋值时当对齐操作符。当方法参数过多时当在每个参数后〔逗号后〕换行并对齐。当控制或循环中的条件比较长时当换行〔操作符前〕、对齐并注释各条件。变量定义最好通过添加空格形成对齐,同一类型的变量应放在一起。//变量对齐-----------------------------------------------intcount=100;StringstrUserName=null;Integer[]porductCode=newInteger(2);//产品编码数组//参数对齐----------------------------------------------publicConnectiongetConnection(Stringurl,StringuserName,Stringpassword)throwsSQLException,IOException{}//换行对齐----------------------------------------------publicfinalstaticStringSQL_SELECT_PRODUCT=“SELECT*“+“FROMTProductWHEREProd_ID=”+prodID;//条件对齐----------------------------------------------if(Condition1//当条件一

&&Condition2//并且条件二

||Condition3){//或者条件三}命名标准类:类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。方法:方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。 变量:除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量防止单个字符的变量名,除非是一次性的临时变量。 常量:类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。(尽量防止ANSI常量,容易引起错误)注释注释应该增加代码的清晰度。代码注释的目的是要使代码更易于被其他开发人员等理解。防止使用装饰性内容。保持注释的简洁。注释信息不仅要包括代码的功能,还应给出原因。不要为注释而注释。除变量定义等较短语句的注释可用行尾注释外,其他注释当防止使用行尾注释。注解方式(Comments)/**注释内容*/-文档注解/*注释内容*/-程序内的任意位置//注释内容-对本行注解文档注释(被称为"doccomments")是Java独有的,并由/**...*/界定。文档注释可以通过javadoc工具转换成HTML文件。文档注释描述Java的类、接口、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前:

/***Classdescriptiongoeshere.**@authorFirstnameLastname*/publicclassBlahextendsSomeClass{… /** *...methoddoSomethingElsedocumentationcomment... *@paramsomeParamdescription */ publicvoiddoSomethingElse(ObjectsomeParam){ //...implementationgoeshere... }}块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比方方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。/*-*Hereisablockcommentwithsomeveryspecial*formattingthatIwantindent(1)toignore.**one*two*three*/行末注释(End-Of-LineComments)注释界定符"//",可以注释掉整行或者一行中的一局部。它一般不用于连续多行的注释文本;if(foo>1){

//Doadouble-flip....}else{returnfalse;//Explainwhyhere.}1.3.4排除常犯的错误声明一个类的关键字class,写成了Class,要注意大小写。声明main方法时,方法修饰符没有严格按照publicstaticvoid的顺序,并且其参数是一个字符串数组String[]

大小写问题,例如把main方法的参数args的类型String[],改成了string[],把System写成了system。'JAVAC'isnotrecognizedasaninternalorexternalcommand,operableprogramorbatchfile.

解释:编译错误。包含javac.exe编译器的路径变量设置不正确,操作系统无法发现该执行文件。类名和文件名不能保持一致。如:HelloWorldAp.java:5:classHelloWorldAppispublic,shouldbedeclaredinafilenamedHelloWorldApp.javapublicclassHelloWorldApp{解释: 编译错误。当一个类被“public”修饰时,包含这个类的文件名应该和该类名完全一致。不能发现需要执行的类。如:

Exceptioninthread"main":HelloWorldApp解释:运行错误。有时即使该类的字节码文件就在当前目录下,也会报这种错误。这种错误的主要原因是由于没有为运行时环境提供正确的类加载说明,详细说明请参阅附录。7.HelloWorldApp.java:10:cannotresolvesymbol解释:在HelloWorldApp.java中发现一个不认识的符号。symbol:methodprintl()解释:这个符号是一个名为printl的方法,该方法有一个字符串类型的参数。location:class解释:该方法是Printstream类中的方法。1.4Java的工作原理Java的结构JavaProgramJavaVirtualMachineJavaAPISYourComputerSystemJava的编译与执行1.4.2Java应用程序执行过程1.加载加载就是把二进制形式的字节码读入虚拟机中。加载过程是由类加载器完成的,该加载器是ClassLoader的子类。2.链接链接是取得加载的类或接口,并将其与JVM运行时环境结合起来,以准备执行的过程,这个过程包括检验,准备和解析三个步骤。3.初始化如果类存在对非final静态变量的赋值,或者static代码段,在编译时会隐式生成一个cinit()方法,即初始化执行的方法体。1.4.3Java虚拟机不同的操作系统有不同的虚拟机。它类似一个小巧而高效的CPU。Bytecode代码是与平台无关的是虚拟机的机器指令。Java字节代码运行的两种方式:Interpreter(解释方式)Just-in-time(即时编译):有代码生成器将字节代码转换本钱机的机器代码,然后可以以较高速度执行.虚拟机的任务提供垃圾回收功能提供运行时环境提供中立的体系结构JVM运行时的数据区结构方法区方法区是由所有JVM线程共享的一个公共存储区。方法区存储类的根本信息、常量池、静态变量、字段信息、方法信息、一个到类ClassLoader的引用,一个到Class类的引用。堆堆是一个自由内存区域,常用于内存的动态分配或临时分配。堆是一种运行时数据区,为类和数组对象提供内存。JVM在启动时创立堆,然后当Java中创立类或数组对象时,就从堆中分配所需内存。当对象或数组不再存在后,由一个称为垃圾收集的自动存储管理系统来回收堆内存。栈每一个线程都有自己私有的一个JAVA栈,任何线程不能调用其它线程的栈,Java的栈帧用于存储方法调用的状态。当线程调用一个方法的时候,JVM会在该线程的JAVA栈上压入一个新帧。自然该帧成为当前帧,在执行该方法期间,线程用该帧来储存参数,局部变量和中间运算结果等。JAVA方法执行有两种情况,一种是正常执行完成return,另一种是异常抛出中止。虚拟机都会将当前的栈帧出栈。栈与堆Java将它的内存空间分为两局部:一种叫栈内存,一种叫堆内存。局部变量与方法都是在栈内存中定义和分配的。堆内存是通过n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论