




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 / 81 java 基础教程总结 第一讲 Java语言入门 一 有一种学习叫无论你身处何地,都可以来看 Java 现场直播 其实别看我说的头头是道的,其实在我刚准备学 Java 的时候,也老迷茫了,当然有时候迷茫是因为才华配不上梦想,身边的朋友总是叨叨那谁谁做 Java 工资多么多么的高,整的我心里痒痒的羡慕妒忌恨,所以就找了很多学习 Java 的机构,后来在我们济南这边选择了一家学习,学了半年,就学了一些不着调的基础知识,勉强的能编点小程序,其实啥实战能力也没有,老师教学的时候 他自己讲的都云里雾里的,让我们这小新入行的小白更是摸不着头脑了。我一看,这样下去,我的 Java梦也就蔫吧了。 后来我一哥们在网上给我说了一个地方让我去学习,他们那里每天晚上都有公开课,老师现场讲的,于是我就抱着玩的态度,去听了几天他们的公开课,听的我是豁然开朗,老师讲的是通俗易懂,把抽象的 Java,讲解的形象生动,我就觉2 / 81 得和讲故事似的,这才是我想要的课程,从那时候开始,我就每天晚上去学习,如果各位小伙伴也想去学习的话,你们可以加一下他们这个群就可以去学习了,前面的第一组数字是:一四三,中间的第二组数字是:五一零,结束的一组数字是:一六八。按照顺序组合就可以了,反正我通过自己的经历发现一个道理,选择不对,努力白费。 Java的特点 面向对象: ? 与 C+相比, JAVA是纯的面向对象的语言 C+为了向下兼容 C,保留了很多 C 里面的特性,而 C,众所周知是面向过程的语言,这就使 C+成为一个 混血儿 。而JAVA语法中取消了 C里为兼容 C 所保留的特性,如 取消了头文件、指针算法、结构、单元等。 可移植: ? 生成中间字节码指令 3 / 81 与其他编程语言不同, Java 并不生成可执行文件,而是生成一种中间字节码文件。任何操作系统,只要装 有 Java 虚拟机,就可以解释并执行这个中间字节码文件。这正是 Java实现可移植的机制。 ? 原始数据类型存储方法固定,避开移植时的问题 Java的原始数据类型的大小是固定的。比如,在任何机器上,整型都是 32 位,而 C+里整型是依赖于目标机器的,对 16位处理器,整数用两个字节表示;在像 Sun SPARC 这样的 32位处理器中,整数用 4个字节表示。在 Intel Pentium 处理器上,整数类型由具体的操作系统决定:对于 DOS 和 Win32来说,整数是 2个字节;对于 Windows 9x 、 NT和 2000,整数是 4个字节。当然,使 整数类型平台无关之后,性能必然有所下降,但就 Java 来说,这个代价是值得的。 Java 的字符串,则采用标准的Unicode格式保存。可以说,没有这个特性, Java 的可移植性也不可能实现。 简单 4 / 81 ? JAVA在语法上与 C+类似 JAVA 的语法与 C+很接近,有过 C 或者 C编程经验的程序员很容易就可以学会 JAVA 语法; ? 取消了 C+的一些复杂而低效的特性比如:用接口技术代替了 C+的多重继承。 C中,一个 类允许有多个超类,这个特性叫做 多重继承 ,多重继承使得编译器非常复杂且效率不高; JAVA 的类只允许有一个超类,而用接口技术实现与 C的多继承相类似的功能 其它被取消的特性包括:虚拟基础类、运算符过载等 ? JAVA的基本解释器和类支持模块大概仅 40K 即使加入基本的标准库和支持线程的模块,也才 220K左右。与 GUI相比,明显小很多 健壮 ? 取消了指针算法 5 / 81 C 的最关键的一个特性是它的强大指针算法,比如可以用指针访问字符串、数组甚至文件,很容易产生指针溢出,意外地改写内存和损毁数据。 JAVA里有一个指针模型,对于普通的任务,如 访问字符串、数组,根本不用指针,而一旦需要,比如访问对象、文件时,也可以获得指针的强大能力,但 JAVA同时有高度的指针安全保障,用户永远不可能访问一个坏掉的指针、不可能造成内存分配错误,也用不着专门提防可能出现的内存漏洞。 多线程 ? 强大的多线程能力 多线程可以使程序有更好的交互性和实时性,并可以最大限度地利用多处理器系统。 JAVA 有着强大的多线程处理能力,因为各主流操作系统平台在线程的实施方面有重大的差异,所以 JAVA 为不同的操作系统实现了专门的多线程机制。在这点上来说, JAVA 没有做到平台无关。 Java简史 ? 首次亮相 -1995年 5 月 6 / 81 Java技术起先是作为小型的计算机语言,用于消费类设备,比如有线电视交换盒等。因为这些设备的功能和内存均不足以运行大程序,所以程序要尽可能小;另外,由于不同的厂商可能选用不同的 CPU,所以要求这 种语言不能受限于任何一种独立的体系结构。 1995年 5月 23日召开的 SunWorld 95 大会上,一种全新的浏览器亮相,标志着 Java的诞生。 ? 开始流行 -1996年 1 月 那时网景公司决定在加入对 Java的支持,在 1996年 1 月发布,从这一版本开始,所有 Netscape 浏览器均支持 Java。注册了 Java 使用许可证的还有 IBM、 Symantec、 Inprise和其他许多公司。就连微软,也加入了这一行列。 ? SUN 的第一个 JAVA 版本 -1996 年初 Sun公司于 1996年初发布了 Java ,遗憾的是,还未摆脱其小型语言的影子,只适合用来做诸如网页上一个随机移动的文字之类的工作,并不适合用来做正规的程序开发。作为一种正规的编程语言,可以说,准备得很不充分。 7 / 81 ? 成熟 -1998年 1998 年 12 月,问世了。它是一个功能全面的、具有高度扩展能力的新版本。 3 天后,被改进成 Java2,向 一次编写,到处运行 的目标前进了一大步。 ? 现状 现在最新的 Java 版本是,它是一个测试版,稳定的正式版是。用户 可以到 http:/products/免费下载。微软在它的最新浏览器中不再支持 Java,为 Java的发展带来阴影。 JDK的安装与编程环境的设定 Java程序的开发过程 经典的 Java 工具包是 JDK。尽管可以用任何文本编辑器,如记事本,都可以直接编写 Java 程序然后用 JDK 的命令编译和运行,为了调试方便,也为了初学者容易上手,本教程课8 / 81 件将使用一个叫 JPadPro 的 Java 编写工具来调用 JDK 的工具。用户可以到下载这个工具。 JDK的安装 安装运行之后,应该首先设置 JDK 工具包所在的路径。 菜单栏的 JDK- select JDK Directory-选择刚才安装的JDK路径 - OK。 新建一个 project 菜单栏的 File-new projects-选择路径 , 输入 project的名字。 两个简单的程序示例 Java 应用程序: ? 编写 新建一个 .java文件。 File- new- java file-输入一个9 / 81 名字: Hello-点 creat file.出现了一个空的 java文件。 ? 编译 JDK- compile 或者点击如演示所示的按钮。实际上是执行 JDK 工具包里的命令,与 javac G:java2jiaochengexampleteach1是等价的。便已完成之后在同一个文件夹就会有一个同名的 .class 文件。 ? 看编译结果,改错 错误举例:少写一个分号;录入错误; ? 运行 JDK- Run classes-选择要运行的 class,输入参数或者点 击如演示所示的按钮。 一个有参数的例子 ? 看运行结果 10 / 81 Java Applet: 新建一个 Java Applet 文件。 File- new- java Applet-输入一个名字: StarterApplet-出现了一个空的 java 文件和一个 Html文件。 ? 编译 JDK- compile 或者点击如演示所示的按钮。实际上是执行 JDK 工具包里的命令,与 javac G:java2jiaochengexampleteach1 是等价的。 注意 不要隐藏文件的扩展名,否则给编译时带来麻烦!可以在工 工具 /文件夹先项 /查看 /中修改! ? ? 看编译结果,改错 运行 JDK- Test Applet-选择要运行的 class,输入参数 11 / 81 或者点击如演示所示的按钮 或者直接双击 Html 文件。 ? 看运行结果 如果获得帮助 下载帮助 JDK 并不包含帮助文件,需要到网站上下载,里面有示例和说明。 http:/javadoc/,下载下来时候,双击安装。 使用帮助 敲入想查找的关键字,按回车。 编程的一些约定 12 / 81 注意:在一个原文件中只能有一个 public 类!且文件名与public 类同名! 命名规则 类名与文件名应该一致 ,否则编译出错。比如, class Hello的文件名应该是 类名首字母大写,每个单词开头大写,其他用小写。比如: , 。 变量名用第一个单词用小写字母,第二个以后的单词首字母大写。比如: int myAge; 方法的名字第一个单词用小写字母,第二个以后的单词首字母大写,比如: getMyAge(); Java基础知识总结 不得不说的话一: 你是下一个 Java 大牛?还是下一个 Java炮灰 这些年 Java 这个行业,真的是火的一塌糊涂,吸引了无数的有志青年加入这个行业,在这个过程中,产生了无数的精英大牛级别的人物,但是更多的是成为炮灰,在 Java 的道路上走不下去,这是为什么呢?从目前学校的角度来说,很13 / 81 多大学的老师心思不在教学上,在自己做项目上,或者很多老师本身水平就有限,以及大学宽松的环境,很多人都忙着玩或者谈恋爱,没有那么多的时间用在学习上,学习更多的时候成为了一项副业,更何况是一个 Java呢? 可笑的是,很多学生在大学毕业的时候,什么都不会,反而在毕业之后参加二次培训找相应的机构,要不然找个工作都费劲,这是一个过来人对即将开启的 Java学习之旅的忠告,如果是想避免这个大多数人的悲哀的命运,还是从现在就开始改变吧,否则的话,到时候剩下的只有迷茫,机会总是属于有准备的人,如果你真的想在 Java 这个行业打拼出一番属于自己的天地,你可以来我 们这里学习,每天晚上我们都会在网上讲课在线直播,都是 Java 行业里身经百战的人物,每天我们很多人同时在一块学习,一块提高,如果你想学的话,可以来我们这个群, 排在前三位的数字是 143,处于中间地带的三位数字是: 510 ,最后断后的是: 168,把这些按照顺序组合起来,就来到了 Java 学习的梦想之地,当然如果你只想混日子的话,那就不要来了,我们这是不欢迎。 不得不说的话二: 别再迷茫了 Java 学子们,迷茫就是才华配不上梦想 14 / 81 我曾经以为很多人迷茫是因为没有梦想,但后来我发现我错了,其实,每个人都是有梦想的,这个梦想可大可小,都是值得自己奔赴的东西。我有一个表弟,从小到大都是不招人待见的 “ 坏孩子 ” ,打架骂人,凡是和坏有关的事情他都会去做。初中毕业做了几年的厨师之后,突然转行去学习拳击,家里人都说他不务正业,有一次,我问他为什么会有学拳击的想法,他有些腼腆地说: “ 我从小就想当一个健身教练,上学的时候打架,觉得打得过人家,就说明自己力量大、身体棒,长大之后,才知道必须经过专业的训练才可以。我这种野路子出家的人,不知道可不可以,但我还是想试一试。 ” 写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做? 1,2,3。 3,确定步骤。每一个思路部 分用到哪些语句,方法,和对象。 4,代码实现。用具体的 java 语言代码把思路体现出来。 15 / 81 学习新技术的四点: 1,该技术是什么? 2,该技术有什么特点 (使用注意 ): 3,该技术怎么使用。 demo 4,该技术什么时候用? test。 - 一:java概述: 1991 年 Sun公司的 James Gosling等人开始开发名称为 Oak 的语 言,希望用于控制嵌入在有线电视交换盒、 PDA 等的微处理器; 1994年将 Oak 语言更名为 Java; Java的三种技术架构 : 16 / 81 JAVAEE: Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对 web程序开发; JAVASE: Java Platform Standard Edition,完成桌面应用程序的开发, 是其它两者的基础; JAVAME: Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 1, JDK: Java Development Kit, java的开发和运行环境,java的开发工具和 jre。 2, JRE: Java Runtime Environment, java程序的运行环境,java 运行的所需的类库 +JVM(java 虚拟机 )。 3,配置环境变量:让 java jdkbin 目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 环境变量的配置: 1):永久配置方式: JAVA_HOME=%安装路径 %Javajdk 17 / 81 path=%JAVA_HOME%bin 2 ): 临 时 配 置 方 式 : set path=%path%;C:Program FilesJavajdkbin 特点:系统默认先去当前路径下找要执行的程序,如果没有,再去 path中设置的路径下找。 classpath 的配置 : 1):永久配置方式: classpath=.;c:;e: 2):临时配置方式: set classpath=.;c:;e: 注意:在定义 classpath环境变量时,需要注意的情况 如果没有定义环境变量 classpath, java启动 jvm 后,会在当前目录下查找要运行的类文件; 如果指定了 classpath,那么会在指定的目录下查找要运行的类文件。 18 / 81 还会在当前目录找吗?两种情况: 1):如果 classpath 的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。 2):如果 classpath 的值结果出没有 分号,在具体的路径中没有找到运行的类,不会再当前目录找。 一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。 4, javac命令和 java命令做什么事情呢? 要知道 java 是分两部分的:一个是编译,一个是运行。 javac:负责的是编译的部分,当执行 javac时,会启动 java的编译器程序。对指定扩展名的 .java文件进行编译。 生成了 jvm可以识别的字节码文件。也就是 class文件,也就是java的运行程序。 java:负责运 行的部分 .会启动 jvm.加载运行时所需的类库 ,并对 class文件进行执行 . 19 / 81 一个文件要被执行 ,必须要有一个执行的起始点 ,这个起始点就是 main 函数 . - 二: java语法基础: 1,关键字:其实就是某种语言赋予了特殊含义的单词。 保留字:其实就是还没有赋予特殊含义,但是准备日后要 使用过的单词。 2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、 a-z、 $、 _ ; 注意: 1),数字不可以开头。 2),不可以使用关 键字。 3,常量:是在程序中的不会变化的数据。 4,变量:其实就是内存中的一个存储空间,用于存储常量20 / 81 数据。 作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存 储空间。 特点:变量空间可以重复使用。 什么时候定义变量?只要是数据不确定的时候,就定义变量。 变量空间的开辟需要什么要素呢? 1,这个空间要存储什么数据?数据类型。 2,这个空间叫什么名字啊?变量名称。 3,这个空间的第一次的数据是什么? 变量的初始化值。 变量的作用域和生存期 : 变量的作用域: 21 / 81 作用域从变量定义的位置开始,到该变量所在的那对大括号结束; 生命周期: 变量从定义的位置开始就在内存中活了; 变量到达它所在的作用域的时候就在内存中消失了; 数据类型: 1):基本数据类型: byte、 short、 int、 long、 float、 double、char、 boolean 2):引用数据类型 : 数组、类、接口。 级 别 从 低 到 高 为 : byte,char,short( 这 三 个 平级 )intfloatlongdouble 自动类型转换:从低级别到高级别,系统自动转的; 强制类型转换:什么情况下使用 ?把一个高级别的数赋给一22 / 81 个别该数的级别低的变量; 运算符号: 1)、算术运算符。 + - * / % %:任何整数模 2 不是 0 就是 1,所以只要改变被模数就可以实现开关运算。 +:连接符。 +,- 2)、赋值运算符。 = += -= *= /= %= 3)、比较运算符。 特点:该运算符的特点是:运算完的结果,要么是 true,要么是 fal。 23 / 81 两边结果一样,就为 false。 两边结果不一样,就为 true. & 和 &区别: & :无论左边结果是什么,右边都参与运算。 &:短路与,如果左边为 false,那么右边不参数与运算。 | 和 | 区别: |:两边都运算。 |:短路或,如果左边为 true,那么右边不参与运算。 练习:对两个变量的数据进行互换。不需要第三方变量。 int a = 3,b = 5;b = 3,a = 5; a = a + b; a = 8; b = a - b; b = 3; a = a - b; a = 5; 24 / 81 a = a 效的算出 2*8 = 2 5,语句。 If switch do while while for 这些语句什么时候用? 1)、当判断固定个数的值的时候,可以 使用 if,也可以使用switch。 但是建议使用 switch,效率相对较高。 switch(变量 ) case 值 :要执行的语句 ;break; ? default:要执行的语句 ; 工作原理:用小括号中的变量的值依次和 case 后面的值进25 / 81 行对比,和哪个 case后面的值相同了 就执行哪个 case 后面的语句,如果没有相同的则执行default后面的语句; 细节: 1): break 是可以省略的,如果省略了就一直执行到遇到 break为止; 2 ): switch 后 面 的 小 括 号 中 的 变 量 应 该 是byte,char,short,int 四种类型中的一种; 3): default 可以写在 switch 结构中的任意位置;如果将default 语句放在了第一行,则不管 expression 与 case 中的 value 是否匹配,程序会从 default开始执行直到第一个break出现。 2)、当判断数据范围,获取判断运算结果 boolean 类型时,需要使用 if。 3)、当某些语句需要执行很多次时,就用循环结构。 while和 for可以进行互换。 26 / 81 区别在于:如果需要定义变量控制循环次数。建议使用 for。因为 for 循环完毕,变量在内存中释放。 break:作用于 switch ,和循环语句,用于跳出,或者称为结束。 break 语句单独存在时,下面不要定义其他语句,因为执 行不到,编译会失败。当循环嵌套时, break 只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。 continue:只作用于循环结构,继续循环用的。 作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。 6,函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是 java 中的函数。函数就是体现之一。 java中的函数的定义格式: 27 / 81 修饰符 返回值类型 函数名 (参数类型 形式参数 1,参数类型 形式参数 1, ?) 执行语句; return 返回值; 当函数没有具体的返回值时,返回的返回值类型用 void 关键字表示。 如果函数的返回值类型是 void 时, return 语句可以省略不写的,系统会帮你自动加上。 return 的作用:结束函数。结束功能。 如何定义一个函数? 函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成: 28 / 81 1)、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。 2)、在实现该功能的过程中是否有未知内容参与了运算,其实就是在 明确这个函数的参数列表 (参数类型 &参数个数 )。 函数的作用: 1)、用于定义功能。 2)、用于封装代码提高代码的复用性。 注意:函数中只能调用函数,不能定义函数。 主函数: 1)、保证该类的独立运行。 2)、因为它是程序的入口 。 3)、因为它在被 jvm调用。 29 / 81 函数定义名称是为什么呢? 答: 1) 、为了对该功能进行标示,方便于调用。 2)、为了通过名称就可以明确函数的功能,为了增加代码的阅读性。 重载的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的 个数,或者参数的类型不同,即可称之为该函数重载了。 如何区分重载:当函数同名时,只看参数列表。和返回值类型没关系。 7,数 组:用于存储同一类型数据的一个容器。好处:可以对该容器中的 数据进行编号,从 0 开始。数组用于封装数据,就是一个具体的实体。 如何在 java 中表现一个数组呢?两种表现形式。 1)、元素类型 变量名 = new 元素类型 元素的个数 ; 30 / 81 2)、元素类型 变量名 = 元素 1,元素 2.; 元素类型 变量名 = new 元素类型 元素 1,元素 2.; - /二分查找法。必须有前提:数组中的元素要有序。 public static int halfSeach_2(int arr,int key) int min,max,mid; min = 0; max = ; mid = (max+min)1; /(max+min)/2; while(arrmid!=key) 31 / 81 if(keyarrmid) min = mid + 1; else if(key max = mid - 1; if(max return -1; mid = (max+min)1; return mid; - 第 1 章 Java 语言概述与面向对象思想 1 32 / 81 Java语言的发展 1 Java语言的产生 1 Java语言的发展 1 Java语言的特点 2 面向对象与面向过程的差异 3 面向过程思想回顾 4 面向对象思想介绍 4 面向对象程序设计中的主要概念和特征 4 主要概念 5 主要特征 5 * Java 与 C+的差异 5 33 / 81 本章小结 5 习题 5 第 2 章 Java 语言开发环境 6 JDK 6 JDK的简介 6 JDK的构成 6 JDK的使用 6 IDE 8 IDE简介 8 JBuilder 9 Eclipse 9 34 / 81 相关资源 9 Project管理 9 Project的含义 9 可行的 Project组织模式 9 主要开发工具的 Project目录 10 本章小结 10 习题 10 第 1 章 Java 语言概述与面向对象思想 Java语言的发展 Java语言的产生以介绍面向对象编程的基本概念、基本理论为重点,结合 Java 语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对 Java35 / 81 技术有一个总体了解,通过本课程学习,使学生掌握 Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用 Java 语言进行 程序的编写、编译以及调试工作 上世纪 90年代初期, Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免 C+的一些不足。 该语言起初命名为 Oak,来源于语言作者 Gosling 办公室窗外的一棵橡树。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印 度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇, Java 语言得名于此。 随着 Internet 的迅速发展, Web 应用日益广泛, Java 语言也得到了迅速发展。 1994年, Gosling 用 Java 开发了一个实时性较高、可靠、安全、有交互功能的新型 Web浏览器,它不依赖于任何硬件平台和软件平台。这种浏览器名称为 HotJava,并于 1995年同 Java 语言一起,正式在业界对外发表,引起了巨大的轰动, Java的地位随之而得到肯定。此后的发展非常迅速。 Java 编程语言的句法36 / 81 与 C+的句法相似,语义则与 Small Talk TM 的语义相似。Java 编程语言可被用来创建任何常规编程语言所能创建的应用程序。 设计 Java编程语言的主要目标是 : ? 提供一种易于编程的语言,从而消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。 ? 利用面向对象的概念使程序真正地成为完全面向对象的程序。 ? 为使代码尽可能清晰合理、简明流畅提供了一种方法。 ? 为获得如下两点益处提供一种解释环境: 提高开发速度 消除编译 链接 装载 测试周期; 代码可移植性 使操作系统能为运行环境做系统级调用。 ? 为运行不止一个活动线程的程序提供了一种方37 / 81 式。 ? 通过允许下载代码模块,从而当程序运行时也能动态支持程序改变。 ? 为那些保证安全性而装载的代码模块提供了一种检查方法。 精心开发的 Java 核心技术为上述目标的实现提供了保证,其中包括如下几个主要技术: ? Java虚拟机 ? 自动垃圾收集 ? 代码安全性 Java语言的发展 Java语言的发展目标并不仅仅是一种编程语言,同时还要构建一种开发环境、一种应用环境、一种部署环境。 作为 Java语言的最基本支持, Sun公司在 1996年发布了 Java开发工具包 JDK ,其中包括了进行 Java 开发所需要的各种38 / 81 实用程序、基本类库、程序实例等等。 1998年, Sun 公司发布了更新的 JDK ,由于在技术思想方面与以前有很多改进,所以此后的 Java 技术一般称之为 Java 2。随后,针对不同的领域特征, Java 技术分为三种不同的平台: ? J2SE 标准 Java 平台 J2SE是 Java语言的标准版,指的就是 JDK,包含 Java基础类库和语法。它用于开发具有丰富的 GUI、复杂逻辑和高性能的桌面应用程序。 ? J2EE 企业级 Java 平台 J2EE 建立在 J2SE 之上,用于开发和实施企业级应用程序。它是一个标准的多层体系结构,可以将企业级应用程序划分为客户层、表示层、业务层和 数据层,主要用于开发和部署分布式、基于组件、安全可靠、可伸缩和易于管理的企业级应用程序。 ? J2ME 嵌入式 Java技术平台 J2ME也是建立在 J2SE之上,主要用于开发具有有限的连接、内存和用户界面能力的设备应用程序。例如移动电话、 PDA、能够接入电缆服务的机顶盒或者各种终端和 其他消费电子39 / 81 产品。 任何语言建立的应用程序的类型或多或少都与应用程序的运行环境有关,而 Java语言一般可以建立如下的两种程序: ? Applications Applications 是一种独立的程序,它是一种典型的通用程序,可运行于任何具备 Java 运行 环境的设备中。 ? Applets Applets是一种贮存于 WWW服务器上的用 Java编程语言编写的程序,它通常由浏览器下载到客户系统中,并通过浏览器运行。 Applets 通常较小,以减少下载时间,它由超文本标识语言的 Web页来调用。 Java运行环境具有一些特殊性,或者有很多特殊的人为建立的运行环境,所以 Java 编程中经常建立各种组件,它们可以在特定环境中运行,如 Servlet、 JavaBean、 JSP 等。 40 / 81 在 Java技术体系中,有很多免费或非免费的第三方 Java组件,他们往往提供了某一方面的解决方案,可以应用在很多项目的开发过程中。 学习 Java语言需要逐渐了解 Java技术体系,从局部细节开始学习,从整体中进行认识并选择方向,从应用中进行巩固提高。 Java语言的特点 Java 语言适用于 Internet 环境,是一种被广泛使用的网络编程语言,它具有如下的一些特点: ? 简单 Java 语言的语法规则和 C+类似,但 Java 语言取消了指针和多重继承,统一使用引用来指示对象,通过自动垃圾收集免去了程序设计人员对于内存块的释放工作。 ? 面向对象 41 / 81 Java语言为了提高效率,定义了几个基本的 数据类型以非类的方式实现,余下的所有数据类型都以类的形式进行封装,程序系统的构成单位也是类。因而几乎可以认为是完全面向对象。 ? 平台无关性 Java 虚拟机是在各种体系结构真实机器中用软件模拟实现的一种想象机器,必要时候可以用硬件实现。 当然,这些虚拟机内部实现各异,但其功能是一致的 执行统一的 Java虚拟机指令。 Java 编译器将 Java 应用程序的源代码文件翻译成 Java 字节码文件 ,它是由 Java 虚拟机指令构成的。由于是虚拟机器,因而 Java 虚拟机执行 Java程序的过程一般称为解释。 依赖于虚拟机技术, Java语言具有与机器体系结构无关的特性,即 Java 程序一旦编写好之后,不需进行修改就可以移植到任何一台体系结构不同的机器上。 从操作系统的角度看,执行一次 Java 程序的过程就是执行一次 Java 虚拟机进程的过程。 ? 面向网络编程 Java 语言产生之初就面向网络,在 JDK 中包括了支持42 / 81 TCP/IP、 HTTP 和 FTP等协议的类库。 ? 多线程支持 多线程是程序同时执行多个任务的一种功能。多线程机制能够使应用程序并行执行多项任务,其同步机制保证了各线程对共享数据的正确操作。 ? 良好的代码安全性 运行时一词强调以动态的角度看程序,研究程序运行时候的动态变化,也用运行时环境一词表达类似的含义。 Java技术的很多工作是在运行时完成的,如加强代码安全性的校验操作。 一般地, Java 技术的运行环境执行如下三大任务: ? 加载代码 由类加载器执行 类加载器为程序的执行加载所需要的全部类。 ? 校验代码 由字节码校验器执行 43 / 81 Java代码在实际运行之前要 经过几次测试。字节码校验器对程序代码进行四遍校验,这可以保证代码符合 JVM 规范并且不破坏系统的完整性。如检查伪造指针、违反对象访问权限或试图改变对象类型的非法代码。 ? 执行代码 由运行时的解释器执行 ? 自动垃圾收集 许多编程语言都允许在程序运行时动态分配内存块,分配内存块的过程由于语言句法不同而有所变化,但总是要返回指向存储区起始位置的指针。 在 C, C+ 及其它一些语言中,程序员负责取消分配内存块。有时这是一件很困难的事情。因为程序员并不总是事先知道内存块应在何时被释放。当在系统中没有能够被分配的内存块时,可导致程序瘫痪,这种程序被称作具有内存漏洞。 当分配内存块不再需要时,程序或运行环境应取消分配内存块。 ? 垃圾收集就是将不再需要的已分配内存块回收。 44 / 81 ? 在其它一般的语言中,取消分配是程序员的责任。 ? Java 编程语言提供了一种系统级线程以跟踪存储区分配,来完成垃圾收集: ? 可检查和释放不再需要的存储块 ? 可自动完成上述工作 ? 可在 JVM 实现周期中,产生意想不到的变化 ? 良好的代码健壮性 Java能够检查程序在编译和运行时的错误。类型检查能帮助用户检查出许多在开发早期出现的错误。同时很多集成开发工具的出现使编译和运行 Java 程序更加容易,并且很多集成开发工具都是免费的。 面向对象与面向过程的差异 一种程序设计语言的产生,不仅是以介绍面向对象编程的基本概念、基本理论为重点,结合 Java 语言的语法规则、编45 / 81 程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对 Java 技术有一个总体了解,通过本课程学习,使学生掌握 Java 语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用 Java 语言进行程序的编写、编译以及调试工作程序设计技术的改进,也包含了表达和认知思想的进步。 以 C 语言为代表的部分早期语言,被称为面向过程的语言,不仅因为其程序设计的表达形式是以过程为基本元素,本质上更在于此时对计算机化的系统的理解的主导思想还是控制流或者数据流的,构成系统的要素是模块 处理逻辑。 面向对象语言的产生,是因为对于系统的理解或抽象到了更为高级的层次。此时的认知思想不仅更接近于现实世界,其抽象程度也很高。因而,既有易懂的一方面,也有难懂的另一方面,就看理解的境界了。 面向对象思想介绍 面向对象思想,对现实世界采用直观的理解,计算机化时候采用深度的抽象,简单地可以总结如下: 46 / 81 系统是由事物构成的,事物之间是有联系的,复杂的事物也是系统; 系统与系统、系统与事物、事物与事物之间是有明确界限的; 系统或事物的状态刻画可以用属性表示,属性一般是些简单的数据,如果复杂那就是事物了; 系统或事物的状态会发生变化,称为行为,产生变化是有原因的,变化的过程可能是复杂的; 不同的事物之间会具有共同的属性和行为,共同的极端情形就是完全包含。 基于以 上的认识,一个运行时的具体系统或事物,是由几个更小的具体事物构成,它们是不断发生变化的。如果对事物这一概念进行了有效的抽象,那么问题就迎刃而解。 首先,将任何一个具体的事物称为对象 ,它的极端情形就是过去的变量;事物是分类的,每一类事物都具有统一的属性和行为,即类型 抽象数据类型,简称为类;行为既然是过程,那么就抽象成函数,命名为方法,以示区别。 47 / 81 例如: 描述身高或姓名,各自只是一个简单的数据变量; 描述一个学生,可以使用学号、姓名、宿舍、班级等;那更换宿舍算什么呢! 那描述宿舍、班级,又要有许多个项目。 面向对象程序设计中的主要概念和特征 面向对象程序设计语言中,为了进行更为高度的抽象,会引入一些现实世界中难于找到的概念,但 对于一个程序语言来说确实很有价值的。以下暂时介绍的概念基本上都来源于对现实世界的抽象,要从程序设计的角色中去理解它们。 面向对象程序设计使系统更易于理解,也使代码具有更好的重用性、可扩展性、易于管理和维护。 主要概念 1、类 48 / 81 类是对一类事物的抽象表示,其角色就相当于数据类型,当然可以算作复杂的数据类型。如学生、宿舍、班级。 2、对象 对象表示一个具体的事物,其角色就是变量,即一个复杂数据类型 xx类的变量。如周瑜、张飞、瑜飞居,飞虎班。 主要特征 OOP语言有三个特征:封装、继承及多态性。 1、封装 类的构成包括成员变量 /对象与成员方法,这样将相关的数据与函数包装在一起,同其他的类相区分,就是封装。显然,避免了面向过程语言的平行缺陷,说明了类和成员之间的所属关系。进一步地,可以限制类的成员在外部的可见性,那么就将封装体现得更完美。 2、继承 49 / 81 当一种事物甲完全是另一种事物乙的特例 ,那么,一般地,类甲只是比类乙多出一些成员变量 /对象与成员方法,称为类甲继承类乙,类甲称为子类,类乙称为父类。 父类也称为基类、超类,子类也称为导出类、派生类。 显然编写子类就没有必要重复书写父类中乙有的代码部分,这是 OOP 中最典型的代码重用。 3、多态 多态表示一个类的某种行为存在多种实现版本。简单的情况是在一个类中,给出多种不同的实现,复杂的情况是在多个子类中各自给出不同的实现。 * Java 与 C+的差异 本章小结 习题 1解释 Java语言的三种平台。 50 / 81 2解释支撑 Java 语言目标的三种主要技术。 3关于面向对象与面向过程的不同,从问题理解和问题表示两种角度,按照个人的理解和认 第一章 Java概述 语言出现的背景、影响及应用前景 一、背景 最近一年多来 ,在 Internet上出现的特别吸引人的事件就是Java语言和用 Java 编写的浏览器 HotJava。 1991年 ,SUN MicroSystem 公司的 JameGosling、 BillJoe 等人 ,为在电 视、控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名为 Oak 的软件 (即一种橡树的名字 ),但当时并没有引起人们的注意 ,直到 1994 年下半 年 ,Internet 的迅猛发展 ,环球信息网 WWW 的快速增长 ,促进了 Java语言研制的 进展 ,使得它逐渐成为 Internet上受欢迎的开发与编程语言 ,一些著名的计算机 公司纷纷购买了51 / 81 Java语言的使用权 ,如 MicroSoft、 IBM、 Netscape、 Novell、 Apple、 DEC、 SGI 等 ,因此 ,Java 语言被 美国的著名杂志PCMagazine评为 1995 年十大优秀科技产品 ,(计算机类就此一项入选 ),随之大量出现了用 Java 编写的 软件产品 ,受到工业界的重视与好评 ,认为 Java 是八十年代以来计算机界的一件 大事 ,微软总裁比尔 盖茨在悄悄地观察了一段时间后 ,不无感慨地说 :Java 是 长时间以来最卓越的程序设计语言 ,并确定微软整个软件开发的战略从 PC单机时 代向着以网络为中心的计算时代转移 ,而购买 Java则是他的重大战略决策的实施部 署。 因此 ,Java 的诞生必将对整个计算机产业发生深远的影响 ,对传统的计算模型 提出了新的挑战。 SUNMicroSystem 公司的总裁 ScottMcNealy 认为 Java 为Internet和 WWW开 辟了一个崭新的时代。 环球信息网 WWW的创始人 Berners-Lee说 :计算机事业发展的下一个浪潮就 是 Java,并且将很快会发生的 。 看来 ,使用 Java已成大势所趋 ! 52 / 81 MicroSoft和 IBM两大公司都计划在 Internet上销售用 Java编写的软件。 Apple、 HP、 IBM、 MicroSoft、 Novell、 SGI、SCO、 Tandem 等公司均 计划将 Java 并入各自开发的操作系统 ,而负责开发并推广 Java 技术的 SunSoft 公 司 (这是 SUN下属的一个子公司 ),将通过颁发许可证的办法来允许各家公司把 Java虚拟 机和 Java的 Applets类库嵌入他们开发的操作系统 ,这样各类开发人员 就能更容易地选择多种平台来使用 Java语言编程 ,不同的用户也就可以脱离 Web 浏览器来运行 Java 应用程序 ,这无疑是很受广大用户欢迎的 ,也为Java 语言的应 用开拓了极为广阔的前景。 (当然 ,各类JavaOS 之间的兼容性必须得到重视 ,好在 JavaSoft 已保证将监督这种兼容性 )。 另外 ,由 JavaSoft 推出的完全用 Java编写的 Internet 上新型浏览器 HotJava, 比去年 alpha版更 为实用 ,不仅能编制动态的应用软件 ,而且能编制完整的成套桌 面应用软件 ,将来还会提供更多的能帮助编制动态应用软件的模块 ,显然 ,这也是 为 Java的应用提供了有力的例证。 53 / 81 今年 6 月 7 日 ,由 SUN 公司和台湾经济事务部信息发展局、台湾信息技术研 究所等单位牵头 ,成立了一个 Java 联盟 ,参加的有 22 个在台湾相当著名的计算 机公司 ,并在台北建立一个 Java 开发中心 ,在新竹建立一个 Java 语言实 验室, 以掀起台湾开发与应用 Java语言的热潮。 香港则在今年 4月就举行了全岛的 Java杯比赛 ,在计算机界掀起了学习 Java 的热潮 (尤其是在大学生们中 ,出现了一批Java迷 )。 有人预言 :Java 将是网络上的 世界语 ,今后所有的用其他语言编写的软 件统统都要用 Java语言来改写。 二、 Java语言对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司节能降耗活动方案
- 公司组织KTV唱歌活动方案
- 公司网络经营活动方案
- 公司福利旅行活动方案
- 公司每月团聚活动方案
- 公司节日互动活动方案
- 公司组织娱乐活动方案
- 公司每日员工活动方案
- 公司组织去爬山活动方案
- 公司班组趣味活动方案
- 2023风光互补路灯设计方案
- 2023年山东省夏季普通高中学业水平合格考试会考生物试题及参考答案
- 2024年山东省青岛市中考英语试卷附答案
- 2023-2024学年山东省临沂市兰山区八年级(下)期末数学试卷(含答案)
- 材料力学(山东联盟-中国石油大学(华东))智慧树知到期末考试答案章节答案2024年中国石油大学(华东)
- 江西省南昌二中心远教育集团九湾学校2023-2024学年八年级下学期期末考试物理试题
- 深入理解Nginx(模块开发与架构解析)
- MOOC 中国文化概论-华南师范大学 中国大学慕课答案
- 初中人教版八年级下册期末物理真题模拟试卷经典套题
- JBT 11699-2013 高处作业吊篮安装、拆卸、使用技术规程
- 家长会课件:初中七年级家长会课件
评论
0/150
提交评论