1、1996年5月,第一界JavaOne大会在旧金山召开。比尔比尔盖茨:盖茨:“Java是长时是长时间以来最卓越的程序设计间以来最卓越的程序设计语言语言。”万维网万维网www的创始人的创始人Tim Berners-Lee:“计算机计算机事业发展的下一个浪潮就事业发展的下一个浪潮就是是Java,并且将很快会发生并且将很快会发生的。的。”SUNMicrosystem公司的总裁公司的总裁ScottMcNealy认为:认为:“Java为为Internet和和WWW开辟了一个崭新的时代开辟了一个崭新的时代。”工业界预言:工业界预言:“Java语言的出现,将会语言的出现,将会引起一场软件革命。引起一场软件革命
2、。”有人预言:有人预言:“Java将是网络上的将是网络上的世界世界语语,今后所有的用其他语言编写的软,今后所有的用其他语言编写的软件统统都将要用件统统都将要用Java语言来改写。语言来改写。”嵌入式技术(如嵌入式设备、移动通讯设备、手持嵌入式技术(如嵌入式设备、移动通讯设备、手持式设备、测试仪器等);式设备、测试仪器等);基于基于Application/AppletApplication/Applet、JavaBeanJavaBean的的PCPC应用;应用;基于基于CORBA/RMICORBA/RMI的分布式应用、的分布式应用、ServletServlet、JSP JSP 实现实现电子商务电子
3、商务电子现金、电子支票和智能现金卡等;电子现金、电子支票和智能现金卡等;基于基于EJBEJB的的Java2Java2企业级信息系统(如企业级信息系统(如ERPERP,CRMCRM),),SCMSCM等解决方案设计(等解决方案设计(JavaJava服务器端服务框架的规服务器端服务框架的规范)。访问目录服务所需的范)。访问目录服务所需的JNDI JNDI(Java Naming Java Naming And Directory InterfaceAnd Directory Interface);支持分布式事务的);支持分布式事务的JTSJTS(Java Transaction ServiceJa
4、va Transaction Service)等。)等。JavaME(JavaMicroEdition),主要应用于),主要应用于嵌入是系统开发,如手机和嵌入是系统开发,如手机和PDA的编程;的编程;JavaSE(JavaStandardEdition),针对桌面),针对桌面计算机开发(主要有计算机开发(主要有JavaApplet-网页中内网页中内嵌的小程序及嵌的小程序及JavaApplication-应用程序);应用程序);JavaEE(JavaEnterpriseEdition),主要用),主要用于分布式的网络程序的开发,如电子商务网站于分布式的网络程序的开发,如电子商务网站和和ERP系统
5、。(主要有系统。(主要有JDBC、CORBA、EJB、JavaServlets、JSP以及对以及对XML的支持)。的支持)。(注:(注:2017年年8月,月,Oracle(甲骨文)决定将(甲骨文)决定将JavaEE移交给开源组织,最后移交给开源组织,最后Eclipse基金会基金会接手更名为接手更名为JakartaEE(雅加达)。)(雅加达)。)1、简单性、简单性Java的的风风格格类类似似于于C+,因因而而C+程程序序员员是是非非常常熟熟悉悉的。的。C+程序程序员员可可以以很很快快就就掌掌握握Java编编程程技技术。术。Java摒摒弃弃了了C+中中容容易引易引发发程程序序错错误误的的地地方,方
6、,如如指指针针和和内内存存管管理;略去了运算符理;略去了运算符重载、多重继承等模糊的概念重载、多重继承等模糊的概念2、面向对象、面向对象Java语言的设计完全是面向对象的,它不支持语言的设计完全是面向对象的,它不支持类似类似C语言那样的面向过程的程序设计技术。语言那样的面向过程的程序设计技术。封装性实现了模块化和信息隐藏,继承性实现封装性实现了模块化和信息隐藏,继承性实现了代码的复用,所有元素都要通过类和对象来了代码的复用,所有元素都要通过类和对象来访问。访问。3、鲁棒性(、鲁棒性(Robustness:健壮性):健壮性)Java致力于检查程序在编译和运行时的错误。致力于检查程序在编译和运行时
7、的错误。类型检查帮助检查出许多开发早期出现的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。还实现了真数组,避免了覆盖数据的可能。自动垃圾收集避免了管理内存时容易出现的许自动垃圾收集避免了管理内存时容易出现的许多错误。多错误。4、安全性、安全性Java语言指针删除了指针和内存等语言指针删除了指针和内存等C+功能,功能,避免了非法内存操作;避免了非法内存操作;当当Java运行时,严格检查访问数据的权限。运行时,严格检查访问数据的权限。5、结、结构构中中立立Java解释器生
8、成与体系结构无关的字节解释器生成与体系结构无关的字节码的文件格式,只要提供相应的码的文件格式,只要提供相应的Java运运行环境,便可以在任何类型的处理器上行环境,便可以在任何类型的处理器上运行。运行。6、可移植性、可移植性Java语言的基本数据类型的范围是确定的,不语言的基本数据类型的范围是确定的,不依赖于具体平台的实现;依赖于具体平台的实现;Java语言环境本身可移植;语言环境本身可移植;Java类库也支持可移植性类库也支持可移植性。7、解释执行、解释执行Java解释器能直接对解释器能直接对Java字节码解释执行,字字节码解释执行,字节码本身携带了许多编译信息,使得连接过程节码本身携带了许多
9、编译信息,使得连接过程更加简单。更加简单。8、高性能、高性能Java字节码可以极快地转换成机器码,由于字节码可以极快地转换成机器码,由于Java字节码格式的设计就是针对着机器码的转字节码格式的设计就是针对着机器码的转换,所以实际转换相当简便,自动寄存器分配换,所以实际转换相当简便,自动寄存器分配与编译器对字节码的一些优化使之生成高质量与编译器对字节码的一些优化使之生成高质量的代码。的代码。9、多线程Java提供的多线程功能使得在一个程序里可同时执行多个小任务。线程有时也称小进程是一个大进程里分出来的小的独立的进程。因为Java实现的多线程技术,所以比C和C+更键壮。多线程带来的更大的好处是更好
10、的交互性能和实时控制性能。10、动态性、动态性Java的的动态性是其面向对象设计方法的扩展。动态性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,它允许程序动态地装入运行过程中所需要的类,而不影响使用这一类库的应用程序的执行。而不影响使用这一类库的应用程序的执行。硬件硬件操作系统操作系统应用程序应用程序用户用户USER编译后执行的高级语言程序的问题编译后执行的高级语言程序的问题问问题题Program为特定的平台为特定的平台编写的程序在编写的程序在其他平台上无其他平台上无法使用法使用解解决决办办法法解释器解释器解释器解释器解释器解释器Program为解决这个为解决这个问题,
11、我们问题,我们使用了使用了“解解释器释器”。这样在解释器的帮助下,可以编写一次代码而在不同的平台上运行这样在解释器的帮助下,可以编写一次代码而在不同的平台上运行解释执行环境解释执行环境硬件硬件操作系统操作系统高级语言程序高级语言程序用户用户USER解释器解释器编译型源程序编译型源程序字节码程序字节码程序Java源程序源程序可执行程序可执行程序EXE裸机裸机操作系统操作系统解释器解释器编译编译连接连接编译编译执行执行解释解释执行执行.java.class1、全局变量、全局变量Java程序中不能定义全局变量,只能通过类中程序中不能定义全局变量,只能通过类中的公用、静态的变量实现全局变量。的公用、静
12、态的变量实现全局变量。2、无条件转移指令、无条件转移指令Java不支持不支持goto语句,而是通过例外处理语句语句,而是通过例外处理语句try、catch、final等来代替,来处理遇到错误等来代替,来处理遇到错误时的跳转情况。时的跳转情况。3、指针、指针Java中不支持指针操作,避免了中不支持指针操作,避免了C/C+中常因中常因为指针操作引起的不可预知的错误。为指针操作引起的不可预知的错误。4、内存管理、内存管理Java中所有的数据结构都是对象,通过运算符中所有的数据结构都是对象,通过运算符new分配内存并得到对象的使用权,之后分配内存并得到对象的使用权,之后Java自动进行管理并进行垃圾回
13、收,更好利用系统自动进行管理并进行垃圾回收,更好利用系统资源。资源。5、数据类型的一致性、数据类型的一致性Java中对某种数据类型总是分配固定的位数,中对某种数据类型总是分配固定的位数,保证了保证了Java的平台无关性和可移植性。的平台无关性和可移植性。6、类型转换、类型转换Java中系统对对象处理进行相容性检查,防止中系统对对象处理进行相容性检查,防止不安全的转换。不安全的转换。7、头文件、头文件Java中不支持头文件,类成员的类型声明和访中不支持头文件,类成员的类型声明和访问权限都封装在一个类中,问权限都封装在一个类中,Java中用中用import语语句与其他类进行通信来使用他们的方法。句
14、与其他类进行通信来使用他们的方法。8、结构和联合、结构和联合Java中不支持结构和联合类型,所有的内容都中不支持结构和联合类型,所有的内容都封装在类中。封装在类中。9、预处理、预处理Java不支持宏定义,以关键字不支持宏定义,以关键字final声明常量。声明常量。JDKSUN推出的免费的推出的免费的Java开发工具集开发工具集(JavaDevelopersKits,简称,简称JDK);需使用大量的命令行工具,在需使用大量的命令行工具,在Windows环境下环境下要打开要打开DOS,敲入正确的命令行参数。,敲入正确的命令行参数。1、为什么选择标准的、为什么选择标准的JDK来开发?来开发?因为因为
15、JavaSDK是免费的;是免费的;它是最新的,标准的它是最新的,标准的JDK支持所有的支持所有的Java语言的最新的特性;语言的最新的特性;它能给您一个百分之百的纯它能给您一个百分之百的纯Java开发环开发环境。境。2、JDK简介简介javac:Java语言编译器,输出结果为语言编译器,输出结果为java字节码;字节码;java:Java字节码解释器;字节码解释器;jdb:Java调试器;调试器;javadoc:API文档生成器;文档生成器;javapDisassembeler:Java字节码分解程字节码分解程序,本程序返回序,本程序返回Java程序的成员变量及程序的成员变量及方法等信息。方法
16、等信息。javaprof资源分析工具,用于分析资源分析工具,用于分析Java程程序在运行过程中调用了哪些资源,包序在运行过程中调用了哪些资源,包括类和方法的调用次数和时间,以及各括类和方法的调用次数和时间,以及各数据类型的内存使用情况等。数据类型的内存使用情况等。javahC代码处理工具,用于从代码处理工具,用于从Java类调类调用用C+代码代码;javaAppletViewer小应用程序浏览工具,小应用程序浏览工具,用于测试并运行用于测试并运行Java小应用程序;小应用程序;javaDebuggerAPIJava调试工具;调试工具;APIPrototypeDebuggerJava调试工具调试
17、工具原型原型;Java类库类库(包括包括I/O类库、用户界面类库、类库、用户界面类库、网络类库等网络类库等);3、JDK的安装的安装JDK的下载地址是:http:/ 设置JAVA_HOME变量图1-7 设置PATH变量编辑:编辑:一般编辑一般编辑java程序用程序用UltraEdit来配合,形来配合,形成成.java文件文件编译:用编译:用javacjavac命令命令 *.java .java *.class.class(注意是类文件不是(注意是类文件不是*.exe.exe文件)文件)解释执行解释执行:用用javajava命令命令(1)代码的装入(通过类装载器来实现);)代码的装入(通过类装载
18、器来实现);(2)代码的检验;)代码的检验;(3)代码的执行。)代码的执行。JavaApplication以以main()方法作为程序入口,由方法作为程序入口,由Java解释器加解释器加载执行。载执行。JavaApplet没有没有main()方法作为程序入口,由浏览器或方法作为程序入口,由浏览器或appletviewer加载执行。加载执行。publicclassHelloWorldApp/anApppublicstaticvoidmain(Stringargs)System.out.println(HelloWorld!);类定义类定义Java程序的基本组成部分是类程序的基本组成部分是类(cl
19、ass),如,如本例中的本例中的HelloWorldApp类:类:public class HelloWorldApp public表示这是一个公共类,表示这是一个公共类,java程序中程序中可以定义多个类,但是最多只能有一个可以定义多个类,但是最多只能有一个公共类。公共类。main()方法方法JavaApplication程序的入口是程序的入口是main()方方法。它有固定的书写格式:法。它有固定的书写格式:public static void main(String args)Public表示访问权限,表明所有的类都可以使用这一表示访问权限,表明所有的类都可以使用这一方法;方法;stati
20、c指明该方法是一个类方法,它可以通过类名直指明该方法是一个类方法,它可以通过类名直接调用接调用;void则指明则指明main()方法不返回任何值方法不返回任何值;括号中的括号中的Stringargs是传递给是传递给main()方法的参方法的参数,名为数,名为args,是类,是类String的一个实例,参数的一个实例,参数可以是一个或多个,可以用可以是一个或多个,可以用“类名类名参数名参数名”来来指定,多个参数间用逗号分隔。指定,多个参数间用逗号分隔。public class HelloWorldApp public static void main(String args)程序内容程序内容由方
21、法体实现程序要完成的功能,方法体由一由方法体实现程序要完成的功能,方法体由一条条语句组成,本例中只有一条语句:条条语句组成,本例中只有一条语句:System.out.println(HelloWorld!);注释注释与与C+相同,一行中相同,一行中/后的内容为注释,后的内容为注释,/*和和*/中的内容也是注释,例如:中的内容也是注释,例如:publicclassHelloWorldApp/公共类公共类publicstaticvoidmain(Stringargs)/*这是这是主方法主方法*/将以上文件编辑好之后存盘,文件名必将以上文件编辑好之后存盘,文件名必须与类名相同,文件后缀为须与类名相同
22、,文件后缀为.java。路径。路径设定为设定为C:javawork下。即:下。即:C:javaworkHelloWorldApp.java在在命令行中使用命令行中使用javac命令命令,例如例如:C:javaworkjavac HelloWorldApp.java源文件名为源文件名为HelloWorldApp.java,注意:文件名必须,注意:文件名必须与公共类名相同;由与公共类名相同;由javac编译器编译源程序,产生字编译器编译源程序,产生字节 码 文 件节 码 文 件(.c l a s s 文 件文 件)。本 例 中 产 生。本 例 中 产 生HelloWorldApp.class文件。
23、文件。在在命令行中使用命令行中使用java命令命令,例如例如:C:javaworkjava HelloWorldApp 此命令将启动此命令将启动Java虚拟机,虚拟机,由由java解释器解释执行。解释器解释执行。执行结果就是在屏幕上打印出执行结果就是在屏幕上打印出 HelloWorld!单击单击开始开始依次选择依次选择程序程序-附件附件-记事本记事本/这是名称为“HelloWorld.java”的简单程序import java.io.*;class HelloWorld public static void main(String args)System.out.println(“欢迎访问 J
24、ava 世界!“);单击单击开始开始依次选择依次选择程序程序-附件附件-命令提示符命令提示符进入程序所进入程序所保存的目录保存的目录输入命令编译输入命令编译HelloWorld输入命令执行输入命令执行HelloWorld 输出输出结果结果命名命名如果如果.java文件包含一个文件包含一个public类,它必类,它必需按该类名命名。需按该类名命名。类个数类个数一个源文件中最多只能有一个一个源文件中最多只能有一个public类。类。其它类的个数不限。其它类的个数不限。结构package语句语句/0或或1个,必须放在文件开始个,必须放在文件开始import语句语句/0或多个,必须放在所有类定或多个,
25、必须放在所有类定义之前义之前publicclassDefinition/0或或1个个/文件名必须与该类的类名完全相同文件名必须与该类的类名完全相同classDefinition/0或多个或多个interfaceDefinition/0或多个或多个 package javawork.helloworld;import java.awt.*;import javawork.newcentury;public class HelloWroldApp /01个个 class TheFirstClass class TheSecondClass interface TheFirstInterface 假
26、设假设d:test目录下面有两个类目录下面有两个类A、B,其中,其中A是主类。是主类。1、用文本编辑器编写一个清单文件:、用文本编辑器编写一个清单文件:Mymoon.mf。内容如下:内容如下:Manifest-Version:1.0Main-Class:ACreated-By:1.2.2(SunMicrosystemsInc.):各行中间要有空格。保存到各行中间要有空格。保存到d:test下下2、生成、生成jar文件。文件。D:testjarcfmw.jarMymoon.mfA.classB.class完成以后就会生成完成以后就会生成w.jar的文件了,可以放到任何地的文件了,可以放到任何地方
27、运行。方运行。Eclipse:IBM公司;公司;MyEclipse:Genuitec公司;公司;NetBeans:Oracle(甲骨文)公司;(甲骨文)公司;主流集成开发工具主流集成开发工具1.5Eclipse集成开发环境集成开发环境可以从可以从http:/www.eclipse.org/downloads/eclipse-packages/免费下载免费下载Eclipse软件,下载时选择软件,下载时选择“EclipseIDEforJavaDevelopers”,再根据你的操作系统选择,再根据你的操作系统选择32位或位或64位版本。位版本。演示演示Eclipse使用方法使用方法Eclipse的常
28、见设置问题如下的常见设置问题如下:1.问题:问题:Eclipse为什么自己总是会弹出错误对话框:为什么自己总是会弹出错误对话框:Aninternalerroroccurredduring:Pollingnewsfeeds?解决方法:解决方法:window菜单菜单perferencesgeneralNews找到找到Enableautomaticnewspolling,然后把对勾取消就行了。,然后把对勾取消就行了。2.问题:如何设置编辑器字体大小?问题:如何设置编辑器字体大小?解决方法:解决方法:window菜单菜单perferencesgeneralAppearenceColorsandFont
29、s选选择择JavaEditorTextFont,点击,点击“Edit.”按钮,就弹出了字按钮,就弹出了字体设置对话框了。体设置对话框了。3.问题:问题:Eclipse窗口如何恢复到初始格局样子?窗口如何恢复到初始格局样子?解决方法:解决方法:可以选择菜单可以选择菜单Window-Perspective-ReSetPerspective恢复原始视图。恢复原始视图。1.6.1System类与标准类与标准I/O流对象流对象System类是类是java.lang包中的一个常用类,包含了包中的一个常用类,包含了很多系统级属性和方法,其中有三个常用的标准很多系统级属性和方法,其中有三个常用的标准I/O流流
30、对象:对象:(1)System.in:标准输入对象,默认对应于键盘。:标准输入对象,默认对应于键盘。(2)System.out:标准输出对象,默认对应于显示:标准输出对象,默认对应于显示器。器。(3)System.err:标准错误输出对象,默认对应于显:标准错误输出对象,默认对应于显示器。示器。16.2使用使用println()和和print()方法输出方法输出System.out和和System.err实际上是实际上是PrintStream类(类(在在java.io包中)的对象,包中)的对象,PrintStream类有两个重要的类有两个重要的方法方法println()和和print()方法,
31、可以方便地进行各种类方法,可以方便地进行各种类型数据的输出,二者的区别是型数据的输出,二者的区别是println()在输出的最后在输出的最后添加了一个换行,而添加了一个换行,而print()不在最后添加换行。不在最后添加换行。例如:例如:System.out.print(Hello);System.out.println(java!);System.out.println(Letsgetstarted!);输出如下:输出如下:Hellojava!Letsgetstarted!16.3使用使用read()方法从键盘输入字符方法从键盘输入字符System.in是是InputStream类(在类(在
32、java.io包中)的对象,有包中)的对象,有一个一个read()方法,可以从键盘输入一个字符,方法,可以从键盘输入一个字符,read()方法返回方法返回0到到255范围内的范围内的int字节值。字节值。【实例实例1-1】使用使用read()方法从键盘输入字符方法从键盘输入字符public class ReadDemo public static void main(String args)char ch;System.out.print(请输入一个字符:请输入一个字符:);try ch=(char)System.in.read();System.out.println(ch);catch(E
33、xception e)e.getMessage();16.4使用使用Scanner类进行键盘输入类进行键盘输入Scanner类(在类(在java.util包中)是包中)是JDK1.5新增的一个类,新增的一个类,它可以读取用户在命令行输入的各种数据类型。它可以读取用户在命令行输入的各种数据类型。【实例实例1-2】使用使用Scanner类进行键盘输入类进行键盘输入import java.util.Scanner;/引入引入Scanner类类public class ScannerDemo public static void main(String args)Scanner reader=new
34、Scanner(System.in);/创建创建Scanner类对象类对象System.out.print(请输入一个字符串:请输入一个字符串:);String s=reader.nextLine();/从键盘接收一行字符串从键盘接收一行字符串System.out.print(请输入一个整数:请输入一个整数:);int i=reader.nextInt();/从键盘接收一个整数从键盘接收一个整数System.out.print(请输入一个浮点数:请输入一个浮点数:);double d=reader.nextDouble();/从键盘接收一个浮点数从键盘接收一个浮点数System.out.pri
35、ntln(i=+i+d=+d+s=+s);reader.close();n使用已有的软件模块创建程序使用已有的软件模块创建程序Never reinventing the wheel!nJava中可用的软件模块:中可用的软件模块:类库中的类,你自己创建的类,其他人创建的类类库中的类,你自己创建的类,其他人创建的类n编写清晰的代码,不要卖弄技巧!编写清晰的代码,不要卖弄技巧!研读优秀软件的源代码是成为高手与牛人研读优秀软件的源代码是成为高手与牛人的捷径!只不过这条路并不好走。的捷径!只不过这条路并不好走。n 有可能的话研读有可能的话研读JDK的源代码,的源代码,可以从中学到很多东西。可以从中学到很多东西。n多上机编程实践多上机编程实践学习学习Java很有很有钱钱途途。n多看书上网多看书上网n有机会参加实际项目和参加各种培训有机会参加实际项目和参加各种培训