已阅读5页,还剩963页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,目录,第1章Java环境及配置第2章Java基本语法第3章类和接口第4章JavaApplet第5章Java图形处理第6章Java用户界面技术第7章异常、事件和多线程机制第8章输入输出技术第9章Java数据库技术第10章Java安全技术第11章Java网络技术(一)第12章Java网络技术(二)第13章Servlet技术第14章Java读写XML技术,第1章Java环境及配置,1.1Java概述1.2Java语言的特点1.3Java应用分类1.4JDK包的下载与安装1.5Java环境配置1.6例子程序习题,1.1Java概述,Java是一种编程语言,它提供了一个同时用于程序开发、应用和部署的环境。Java语言主要定位于网络编程,使得程序可以最大限度地利用网络资源。,1.2Java语言的特点,1.跨平台性所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。,而在Java语言中,Java自带的虚拟机很好地实现了跨平台性。Java源程序代码经过编译后生成二进制的字节码是与平台无关的,但是可被Java虚拟机识别的一种机器码指令。Java虚拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使得Java语言具备跨平台性。,2.面向对象面向对象是指以对象为基本粒度,其下包含属性和方法。对象的说明用属性表达,而通过使用方法来操作这个对象。面向对象技术使得应用程序的开发变得简单易用,节省代码。Java是一种面向对象的语言,也继承了面向对象的诸多好处,如代码扩展、代码复用等。,3.安全性安全性可以分为四个层面,即语言级安全性、编译时安全性、运行时安全性、可执行代码安全性。语言级安全性指Java的数据结构是完整的对象,这些封装过的数据类型具有安全性。编译时要进行Java语言和语义的检查,保证每个变量对应一个相应的值,编译后生成Java类。运行时Java类需要类加载器载入,并经由字节码校验器校验之后才可以运行。Java类在网络上使用时,对它的权限进行了设置,保证了被访问用户的安全性。,4.多线程多线程在操作系统中已得到了最成功的应用。多线程是指允许一个应用程序同时存在两个或两个以上的线程,用于支持事务并发和多任务处理。Java除了内置的多线程技术之外,还定义了一些类、方法等来建立和管理用户定义的多线程。,5.简单易用Java源代码的书写不拘泥于特定的环境,可以用记事本、文本编辑器等编辑软件来实现,然后将源文件进行编译,编译通过后可直接运行,通过调试则可得到想要的结果。,1.3Java应用分类,1.应用程序典型的通用程序可以在具备Java运行环境的设备中独立运行,它又分为:GUI应用程序:即图形用户界面程序,可实现丰富的输入界面和输出显示。命令行程序:无需界面,只需在命令行下运行,运行结果只在后台发生变化,可以将输出存放到文件中。嵌入式应用程序:Java语言的平台独立性决定了它可以嵌入到不同的设备中,且只需具备必要的运行环境即可。,2.Servlets服务器端应用程序服务器端的应用程序用来收集客户端的数据输入,对数据进行处理之后,返回相应的响应给客户。它主要用来实现与客户端的交互。,3.Applets小应用程序Applets应用于网络上,嵌入在HTML网页中,支持Java的浏览器都可以对它进行解释并运行。通常通过一个HTML标签来识别并运行Applets。小应用程序的类在服务器端,当浏览器显示网页时,它随之下载到本地,由本地的浏览器载入运行。,1.4JDK包的下载与安装,JavaDevelopKit简称为JDK,是Sun公司免费发行的软件包,可以从Sun网站免费下载,也可以从其它国内地址下载。JDK版本从1.02开始,目前版本发展到1.4,其中高级版本对低级版本实现向下兼容。运用这个软件包,就可以对Java源程序进行编译和运行。本书中下载使用的JDK包为j2sdk-1_4_0_012-windows-i586.exe。下载后双击图标,即可进行安装,默认的安装目录为C:j2sdk1.4.0_01。本书作者将安装目录改为D:j2sdk1.4.0_01。,1.5Java环境配置,JDK包安装完成后,需要设置环境变量。用鼠标右键单击桌面上的图标“我的电脑”,选择“属性”项,出现标题为“系统特性”的对话框,点击“高级”标签,可以看见有一个“环境变量”按钮,如图1.1所示。,图1.1“系统特性”对话框,单击“环境变量”按钮,可以看见本机环境变量,如图1.2所示。上面为用户变量,下面为系统变量,随着操作系统或用户环境的不同,变量名、值有所不同。这里需要修改三个用户变量:include、lib和path,分别将JDK包安装之后的相应路径包含到这三个用户变量中。,图1.2“环境变量”对话框,选中include变量,单击“编辑”按钮,弹出标题为“编辑用户变量”的对话框,如图1.3所示。在变量值一栏的最后添加“;D:j2sdk1.4.0_01include”,“;”表示与前面的各项隔开,后面的路径是JDK包的安装路径下的include目录。图1.3为作者修改include变量的情况,注意你的安装路径可能与作者的有所不同,要以你的安装路径为基准进行修改。,图1.3编辑include变量,选中lib变量,单击“编辑”按钮,弹出标题为“编辑用户变量”的对话框,如图1.4所示。在变量值一栏的最后添加“;D:j2sdk1.4.0_01lib”,“;”表示与前面的各项隔开,后面的路径是JDK包的安装路径下的lib目录。图1.4为作者修改lib变量的情况,注意你的安装路径可能与作者的有所不同,要以你的安装路径为基准进行修改。,图1.4编辑lib变量,选中path变量,单击“编辑”按钮,弹出标题为“编辑用户变量”的对话框,如图1.5所示。在变量值一栏的最后添加“;D:j2sdk1.4.0_01bin”,“;”表示与前面的各项隔开,后面的路径是JDK包的安装路径下的bin目录。图1.5为作者修改path变量的情况,注意你的安装路径可能与作者的有所不同,同样要以你的安装路径为基准进行修改。,图1.5编辑path变量,1.6例子程序,【例1.1】源程序名称为HelloWorld.java,命令行提示符下输出字符串“HelloWorld”。源代码如下:/程序文件名称为HelloWorld.javapublicclassHelloWorldpublicstaticvoidmain(Stringargs)System.out.println(HelloWorld);,用记事本或者专用的编辑工具如EditPlus等进行编辑,并将文件存为HelloWorld.java。建议使用像EditPlus这样的编辑软件,可使得代码更加清晰且风格良好。运行“开始”菜单程序附件命令提示符,载入命令行程序,在命令行状态下,进入源程序所在的目录,图1.6所示的例子程序的目录在“E:_WorkJavasample”下,然后键入命令“javacHelloWorld.java”。若编译不通过,会产生错误提示。若编译通过,则没有任何提示,同时进入命令行等待状态,如图1.6所示。这时,命令行虽然没有提示,但在源程序的路径下生成一个新的文件为HelloWorld.class。这个.class文件就是编译后生成的类文件,运行此文件,需在命令行状态中键入命令“javaHelloWorld”,然后按回车键,此时程序就会运行并输出“HelloWorld”。输出完毕,立即退出程序,进入命令行等待状态,如图1.7所示。,图1.6编译源程序HelloWorld,图1.7运行HelloWorld应用程序,这里用到的命令Javac和Java都是JDK软件包自带的。从JDK安装路径的bin目录下可以看到javac.exe,这是编译程序,源程序编译通过后就生成.class文件;而Java.exe就是载入类的运行程序,运行时根据源程序的指令要求产生正确的输出或结果。如果没有进行环境配置,直接编译或者运行Java源程序,系统会提示找不到这些命令,所以必须进行环境配置后再使用。,【例1.2】小应用程序的例子。输出“HelloWorld!”,如图1.8所示。源程序代码如下:/程序文件名称为HelloApplet.javaimportjava.awt.Graphics;importjava.applet.Applet;publicclassHelloAppletextendsAppletpublicvoidpaint(Graphicsg)g.drawString(HelloWorld!,50,25);,小应用程序代码书写和编译完成后,无法独立运行,需要一个载体或者容器。下面的HTML网页代码就是小应用程序载入的容器。,HTMLTestPage,HelloAppletwillappearbelowinaJavaenabledbrowser.,图1.8Applet显示“HelloWorld!”,习题,1.简述Java的特点。2.简述Java的分类情况。3.进行Java环境的安装和配置。4.编写应用程序,屏幕上输出“欢迎来到Java世界!”。5.编写Applet,输出“欢迎来到Java世界!”。,第2章Java基本语法,2.1Java程序的构成2.2数据类型、变量和常量2.3运算符和表达式2.4流程控制2.5数组的使用习题,2.1Java程序的构成,2.1.1逻辑构成Java源程序逻辑构成分为两大部分:程序头包的引用和类的定义。1.程序头包的引用主要是指引用JDK软件包自带的包,也可以是自己定义的类。引用之后程序体中就可以自由应用包中的类的方法和属性等。,2.类的定义Java源程序中可以有多个类的定义,但必须有一个主类,这个主类是Java程序运行的入口点。在应用程序中,主类为包含main方法的类;在Applet中,主类为用户自定义的系统Applet类的扩展类。在Java源程序中,主类的名字同文件名一致。类的定义又包括类头声明和类体定义。类体中包括属性声明和方法描述。下面来看一个例子,其中斜体表示的语句行为主类类头,主类类头下面从大括号“”开始到“”结束的部分称为主类类体。,【例2.1】下面是一个应用程序,也是一个Applet,既可以在命令行下运行,也可以嵌入到HTML网页中用appletviewer命令运行。运行时在界面上的第一个文本框中输入你的名字,按回车键后,在第二个文本框中会显示“XXX,欢迎你来到Java世界!”,运行结果如图2.1所示。,actionPerformed方法,main主方法,图2.1程序界面,2.1.2物理构成Java源程序物理上由三部分构成,分别为语句、块和空白。(1)语句指一行以分号“;”结束的语句。(2)块指用括号对界定的语句序列,块可以嵌套使用。(3)空白指语句之间、块内部或者块之间的空白行。空白不影响Java源程序的编译和运行,适当地运用空白,可以形成良好的代码风格。,在例1.1中,LabellblName;TextFieldtxtName;TextFieldtxtDisp;都是语句,而lblName=newLabel(请输入您的名字:);txtName=newTextField(8);txtDisp=newTextField(20);add(lblName);add(txtName);add(txtDisp);txtName.addActionListener(this);是块,语句之间、块之间或块内部的空行都为空白。,2.1.3注释语句注释语句主要用来进行一些说明,或者标记一些无用的程序语句。有两种注释方法,行注释为以/开始的行;块注释以/*开始和*/结束,Java编译器忽略注释后的程序语句或说明。例如,下面的语句就是注释语句用来说明程序文件名称的。/程序文件名称为WelcomeApplet.java上述的语句注释可以更改为:/*程序文件名称为WelcomeApplet.java*/或/*程序文件名称为WelcomeApplet.java*/,2.1.4标识符、关键字和转义符在Java语言中,标识符是赋予变量、类和方法等的名称。标识符由编程者自己指定,但需要遵循一定的语法规范:(1)标识符由字母、数字、下划线(_)、美元符号($)组成,但美元符号用得较少。(2)标识符从一个字母、下划线或美元符号开始。(3)Java语言中,标识符大小写敏感,必须区别对待。(4)标识符没有最大长度的限制,但最好表达特定的意思。(5)标识符定义不能是关键字。,关键字又称保留字,是指Java语言中自带的用于标志数据类型名或者程序构造名等的标识符,如public、double等。转义符是指一些有特殊含义的、很难用一般方式表达的字符,如回车、换行等。所有的转义符以反斜线()开头,后面跟着一个字符来表示某个特定的转义符,如表2.1所示。,表2.1转义符,2.2数据类型、变量和常量,2.2.1数据类型Java编程语言定义了八种基本的数据类型(见表2.2),共分为四类:整数类(byte、short、int、long)、文本类(char)、浮点类(double、float)和逻辑类(boolean)。,表2.2Java的数据类型,1.整数类(1)采用三种进制十进制、八进制和十六进制。2十进制值是2;077首位的0表示这是一个八进制的数值;0 xBAAC首位的0 x表示这是一个十六进制的数值。(2)具有缺省int。(3)用字母“L”和“l”定义long。(4)所有Java编程语言中的整数类型都是带符号的数字。,2.文本类(1)代表一个16bitUnicode字符。(2)必须包含用单引号()引用的文字。(3)使用下列符号:a一个字符。t-一个制表符。u?-一个特殊的Unicode字符,?应严格使用四个十六进制数进行替换。,3.浮点类默认为double类型,如果一个数字包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数字为浮点数。,4.逻辑类boolean数据类型有两种值:true和false。例如:booleanflag=true;上述语句声明变量flag为boolean类型,它被赋予的值为true。,2.2.2变量与常量常量是指整个运行过程中不再发生变化的量,例如数学中的=3.1415,在程序中需要设置成常量。而变量是指程序的运行过程中发生变化的量,通常用来存储中间结果,或者输出临时值。变量的声明也指变量的创建。执行变量声明语句时,系统根据变量的数据类型在内存中开辟相应的存储空间并赋予初始值。变量有一个作用范围,超出它声明语句所在的块就无效。,下面看一个使用各种类型变量声明并改变的示例。程序中pi为常量,s1、i1、l1、ch1、f1、d1、b1为全局变量,可以在方法change中发生改变,然后在方法main中输出。而s2、i2、l2、ch2、f2、d2、b2是方法main的局部变量,它们的作用范围只局限于方法main中。【例2.2】测试不同数据类型的变量,程序输出如图2.2所示。源程序代码如下:/程序文件名称为SetVariable.javapublicclassSetVariable/全局变量,staticdoublepi=3.141592654;/数学常量staticshorts1;staticinti1;staticlongl1;staticcharch1;staticfloatf1;staticdoubled1;staticbooleanb1;publicstaticvoidmain(Stringargs),/局部变量shorts2=35;inti2=-32;longl2=34555L;charch2=A;floatf2=897.89F;doubled2=34.345;booleanb2=false;/输出常量System.out.println(数学常量pi=+pi);/输出局部变量,System.out.println(*局部变量*);System.out.println(短整型变量s2=+s2);System.out.println(整型变量i2=+i2);System.out.println(长整型变量l2=+l2);System.out.println(字符变量ch2=+ch2);System.out.println(浮点数类型f2=+f2);System.out.println(双精度型变量d2=+d2);System.out.println(布尔型变量b2=+b2);/调用方法修改全局变量的值,change();/输出全局变量的值System.out.println(*全局变量*);System.out.println(短整型变量s1=+s1);System.out.println(整型变量i1=+i1);System.out.println(长整型变量l1=+l1);System.out.println(字符变量ch1=+ch1);System.out.println(浮点数类型f1=+f1);System.out.println(双精度型变量d1=+d1);System.out.println(布尔型变量b1=+b1);,/方法:修改全局变量的值publicstaticvoidchange()s1=125;i1=88;l1=987654321L;ch1=B;f1=3.2590F;d1=-1.04E-5;b1=true;,图2.2变量输出结果,2.3运算符和表达式,Java常用的运算符分为五类:算术运算符、赋值运算符、关系运算符、布尔逻辑运算符、位运算符。位运算符除了简单的按位操作外,还有移位操作。按位操作返回布尔值。表达式是由常量、变量、对象、方法调用和操作符组成的式子。表达式必须符合一定的规范,才可被系统理解、编译和运行。表达式的值就是对表达式自身运算后得到的结果。根据运算符的不同,表达式相应地分为以下几类:算术表达式、关系表达式、逻辑表达式、赋值表达式,这些都属于数值表达式。,2.3.1算术运算符及算术表达式Java中常用的算术运算符如下:+加运算符-减运算符*乘运算符/除运算符%取模运算(除运算的余数)+增量运算符-减量运算符,【例2.3】测试运算符及表达式,程序输出如图2.3所示。源程序代码如下:/程序文件名称为NumberOper.javapublicclassNumberOperpublicstaticvoidmain(Stringargs)/变量初始化inta=30;intb=20;/定义结果变量intr1,r2,r3,r4,r5,r6,r7,r8,r9;/计算结果r1=a+b;,r2=a-b;r3=a*b;r4=a/b;r5=a%b;r6=a+;r7=b-;r8=+a;r9=-b;/输出结果System.out.println(a=+a+b=+b);/a,b的值System.out.println(a+b=+r1);System.out.println(a-b=+r2);,System.out.println(a*b=+r3);System.out.println(a/b=+r4);System.out.println(a%b=+r5);System.out.println(a+=+r6);System.out.println(b-=+r7);System.out.println(+a=+r8);System.out.println(-b=+r9);,图2.3程序输出结果,2.3.2关系运算符关系运算符用于比较两个数据之间的大小关系,关系运算表达式返回布尔值,即“真”或“假”。Java中的常用关系运算符如下:=等于!=不等于大于=大于等于b;r4=a=b;r6=ab=+r3);System.out.println(a=b=+r5);System.out.println(a右移不带符号右移右移运算符对应的表达式为xa,运算的结果是操作数x被2的a次方来除,左移运算符对应的表达式为xb;r2=ab=+r1);System.out.println(a10,则输出x的值,并提示结果正确,否则输出x=10,提示结果不正确。程序输出结果如图2.7所示。源程序代码如下:/程序文件名称为TestIf.javapublicclassTestIf/声明全局变量xstaticintx;publicstaticvoidmain(Stringargs)x=12;if(x10),System.out.println(x=+x+结果正确);elseSystem.out.println(x=10+结果不正确);change();System.out.println(修改x的值之后);if(x10)System.out.println(x=+x+结果正确);elseSystem.out.println(x=10+结果不正确);,/change方法:修改x的值publicstaticvoidchange()x=5;,图2.7程序输出结果,2.switch语句switch语句的基本格式为:switch(表达式1)case表达式2:语句或块2;break;case表达式3:语句或块3;break;case表达式4:语句或块4;break;default:语句或块5;break;,其中:(1)表达式1的值必须与整型兼容。(2)case分支要执行的程序语句。(3)表达式2、3、4是可能出现的值。(4)不同的case分支对应着不同的语句或块序列。(5)break表示跳出这一分支。,【例2.8】测试switch语句,当x=1、2、3时,分别打印1、2、3,x不为这三个值时,打印x的值。程序输出结果如图2.8所示。源程序代码如下:/程序文件名称为TestSwitch.javapublicclassTestSwitchpublicstaticvoidmain(Stringargs)/声明变量xintx;x=12;,System.out.println(x=12时打印的值);choose(x);x=3;System.out.println(x=3时打印的值);choose(x);/choose方法:switch语句结构publicstaticvoidchoose(intx)switch(x),case1:System.out.println(1);break;case2:System.out.println(2);break;case3:System.out.println(3);break;default:System.out.println(x);,图2.8程序输出结果,2.4.2for循环语句for循环语句实现已知次数的循环,其基本格式为:for(初始化表达式;测试表达式;步长)语句或块;,其执行顺序如下:(1)首先运行初始化表达式。(2)然后计算测试表达式,如果表达式为true,执行语句或块;如果表达式为false,退出for循环。(3)最后执行步长。,【例2.9】用for循环统计1100(包括100)之间数的总和。程序输出结果如图2.9所示。源程序代码如下:/程序文件名称为TestFor.javapublicclassTestForpublicstaticvoidmain(Stringargs)intsum=0;for(inti=1;i=100;i+)sum+=i;System.out.println(1到100(包括100)的数的总和为:+sum);,图2.9程序输出结果,2.4.3while循环语句while循环语句实现受条件控制的循环,其基本格式为:while(布尔表达式)语句或块;当布尔表达式为true时,执行语句或块,否则跳出while循环。,上面for循环语句的例子改为while语句后如下所示:intsum=0;inti=1;while(i=100)sum+=i;i+;System.out.println(1到100(包括100)的数的总和为:+sum);,2.4.4do语句do语句实现受条件控制的循环,其基本格式为:do语句或块;while(布尔表达式),先执行语句或块,然后再判断布尔表达式。与while语句不同,当布尔表达式一次都不为true时,while语句一开始判断就跳出循环,不执行语句或块,而在do语句中则要执行一次。上面那个例子改为do循环为:intsum=0;inti=1;dosum+=i;i+;while(i=100);System.out.println(1到100(包括100)的数的总和为:+sum);,2.5数组的使用,2.5.1数组声明数组的定义如下:(1)首先是一个对象。(2)存放相同的数据类型,可以是原始数据类型或类类型。(3)所有的数组下标默认从0开始,而且访问时不可超出定义的上限,否则会产生越界错误。,数组声明时实际是创建一个引用,通过代表引用的这个名字来引用数组。数组声明格式如下:数据类型标识符例如:inta;/声明一个数据类型为整型的数组apencilb;/声明一个数据类型为pencil类的数组b,2.5.2创建数组由于数组是一个对象,所以可以使用关键字new来创建一个数组,例如:a=newint10;/创建存储10个整型数据的数组ab=newpencil20;/创建存储20个pencil类数据的数组b数组创建时,每个元素都按它所存放数据类型的缺省值被初始化,如上面数组a的值被初始化为0,也可以进行显式初始化。在Java编程语言中,为了保证系统的安全,所有的变量在使用之前必须是初始化的,如果未初始化,编译时会提示出错。有两种初始化数组的方式,分别如下:,(1)创建数组后,对每个元素进行赋值。a0=5;a1=4;.a9=10;(2)直接在声明的时候就说明其值,例如:inta=4,5,1,3,4,20,2;说明了一个长度为7的一维数组。,【例2.10】编写程序测试数组,程序输出结果如图2.10所示。源程序代码如下:/程序文件名称为TestArray.javapublicclassTestArraypublicstaticvoidmain(Stringargs)/声明数组inta;charb;/创建数组,a=newint3;b=newchar2;/数组初始化for(inti=0;i3;i+)ai=i*3;b0=a;b1=b;/快速初始化数组intc=0,1*3,2*3;/输出结果System.out.print(数组an);,for(inti=0;i2;i+)System.out.print(bi+);System.out.print(n数组cn);for(inti=0;i2*4/创建apple类a.appleweight=0.5;/实例变量赋值System.out.println(苹果的重量为1两);System.out.println(a.bite();/调用实例方法a.appleweight=5;System.out.println(苹果的重量为5两);System.out.println(a.bite();,/自定义类classapple/属性longapplecolor;/对应苹果的颜色doubleappleweight;/苹果的重量booleaneatup;/是否吃完/类方法publicbooleanbite()if(appleweight5000)str=名字:+name+Salary:+salary;elsestr=名字:+name+Salary:低于5000;,returnstr;classEmployeepublicStringname;/名字publicintsalary;/薪水publicstaticStringgetSalary(Stringname,intsalary)Stringstr;str=名字:+name+Salary:+salary;returnstr;,publicstaticStringgetSalary2(Stringname,intsalary)Stringstr;str=名字:+name+Salary:+salary;returnstr;,程序中定义了父类Employee类,它有两个方法getSalary和getSalary2,方法体的实现都是一致的,都为输出名字和薪水的值。在TextExtend主类中覆盖了getSalary方法,方法体重新定义为薪水低于5000时并不输出薪水的值而是输出“低于5000”,用于和继承的getSalary2方法进行比较。由图3.2可以看出覆盖的方法按主程序中重定义的方法调用,而继承的方法直接调用父类中的方法。,图3.2测试单继承性程序的输出结果,3.1.3特殊变量类中有两个特殊变量super和this。1.super类声明中用关键字extends扩展了其超类之后,super用在扩展类中引用其超类中的成员变量。【例3.3】使用super变量,输出结果如图3.3所示。源程序代码如下:/程序文件名为UseSuper.javapublicclassUseSuper,publicstaticvoidmain(Stringargs)Managerm=newManager();=王飞;m.salary=10000;m.department=业务部;System.out.println(m.getSalary();classEmployee,publicStringname;/名字publicintsalary;/薪水/方法publicStringgetSalary()Stringstr;str=名字:+name+nSalary:+salary;returnstr;classManagerextendsEmployee,publicStringdepartment;/部门/方法publicStringgetSalary()/使用super变量调用超类的方法returnsuper.getSalary()+nDepartment:+department;,图3.3测试super变量的输出,2.thisthis变量指向当前对象或实例。str=名字:+name+nSalary:+salary;上例中的语句可以换成下面的语句。str=名字:++nSalary:+this.salary;这两者是等同的,因为在Java编程语言中,系统自动将this关键字与当前对象的变量相关联。但有一种情况例外,就是当在某些完全分离的类中调用一个方法并将当前对象的一个引用作为参数传递时。例如:Dayd=newDay(this);,3.1.4构造函数类中的构造函数用来初始化一个类。构造函数为公有类型,无返回值,用来从类实例中访问类时初始化此类的私有变量。【例3.4】基于例3.3将公有变量改成私有变量之后,增加两个构造函数,访问通过外部调用构造函数实现初始化赋值,得到如图3.3所示的结果。/程序文件名为UseConstruct.javapublicclassUseConstructpublicstaticvoidmain(Stringargs),Managerm=newManager(王飞,10000,业务部);/初始化赋值System.out.println(m.getSalary();classEmployeeprivateStringname;/名字privateintsalary;/薪水/构造函数publicEmployee(String_name,int_salary),name=_name;salary=_salary;publicStringgetSalary()Stringstr;str=名字:+name+nSalary:+salary;returnstr;classManagerextendsEmployeeprivateStringdepartment;,/构造函数publicManager(String_name,int_salary,String_department)super(_name,_salary);department=_department;publicStringgetSalary()returnsuper.getSalary()+nDepartment:+department;,3.1.5包计算机操作系统使用文件夹或者目录来存放相关或者同类的文档,在Java编程语言中,提供了一个包的概念来组织相关的类。包在物理上就是一个文件夹,逻辑上代表一个分类概念。包就是指一组类。例如一个名叫Company的包,可以包含一组类,如Employee(雇员)、Manager(管理者)和Department(部门)等。声明包的基本格式如下:Package包名;,其中:Package为关键字,包名为标识符。使用包时的注意事项如下:(1)Package语句要作为程序非注释语句的第一行语句。(2)包内的类名惟一。(3)引用包中的类时,使用import语句。import语句的基本格式为import包名.类名,其中import为关键字,包名和类名之间用圆点(.)隔开。,【例3.5】编写程序测试包,先建立一个Company文件夹,然后建立名为Manager.java的类文件。源程序代码如下:/程序文件名为Manager.javapackageCompany;/声明包名CompanyclassEmployeepublicStringname;/名字publicintsalary;/薪水publicStringgetSalary(),Stringstr;str=名字:+name+nSalary:+salary;returnstr;publicclassManagerextendsEmployeepublicStringdepartment;/部门publicStringgetSalary()returnsuper.getSalary()+nDepartment:+department;,对此文件进行编译,生成类文件Manager.class。在原目录建立源程序文件UsePackage.java。源程序代码如下:/程序文件名UsePackage.javaimportCompany.Manager;/引入包中的类publicclassUsePackagepublicstaticvoidmain(Stringargs)Managerm=newManager();=王飞;m.salary=10000;m.department=业务部;System.out.println(m.getSalary();,编译后,在命令提示符状态下运行,输出结果如图3.4所示。从图3.4中可以看出首先进入Company目录,编译Manager.java文件,然后返回上层目录,编译UsePackage.java文件,最后执行UsePackage类文件,输出正确的结果。,图3.4测试包的输出结果,3.2接口,Java编程语言中禁止多继承属性,但可以通过接口来帮助类扩展方法。接口中可以定义大量的常量和方法,但其中的方法只是一种声明,没有具体的实现,使用接口的类自己实现这些方法。接口与类的不同在于:(1)没有变量的声明,但可以定义常量。(2)只有方法的声明,没有方法的实现。接口声明的基本格式如下:publicinterface接口名extends接口列表,【例3.6】测试接口,定义接口文件Product.java,定义了两个常量,声明了一个方法。接口文件如下:/程序文件名Product.javapublicinterfaceProductstaticfinalStringMAKER=计算机制造厂;staticfinalStringADDRESS=上海;publicintgetPrice();,使用接口的源文件代码如下:/程序文件名UseInterface.javapublicclassUseInterfacepublicstaticvoidmain(Stringargs)Computerp=newComputer();System.out.print(p.ADDRESS+p.MAKER);System.out.println(计算机的价格:+p.getPrice()+万元);,classComputerimplementsProductpublicintgetPrice()return1;,首先编译接口文件“javacProduct.java”,然后编译使用这个接口的类文件“javac.UseInterface.java”,最后执行类“javaUseInterface”,输出结果如图3.5所示。,图3.5测试接口的输出结果,3.3常用数据结构及类,3.3.1Vector类Vector类似于一个数组,但与数组相比在使用上有以下两个优点。(1)使用的时候无需声明上限,随着元素的增加,Vector的长度会自动增加。(2)Vector提供额外的方法来增加、删除元素,比数组操作高效。Vector类有三个构造函数,分别如下:publicVector();该方法创建一个空的Vector。,publicVector(intinitialCapacity);该方法创建一个初始长度为initialCapacity的Vector。publicVector(intinitialCapacity,intcapacityIncrement);该方法创建一个初始长度为initialCapacity的Vector,当向量需要增长时,增加capacityIncrement个元素。,(1)Vector类中添加、删除对象的方法如下:publicvoidadd(intindex,Objectelement)在index位置添加对象element。publicbooleanadd(Objecto)在Vector的末尾添加对象o。publicObjectremove(intindex)删除index位置的对象,后面的对象依次前提。,(2)Vector类中访问、修改对象的方法如下:publicObjectget(intindex)返回index位置对象。publicObjectset(intindex,Objectelement)修改index位置的对象为element。,(3)其它方法:publicStringtoString()将元素转换成字符串。publicintsize()返回对象的长度。,【例3.7】操作Vector对象,进行元素的添加、插入、修改和删除。程序输出结果如图3.6所示。源程序代码如下:/程序文件名为UseVector.javaimportjava.util.Vector;/引入JDK的Vector类publicclassUseVectorpublicstaticvoidmain(Stringargs),VectorvScore=newVector();vScore.add(86);/添加元素vScore.add(98);/添加元素vScore.add(1,99);/插入元素/输出结果for(intI=0;IvScore.size();I+)System.out.print(vScore.get(i)+);vScore.set(1,77);/修改第二个元素vScore.remove(0);/删除第一个元素,System.out.println(n修改并删除之后);for(intI=0;IvScore.size();I+)System.out.print(vScore.get(i)+);System.out.println(n转换成字符串之后的输出n+vScore.toString();,图3.6操作Vector对象的输出结果,3.3.2Hashtable类Hashtable类存储的是对象的名-值对。将对象的名和它的值相关联同时存储,并可以根据对象名来提取它的值。在Hashtable中,一个键名只能对应着一个键值,然而一个键值可以对应多个键名,键名必须是惟一的。构造函数以及常用方法如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 告别沈从文课件
- 少儿街舞 课件
- 篮球课件 英语
- 第二讲 写写身边的人(看图写话教学)-二年级语文上册(统编版)
- 胜似亲人 课件
- 西京学院《影视美学》2021-2022学年第一学期期末试卷
- 关于情绪 课件
- 三角形的高 (微课课件)
- 西京学院《纪录片创作》2022-2023学年第一学期期末试卷
- 西京学院《采访与写作》2021-2022学年第一学期期末试卷
- 心理疾病中医常用治疗方法
- 最全给排水基础知识与识图
- 《秘密》读书分享课件
- 学做小小理财师
- 流感诊疗指南
- 《民航危险品运输》教学课件 第一章 民航危险品运输概述
- 宝宝白细胞高怎么回事:新生儿含有白细胞
- 《义务教育集团化办学考核评价办法》
- 高中音乐《学会聆听音乐》第三课时《联想与想象》 课件
- 岗位技能矩阵图
- 脚手架的拆除安全检查表
评论
0/150
提交评论