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

下载本文档

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

文档简介

Java程序设计第一章Java概述学习目标了解Java及其发展概况了解Java编程语言的主要特性了解Java的运行环境掌握Java程序的基本结构熟悉Java程序的基本编程规范了解Java虚拟机的原理掌握Java应用程序的加载过程1.1 Java的历史与发展1.Java的历史Java是一种解释型的、面向对象的编程语言。历史:1991年,SUNMicroSystem公司的JameGosling、BillJoe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件。

Oak—>Java:互联网给Java带来新的生机

1995年Sun向公众推出Java并引起业界的轰动发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。(1995年以来)应用:Java是当今最流行的软件开发语言之一,Sun推出了Java2&J2EE使Java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等。Java的特点在Java语言白皮书中,Java被描述为“是一种简单、面向对象、分布式、解释、健壮、安全、结构中立、可移植、高效能、多线程、动态的语言”。2Java组成3JAVA平台的扩展三个版本(1999.6)J2SE:Core/DesktopJ2EE:Enterprise/ServerJ2ME:Mobile/Wireless4Java的应用范围据有关单位调查显示,从开发领域的分布情况上看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.52003-7称为Tiger。通用性(代码模块)、某些运算符重载等JDK1.62006称为Mustang。没有新的语言特征,是一个以稳定、提高为目的的版本。JDK1.72011新的语言特性、性能的改进1.2Java程序运行环境的安装与配置第一步:下载JDKJava可以从Sun公司网站/免费下载(寻找合适的版本)JDK(JDK,JavaDevelopmentKit)包括Java编译器(javac,JavaComplier)Java解释器(java,Javainterpreter)文档生成器(javadoc

,Documentationgenerator)…第二步:安装点击jdk的可执行程序,开始安装JRE的安装第三步:环境配置-设置操作系统环境变量系统环境变量的设置JAVA_HOMEJDK的安装目录,如:C:\ProgramFiles\Java\jdk1.6.0_11CLASSPATH类的搜索路径,如:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar;简化CLASSPATH配置如果一个目录(例如在d:\jars)下有很多.jar文件,可以按照如下方式配置:d:\jars\*系统环境变量的设置(cont.)PATH可执行文件搜索路径设置,例如java.exe,javac.exe等%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等1.3第一个Java应用程序/***程序1-1:一个向控制台输出字符串的应用程序*/publicclassHelloWorldApp{/*main方法是构成Java应用程序执行不可缺少的部分

@paramargs一个String类型的数组

*/publicstaticvoidmain(String[]args){ System.out.println("HelloWorld!");//向控制台输出

}}第一步:打开任一个文本编辑器,将前述内容添加进去,创建一个源程序文件。考虑好类名,选一个有意义的英文名字,如HelloWorldApp写好类的声明添加main方法保存文件,文件名和类名要完全保持一致(包括大小写),文件后缀是.java。什么是源程序源程序(也称源代码),是指一系列人类可读的计算机语言指令。计算机程序包括源程序和目标程序。同一程序的源文本和目标文本应当视为同一作品。源程序是指用高级语言或汇编语言编写的程序。目标程序,是指可在计算机运行的程序。一般源程序都需要经过某种翻译过程,形成计算机可理解的指令代码。翻译的两种方式,即编译方式和解释方式。编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果(如Java、C、VC++等)。解释方式是指源程序进入计算机后,解释程序边扫描边解释,逐句输入逐句翻译,计算机一句句执行,并不产生目标程序(如JavaScript)。第二步:编译源程序,产生字节码文件进入命令提示符窗口利用cd命令切换当前路径到源程序所在目录执行命令javacHelloWorldApp.java检查目录下是否生成HelloWorldApp.class文件,如果有,则表示结果正确第三步:执行该程序保持命令提示符窗口执行命令javaHelloWorldApp查看结果和其他语言开发过程的比较Java程序开发步骤(编码,编译,解释,执行

)C程序开发步骤(编码,编译,执行

)类的定义关键字class-表示要定义一个类(模板),一个类在结构上包含数据变量和方法,表示功能的语句总是包含在方法中。1.3.2JAVA应用程序编程原则publicclass

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

1.3.2JAVA应用程序编程原则总之,类文件的定义一个Java应用程序至少包含一个类。一个Java源文件一般只包含一个类定义。一个类可以是一个空类,不包含任何属性定义和方法声明。声明一个类时,其类名的第一个字母应该大写。类名通常是有意义的。主方法(mainMethod)每个Java应用程序必须有且只能有的一个方法,它是程序执行的入口,运行时被虚拟机自动执行该方法的声明格式是固定的,不能变更方法被程序调用而执行,并不会自动执行1.3.2JAVA应用程序编程原则publicclassDog{publicvoidbark(){System.out.println(“brak!");}publicstaticvoidmain(String[]args){ Dogd=newDog(); d.bark(); }}类和变量的引用一个类中引用其他类,要注意在文件头,使用import加载java.lang包中的类不需要明确import引用一个类或对象的变量和方法,要通过“.”实现引用JAVA应用程序编程原则importjava.util.Date;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.**@version1.1.0*@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"java.lang.NoClassDefFoundError:HelloWorldApp解释:运行错误。有时即使该类的字节码文件就在当前目录下,也会报这种错误。这种错误的主要原因是由于没有为运行时环境提供正确的类加载说明,详细说明请参阅附录。HelloWorldApp.java:10:cannotresolvesymbol symbol:methodprintl(java.lang.String) location:classjava.io.PrintStream1.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,另一种是异常抛出中止。虚拟机都会将当前的栈帧出栈。栈与堆

温馨提示

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

评论

0/150

提交评论