1JAVA程序设计崔亚楠邮箱:409789417@qq.com2012年9月2学习方法:学基础读代码写程序查资料(能力要求)-----------背成功:勤奋+努力+沟通3预备知识:英语计算机基本操作知识分类:经常用的—牢牢掌握不经常用的—会查极少用的—能查到4改变错误做法:只看+听,不练习太过钻细节----不是搞研究不敢调试61、程序设计语言程序设计语言的种类:机器语言:机器指令,直接执行(第一代)汇编语言:符号化,汇编器(Assembler)(二代)高级程序设计语言(编译型)(三代)高级程序设计语言(解释型)(三代)C、Pascal、Fortran面向过程C++面向过程/面向对象Java跨平台纯面向对象.net跨语言平台Sql,直接告诉它去做,如select(第四代语言)第五代语言-----自然语言7高级语言中用于描述计算的结构采用类似于数学中代数运算公式的形式,这种结构被称为“表达式”。程序中基本的动作单位被称为“语句”,不同的语句实现不同的功能。用高级语言书写的程序不可能直接地在计算机上执行,要在计算机上执行高级语言书写的程序,有两种基本方法:编译(Compilation)执行:这种方法是设法把高级语言程序(也称为“源程序”)转换成为机器语言的可以由计算机直接执行的程序,即转变为“可执行(Executable)程序”。“解释”(Interpretation)执行:这种方法是即时把源程序转换为机器可执行的指令。有时为了提高效率,也可以先编译成一种中间代码。1、程序设计语言——高级程序设计语言91、程序设计语言——高级程序设计语言编译过程10对于“解释执行”方式,人们实现了一种称为“解释器”(Interpreter)的软件来完成转换工作。解释器在工作方式上与编译器不同,它不对源程序进行翻译,而是直接对源程序的语句进行分析和解释,实现源程序所描述的功能。1、程序设计语言——高级程序设计语言解释过程11编译型语言,执行速度快、效率高;依赖编译器、跨平台性差些。如C、C++、Delphi、Pascal,Fortran。解释型语言,执行速度慢、效率低;依赖解释器、跨平台性好。如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB等等。但随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,主要体现在一些新兴的高级语言上,而解释型语言的自身特点也使得编译器厂商愿意花费更多成本来优化解释器,解释型语言性能超过编译型语言也是必然的。121、程序设计语言——高级程序设计语言高级语言写出的程序是独立于任何具体的计算机的。但是“编译器”和“解释器”则是与机器相关的。同一种语言,对于不同的机器,需要不同的“编译器”和“解释器”。人们已经开发出了许多不同的高级程序设计语言,不同的语言有各自不同的规范,因此需要专门的“编译器”和“解释器”。14第一章Java语言入门1.1Java的诞生1.2Java的特点1.3安装SUN公司的SDK1.4一个Java程序的开发过程1.5一个简单的Java应用程序的开发过程1.6一个简单的Java小应用程序(JavaApplet)1.7什么是JSP151.1、Java的诞生Java是1995年6月由Sun公司引进到我们这个世界的革命性的编程语言.1990年Sun公司成立了由JamesGosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统、各种CPU芯片上的代码。他们的精心专研和努力促成了Java语言的诞生。17Java是一种解释型的、面向对象的编程语言。历史:1991年,SUNMicroSystem公司的JameGosling、BillJoe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件。Oak—Java:互联网给Java带来新的生机1995年Sun向公众推出Java并引起业界的轰动发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。(1995年以来)应用:Java是当今最流行的软件开发语言之一,Sun推出了Java2&J2EE使Java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等。181.2、Java的特点1.简单2.面向对象3.与平台无关4.多线程5.安全6.动态191.省略c++语言中难以理解的,容易混淆的特性(指针、内存申请与释放)2.不支持goto语句,3.对系统要求比较低:采用特殊的软件构造方法,可以再很小的机器上运行:175k1.2Java语言特点——(1)简单20Java=“C++”-“复杂性和奇异性”+“安全性和可移植性”Java语言是一个完全面向对象的语言,并且对软件工程技术有很强的支持Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;类提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。1.2Java语言特点——(2)面向对象21面对对象:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。面向过程:自顶向下顺序执行,逐步求精;其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。程序流程在写程序时就已决定22严格的语言定义:没有“依据机器的不同而不同”或“由编译器决定”等字眼,最后的目标码都是一致的。Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。1.2Java语言特点——(3)平台无关性23源程序Java编译器SPARCpentiumPowerpc中间码PowerpcpentiumSPARC二进制源程序SPARCPowerpcpentiumPowerpcpentiumSPARC编译器二进制Java解释器编译型和解释型语言的工作模式类、类库装载(库)链接24编译,没有绝对地址调入包含、继承所用到的所有类,内存分配确定,变成真正可执行的机器码Java源程序(.java文件)Java编译器JavaBytecode(.class文件)系统执行平台Bytecode解释器Bytecode载入器字节码校验器不存在伪造的指针不违反访问权限不非法访问对象不导致操作栈溢出Java的编译与执行25JavainterpreterJust-in-timecompilerRuntimeSystemOperatingSystemHardware不同的操作系统有不同的虚拟机。它类似以字节码为指令的一个小巧而高效的CPU。Bytecode代码是与平台无关的是虚拟机的机器指令。Java字节代码运行的两种方式:Interpreter(解释方式)Just-in-time(即时编译):有代码生成器将字节代码转换成本机的机器代码,然后可以以较高速度执行.**Java虚拟机------java机制126**Java虚拟机------java机制1屏蔽底层运行平台的差别.java.classJVMforotherJVMforWindowsJVMforunix27单线程程序一个时刻只能做一件事情,多线程程序允许在同一时刻同时做多件事情。其它大多数高级语言,包括C,C++等,都不支持多线程,只能编写顺序执行的程序(除非有操作系统API的支持)。Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序。多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。1.2、Java语言特点——(4)多线程28Java是在网络环境下使用的语言,一个安全的网络至少要防止以下几种破坏的可能性:毁灭系统资源消耗系统资源挖掘系统或个人机密骚扰正常工作的进行1.2、Java语言特点——(5)安全问题29Java源程序(.java文件)Java编译器JavaBytecode(.class文件)Bytecode载入器Bytecode解释器系统执行平台语言定义访问权限publicprotectedprivatefinal取消指针自动回收垃圾Bytecode检查限定对象的存取权限系统堆栈溢出参数类型一致程序执行系统非常适合于变化发展的环境,可以再类库中自由加入新方法和成员变量Java语言需要时才装入类,甚至可以通过网络装在,对于网络程序特别有效1.2、Java语言特点——(6)动态31(7)可移植性:一次编写,到处运行对于不同平台采用完全统一的语言文本。如基本数据类型不会随机器结构改变而改变,整数总是32,长整数是64。而c、c++等并非如此,它们随机器或编译器的变化略有不同。1.2、Java语言特点——其他32(8)分布性功能强大易于使用的网络能力,java提供的类库可以处理TCP/IP协议。可以方便的使用URL访问网络资源。1.2、Java语言特点——其他33(9)高性能(相对于其他解释型语言)新的JAVA开发工具采用“实时编译”技术,并且Sun公司提出了“hotspot”运行引擎技术。随着这些技术的应用,java运行速度已大大提高,甚至接近C/C++程序的运行速度。开发周期短。(10)健壮性:早期问题检查(未雨绸缪策略)垃圾回收机制---java机制21.2、Java语言特点——其他34不再有全局变量不再有#include和#define等预处理功能不再有structure、union及typedef等不再有函数、不再有指针、不再有多重继承不再有goto语句不再有操作符重载(OperatiorOverloading)要求强制转换自动进行内存管理1.2、Java语言特点——与C及C++的区别35Java开发环境JDKj2eesdk-1_5_01-windows.exej2sdk-1_5_2_04-nb-3_6-bin-windows.exej2sdk-1_5_2-doc.zip集成环境EclipseMyEclipseJbuilder(Borland)VisualJ++(Microsoft)JPadTextPad…361.3安装SUN公司的SDKSun公司要实现“编写一次,到处运行”(Writeonce,runanywhere)的目标,必须提供相应的Java运行平台,目前Java运行平台主要分为3个版本:J2SE:Java标准平台J2EE:Java企业平台J2ME:Java小型平台37StandardEditionJ2SE包含那些构成Java语言核心(标准版)的类。数据库连接、接口定义、输入/输出、网络编程EnterpriseEditionJ2EE包含J2SE中的类,并且还包(企业版)含用于开发企业级应用的类。EJB、servlet、JSP、XML、事务控制MicroEditionJ2ME包含J2SE中一部分类,用于(微缩版)消费类电子产品的软件开发。呼机、智能卡、手机、PDA、机顶盒38学习Java必须从J2SE开始目前Sun公司已发布了SDK的1.5测试版本(beta版),可以登录到Sun公司的网站:http://