![第一章 初识Java语言【2011年春季修订】[2学时]_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-4/8/ed79cf39-48a9-4467-8c0f-76faad8106be/ed79cf39-48a9-4467-8c0f-76faad8106be1.gif)
![第一章 初识Java语言【2011年春季修订】[2学时]_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-4/8/ed79cf39-48a9-4467-8c0f-76faad8106be/ed79cf39-48a9-4467-8c0f-76faad8106be2.gif)
![第一章 初识Java语言【2011年春季修订】[2学时]_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-4/8/ed79cf39-48a9-4467-8c0f-76faad8106be/ed79cf39-48a9-4467-8c0f-76faad8106be3.gif)
![第一章 初识Java语言【2011年春季修订】[2学时]_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-4/8/ed79cf39-48a9-4467-8c0f-76faad8106be/ed79cf39-48a9-4467-8c0f-76faad8106be4.gif)
![第一章 初识Java语言【2011年春季修订】[2学时]_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-4/8/ed79cf39-48a9-4467-8c0f-76faad8106be/ed79cf39-48a9-4467-8c0f-76faad8106be5.gif)
已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 Java语言概述 李建伟河北工业大学计算机学院lijianwei 2 教材与参考书 教材 Java程序设计实用教程 第3版 清华大学出版社2010参考书 Java程序设计教程 第二版 雍俊海清华大学出版社2007年Java就业培训教程张孝祥清华大学出版社2003年Java语法及网络应用设计徐迎晓编著清华大学出版社2002年疯狂Java讲义 李刚 电子工业出版社 2011 3 学习方法 课内 认真听讲课外 阅读教材并进行实践教材上的的习题其他课程的作业实际的项目我爱编代码 好工作爱我答案不一定要马上知道习题不一定要立即做对 4 本章内容 1 1JAVA语言的发展历史1 2JAVA的工作原理1 3一切都是对象1 4构建JAVA应用程序1 5JAVA源程序的结构1 6建立JAVA开发环境 5 Java语言 Java语言历时12年 已经发展成为人类计算机史上影响最深远的编程语言 从某种程度上来看 它甚至超出了编程语言的范畴 成为一种开发平台 一种开发规范 更甚至于 Java已成为一种信仰 Java语言所崇尚的开源 自由等精神 吸引了全世界无数个优秀的程序员 从人类有史以来 从来没有一门编程语言能够吸引这么多的程序员 也没有一门编程语言能衍生出如此之多的开源框架 6 1 1JAVA语言的发展历史 JAVA是SUN公司于上世纪90年代开发的 91年4月 SUN公司的一个开发小组从事家用电器方面的小型研究项目Green工程 最初的方案是用C 开发 开发人员JamesGosling对C 实现这一任务感到失望 决定自己编写了一种更好的语言来实现这一项目 最初 这种语言命名为OAK 后来改名为JAVA 印尼的一盛产咖啡的小岛 JAVA最初为用于家用电器而开发 JAVA的小型 安全 可移植性等特点 使其适用于WEB JAVA产生的时候 正是万维网日益流行的时候 95年8月 Netscape公司的浏览器率先支持JAVA 随后 Microsoft的InternetExplorer浏览器也支持JAVA 这样 随着万维网的日益普及 JAVA得到了广泛的使用 1996年Sun公司成立了专门的JavaSoft公司来发展Java 8 Java语言在互联网时代获得巨大成功 Java语言具有安全 跨平台 面向对象 简单 适用于网络等显著特点 Java语言已经成为最流行的网络编程语言 在经历了以大型机为代表的集中计算模式和以PC机为代表的分散计算模式之后 互联网的出现使得计算模式进入了网络计算时代 网络计算模式的一个特点是计算机是异构的 即计算机的类型和操作系统是不一样的 例如SUN工作站的硬件是SPARC体系 软件是UNIX中的Solaris操作系统 而PC机的硬件是INTEL体系 操作系统是windows或者是Linux 网络计算模式的另一个特点是代码可以通过网络在各种计算机上进行迁移 这就迫切需要一种跨平台的编程语言 使得用它编写的程序能够在网络中的各种计算机上能够正常运行 Java就是在这种需求下应运而生的 9 Java语言产生的背景 C语言是面向过程的语言 也是使用率非常高的语言 而面向对象的思想引入到编程语言之后 C语言就被改造成为面向对象的C 语言 得到了广泛的应用 但是C 语言必须兼容C语言 因此C 语言是面向过程和面向对象混合的语言 Java语言产生于C 语言之后 是完全的面向对象的编程语言 充分吸取了C 语言的优点 采用了程序员所熟悉的C和C 语言的许多语法 同时又去掉了C语言中指针 内存申请和释放等影响程序健壮性的部分 Java语言的一个目标是跨平台 因此采用了解释执行而不是编译执行的运行环境 在执行过程中根据所在的不同的硬件平台把程序解释为当前的机器码 实现跨平台运行 而动态下载程序代码的机制完全是为了适应网络计算的特点 程序可以根据需要把代码实时的从服务器中下载过来执行 在此之前还没有任何一种语言能够支持这一点 10 1 2JAVA的主要工作原理 1 Java虚拟机 JavaVirtualMachine 2 无用内存自动收集机制 Garbagecollection 3 代码安全性自动检测 CodeSecurity 11 1 2 1Java虚拟机 Java虚拟机是软件模拟的计算机 可以在任何处理器上 无论是在计算机中还是在其它电子设备中 安全并且兼容的执行保存在 class文件中的字节码 Java虚拟机的 机器码 保存在 class文件中 有时也可以称之为字节码文件 Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行 Java虚拟机中的Java解释器 Java命令 负责将字节码文件解释成为特定的机器码进行运行 Java虚拟机的建立需要针对不同的软硬件平台做专门的实现 既要考虑处理器的型号 也要考虑操作系统的种类 目前在SPARC结构 X86结构 MIPS和PPC等嵌入式处理芯片上 在UNIX Linux windows和部分实时操作系统上都有Java虚拟机的实现 12 Java程序的工作原理 13 JVM的比喻 有两支不同的笔 但需要把同一个笔帽套在两支不同的笔上 只有为该两支笔分别提供一个转换器 这个转换器向上的接口相同 用于适应同一个笔帽 向下的接口不同 用于适应两支不同的笔 两支不同的笔 不同类型的操作系统同一个笔帽 java字节码程序转换器 java虚拟机 JVM JVM分为向上和向下两个部分 所有平台上的JVM向上提供给Java字节码程序的接口完全相同 但向下适应不同平台的接口则互不相同 14 Java虚拟机的建立 Java虚拟机的建立需要针对不同的软硬件平台作专门的实现 15 不断扩展的Java程序的运行平台 16 JDK1 5 2004年10月 Sun发布了万众瞩目的JDK1 5 Sun将JDK1 5改名为JavaSE5 0 J2EE和J2ME也相应的改名为JavaEE和JavaME JDK1 5增加了诸如泛型 增强的for语句 可变数目参数 注释 自动拆箱和装箱的功能 同时也发布了新的企业级平台规范 如通过注释等新特性简化EJB的复杂性 并推出了EJB3 0规范 并推出了自己的MVC框架规范 17 1 2 2无用内存自动回收机制 在Java运行环境中 始终存在着一个系统级的线程 专门跟踪内存的使用情况 定期检测出不再使用的内存 并进行自动回收 避免了内存的泄露 也减轻了程序员的工作量 该线程一般都是在CPU空闲或内存不足时自动进行垃圾回收 而程序员无法精确控制垃圾回收的时间和顺序等 用户也可在程序中通过系统调用进行强制性的内存回收 18 1 2 3代码安全性检查机制 字节码的执行需要经过三个步骤 1 首先由类装载器 classloader 负责把类文件 class文件 加载到Java虚拟机中 在此过程需要检验该类文件是否符合类文件规范 2 其次字节码校验器 bytecodeverifier 检查该类文件的代码中是否存在着某些非法操作 例如applet程序中写本机文件系统的操作 3 如果字节码校验器检验通过 由Java解释器负责把该类文件解释成为机器码进行执行 19 1 2 3代码安全性检查机制 Java虚拟机采用的是 沙箱 运行模式 即把Java程序的代码和数据都限制在一定内存空间里执行 不允许程序访问该内存空间外的内存 如果是applet程序 还不允许访问客户端机器的文件系统 20 Java语言的特点 Java是简单的Java是面向对象的Java是分布式的Java是解释执行的Java是健壮的 21 Java语言的特点 Java是安全的Java是体系结构中立的Java是可移植的Java是高性能的Java是多线程的Java是动态的 22 Java是简单的 Java的风格类似于C 从某种意义上讲 Java语言本身很大程度上模仿了C及C 因此C和C 程序员可以很快掌握Java编程技术Java摒弃了C 中很少使用 难理解 容易引发程序错误的地方 如指针 结构 联合 操作符重载Java采用接口 interface 取代了C 的多重继承Java采用自动内存分配和回收Java很 小 40KB的内核 175KB的基本库 23 Java是面向对象的 Java是真正的面向对象语言封装性 Encapsulation 继承性 Inheritance 多态性 Polymorphism 对象中封装了它的状态变量以及相应的方法 实现了模块化和信息隐藏 而类则提供了一类对象的原型 并且通过继承机制 子类可以使用父类所提供的方法 实现了代码的复用 Java语言的设计集中于对象及其接口 它提供了简单的类机制以及动态的接口模型 24 Java是分布式的 分布式计算涉及到几台计算机在网络上一起工作由于Java一开始就设计了网络工作的能力 25 Java是解释执行的 Java的源程序首先由编译器 javac exe 编译成字节码再由解释器 java exe 解释执行Java解释器能直接在任何机器上执行Java字节码 26 Java是健壮的 程序的健壮性即是程序的可靠性Java语言在编译及运行程序时 都要进行严格的自动检查 防止不匹配问题的发生 例如 Java非常重视及早检查错误 Java编译器可以查处许多其它编译器运行时才能发现的错误Java不支持指针 从而避免了对内存直接按地址操作容易造成的数据破坏 只能通过对象名和变量名等对内存操作 Java的数组并非用指针实现 这样可避免数组越界的发生 Java具有实时异常处理的功能 Java强制程序员编写异常处理的代码 能够捕获并响应意外情况 27 Java是安全的 作为Internet程序设计语言 Java用于网络和分布式环境Java执行多层安全机制用来保护系统不受恶意程序攻击和破坏 不允许Applet读写计算机的文件系统 防止对文件破坏 传播病毒等 不允许Applet运行浏览器所在计算机上的任何程序 除了存储Applet的服务器之外 不允许Applet建立用户计算机与任何其他计算机相连 28 Java是体系结构中立的 Writeonce RunAnywhere即Java的平台无关性Java程序被编译成一种与体系结构无关的字节代码只要安装了Java运行时系统Java程序就可以在任意的处理器上运行 Java解释器得到字节码后 对他进行转换使他能够在不同的平台上运行Java在操作系统级得到统一支持 29 Java是体系结构中立的 续 30 Java是可移植的 Java的编译器是由Java语言实现的 解释器是由Java语言和标准C语言实现的 可较为方便的进行移植 基本数据类型的大小和算法作统一规定例如与C不同 int型大小固定32位定义了可移植性接口例如抽象Windows类系统本身是可移植的Java系统可以放在任何环境中 31 Java是高性能的 Java作为一种解释型语言 其速度不会超过编译语言和其他解释执行的语言如BASIC等不同 Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码 从而具有较高的性能Java虚拟机的 即时编译 技术使得Java程序的解释执行的速度加快 计算机硬件性能的持续增强 使得Java语言的此缺点被逐渐忽视 32 Java是多线程的 多线程概念很象多任务 Java可以把一个程序分成多个任务以便使任务易于完成和最大限度利用CPU资源多线程机制使应用程序能够并行执行 而且同步机制保证了对共享数据的正确操作通过使用多线程 程序设计者可以分别用不同的线程完成特定的行为 而不需要采用全局的事件循环机制 这样就很容易地实现网络上的实时交互行为 33 Java是动态的 Java自身的设计使她适合于一个不断发展的环境在Java类库中可以自由的加入新的方法和实例变量而不会影响用户程序的执行Java通过接口来支持多重继承使之比严格的类继承具有更灵活的方式和扩展性 34 1 2 4Java与C C 语言的比较 a 全局变量Java程序不能定义程序的全局变量 而类中的公共 静态变量就相当于这个类的全局变量 这样就使全局变量封装在类中 保证了安全性 而在C C 语言中 由于不加封装的全局变量往往会由于使用不当而造成系统的崩溃 b 条件转移指令C C 语言中用goto语句实现无条件跳转 而Java语言没有goto语言 通过例外处理语句try catch finally来取代之 提高了程序的可读性 也增强了程序的鲁棒性 c 指针指针是C C 语言中最灵活 但也是最容易出错的数据类型 用指针进行内存操作往往造成不可预知的错误 而且 通过指针对内存地址进行显示类型转换后 可以类的私有成员 破坏了安全性 在Java中 程序员不能进行任何指针操作 同时Java中的数组是通过类来实现的 很好的解决了数组越界这一C C 语言中不做检查的缺点 35 Java与C C 语言的比较 d 内存管理在C语言中 程序员使用库函数malloc 和free 来分配和释放内存 C 语言中则是运算符new和delete 再次释放已经释放的内存块或者释放未被分配的内存块 会造成系统的崩溃 而忘记释放不再使用的内存块也会逐渐耗尽系统资源 在Java中 所有的数据结构都是对象 通过运算符new分配内存并得到对象的使用权 无用内存回收机制保证了系统资源的完整 避免了内存管理不周而引起的系统崩溃 e 数据类型的一致性在C C 语言中 不同的平台上 编译器对简单的数据类型如int float等分别分配不同的字节数 例如 int在IBMPC上为16位 在VAX 11上就为32位 导致了代码数据的不可移植 在Java中 对数据类型的位数分配总是固定的 而不管是在任何的计算机平台上 因此就保证了Java数据的平台无关性和可移植性 f 类型转换在C C 语言中 可以通过指针进行任意的类型转换 不安全因素大大增加 而在Java语言中系统要对对象的处理进行严格的相容性检查 防止不安全的转换 36 Java与C C 语言的比较 g 头文件在C C 语言中使用头文件声明类的原型和全局变量及库函数等 在大的系统中 维护这些头文件是非常困难的 Java不支持头文件 类成员的类型和访问权限都封装在一个类中 运行时系统对访问进行控制 防止非法的访问 同时 Java中用import语句与其它类进行通信 以便访问其它类的对象 h 结构和联合C C 语言中用结构和联合来表示一定的数据结构 但是由于其成员均为公有的 安全性上存在问题 Java不支持结构和联合 通过类把数据结构及对该数据的操作都封装在类里面 i 预处理C C 语言中有宏定义 而用宏定义实现的代码往往影响程序的可读性 而Java不支持宏定义 37 1 3一切都是对象 面向对象的第一个原则是把数据和对该数据的操作都封装在一个类中 在程序设计时要考虑多个对象及其相互间的关系 纯粹的面向对象程序设计方法是这样的 1 所有的东西都是对象 2 程序是一大堆对象的组合 3 每个对象都有自己的存储空间 4 每个对象都属于某个类 38 39 40 41 1 4构建Java程序 Java程序分为Javaapplication Java应用程序 和Javaapplet Java小应用程序 两种 如果这个文件的代码中用到了系统所提供的额外的类 就必须放置一个import语句 说它是额外的是指一个特殊的类库 java lang 会自动导入到每个Java文件 42 43 44 45 46 47 48 49 50 51 52 53 Javaapplication程序分析 importjava util 下面我们用到了Date和Properties这两个类 是属于Java util这个包的 而System和Runtime这两个类 是属于Java lang这个包的 publicclassProperty publicstaticvoidmain Stringargs System out println newDate 在命令行下面打印出日期Propertiesp System getProperties 获得系统的Properties对象p getProperties 是System类的一个静态方法 static方法 由于它是 静态 的 所以不必创建对象就可以调用该方法 p list System out list 的方法 它将自己的全部内容都发给一个PrintStream对象System out println MemoryUsage Runtimert Runtime getRuntime 通过调用Runtime的getRuntime 方法创建了一个Runtime 该对象中包含了内存等信息System out println TotalMemory rt totalMemory 打印总内存大小 FreeMemory rt freeMemory 打印空闲内存大小 54 55 56 57 58 59 60 61 Javaapplet举例 applet没有main 方法 它必须嵌在超文本文件中 在浏览器中进行运行 所有的applet程序都是Applet类的子类 applet程序是从方法init 开始执行的 Paint方法继承于其祖先类Component 在component第一次被显示或重画时调用该方法 其参数Graphics是被显示的对象 这是我们的第一个Javaapplet 该程序保存在文件HelloEducation Java中importJava awt Graphics importJava applet Applet publicclassHelloEducationextendsApplet publicStrings publicvoidinit s newString WelcometoJavaWorld publicvoidpaint Graphicsg g drawString s 25 25 在浏览器中坐标为 25 25 的位置显示字符串s 62 Javaapplet举例 Javaapplet程序也是一个类 其编译方式与Javaapplication完全一样 Javaapplet的执行方式与Javaapplication完全不同 Javaapplet程序必须嵌入到html文件中才能够执行 因此必须编写相应的html文件 下面为HelloEducaiton html文件的内容 然后可以通过JDK所提供的命令 appletviewer 在命令行下面执行Javaapplet程序 如果是在windows操作系统中 就可以在 命令提示符 下敲入 appletviewerHelloEducation html applet还可以采用另外一种方式运行 那就是直接在浏览器中打开HelloEducation html程序 在主流的浏览器如IE Netscape中都包含有Java虚拟机 负责解释执行Javaapplet程序 63 1 5Java源程序结构 一个完整的Java源程序应该包括下列部分 package语句 该部分至多只有一句 必须放在源程序的第一句import语句 该部分可以有若干import语句或者没有 必须放在所有的类定义之前 publicclassDefinition 公共类定义部分 至多只有一个公共类的定义 Java语言规定该Java源程序的文件名必须与该公共类名完全一致classDefinition 类定义部分 可以有0个或者多个类定义interfaceDefinition 接口定义部分 可以有0个或者多个接口定义 64 Java源程序结构 例如一个Java源程序可以是如下结构 该源程序命名为HelloWorldApp Java packageJavawork helloworld 把编译生成的所有 class文件放到包Javawork helloworld中 importJava awt 告诉编译器本程序中用到系统的AWT包importJavawork newcentury 告诉编译器本程序中用到用户自定义的包Javawork newcentury publicclassHelloWorldApp 公共类HelloWorldApp的定义 名字与文件名相同 classTheFirstClass 第一个普通类TheFirstClass的定义classTheSecondClass 第二个普通类TheSecondClass的定义 其它普通类的定义interfaceTheFirstInterface 第一个接口TheFirstInterface的定义 其它接口定义 65 Java源程序结构 package语句 包在实际的实现过程中是与文件系统相对应的 例如Javawork helloworld所对应的目录是path Javawork helloworld 而path是在编译该源程序时指定的 比如在命令行中编译上述HelloWorldApp Java文件时 可以在命令行中敲入 Javac df JavaproJectHelloWorldApp Java 则编译生成的HelloWorldApp class文件将放在目录f JavaproJect Javawork helloworld 目录下面 此时f JavaproJcet相当于path 但是如果在编译时不指定path 则生成的 class文件将放在编译时命令行所在的当前目录下面 比如在命令行目录f JavaproJect下敲入编译命令 JavacHelloWorldApp Java 则生成的HelloWorldApp class文件将放在目录f JavaproJect下面 此时的package语句相当于没起作用 import语句 如果在源程序中用到了除Java lang这个包以外的类 无论是系统的类还是自己定义的包中的类 都必须用import语句标识 以通知编译器在编译时找到相应的类文件 66 Java源程序结构 源文件的命名规则 如果在源程序中包含有公共类的定义 则该源文件名必须与该公共类的名字完全一致 字母的大小写都必须一样 这是Java语言的一个严格的规定 如果不遵守 在编译时就会出错 因此 在一个Java源程序中至多只能有一个公共类的定义 如果源程序中不包含公共类的定义 则该文件名可以任意取名 如果在一个源程序中有多个类定义和接口定义 则在编译时将为每个类生成一个 class文件 每个接口编译后也生成 class文件 67 Java编程规范 包名 包名是全小写的名词 中间可以由点分隔开 例如 Java awt event 类名 首字母大写 通常由多个单词合成一个类名 要求每个单词的首字母也要大写 例如classHelloW
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于江宁区农副产品买卖合同
- 2025双边贸易合作合同范文
- 幼儿教师故事表演培训
- 2025年江苏省盐城市建湖县八年级中考模拟生物试题
- 外科护理核心要点
- 法医学死因分析
- 小儿急性间歇性卟啉病的临床护理
- 2025年小学学校教师整风运动工作总结模版
- 食堂培训总结
- 【SensorTower】2023年流媒体应用报告246mb
- 字节跳动经营分析报告
- 测绘地理信息从业人员保密知识培训
- 起重机委托使用协议书范本
- OEE培训课件教学课件
- 2023-2024学年江苏省南京市玄武区八年级下学期期末数学试题及答案
- 2025年山东出版集团招聘笔试参考题库含答案解析
- 2025年济南铁路局招聘笔试参考题库含答案解析
- 药品养护管理制度
- 《消防应急疏散培训》课件
- 药品类体外诊断试剂专项培训课件
- 《数据资产会计》 课件 第三章 数据资产的确认和计量
评论
0/150
提交评论