java自学考试复习资料_第1页
java自学考试复习资料_第2页
java自学考试复习资料_第3页
java自学考试复习资料_第4页
java自学考试复习资料_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java自学考试复习资料java自学考试复习资料java自学考试复习资料java自学考试复习资料编制仅供参考审核批准生效日期地址:电话:传真:邮编:《Java语言程序设计》Java语言基础Java语言的特点。Java语言主要有以下特点:强类型:强制约束程序员必须遵守更多的编程规定,编译器能检测程序中尽可能多的错误。编译和解释:用Java编写的源程序在计算机上运行必须经过编译和解释执行两个阶段。编译程序先江Java源程序翻译成与机器无关的字节码(bytecode),不是通常的编译程序将源程序翻译成特定计算机的机器代码。运行时,由Java虚拟机(JVM)中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。自动无用内存回收功能:垃圾收集器(garbagecollector)可以自动回收程序不再使用的内存,避免程序遗漏或重复释放内存。面向对象与平台无关:与平台无关是对程序可移植性最直接最有效的支持,“一次编程,到处运行”。可移植性源于两方面:1.Java的编译和解释的特征(Java虚拟机);2.Java采用基于国际标准的数据类型,在任何平台上,同一种数据类型是一致的。安全性:取消指针,避免因指针使用不当,访问不该访问的内存空间;提供数组下标检测机制,禁止程序越界访问内存;编译执行过程中进行比较严格的检查:在解释执行前,对字节码文件作检查,防止被恶意改动的字节码文件被解释执行而破坏系统;浏览器限制下载的小应用程序不允许访问本地文件,避免其破坏本地文件。分布式计算多线程:Java的运行环境采用多线程实现。Java语言提供语言级多线程支持,用Java语言能直接编写多线程程序。两种类型的Java程序。Java程序可分为应用程序(Application)和小应用程序(Applet)两类。这两种程序的主要区别:小应用程序需要嵌入在HTML网页中,当网页被浏览时,在浏览器中运行;且其运行受到严格的安全限制。应用程序则独立运行,不嵌入网页,也没有那些限制。另外,这两类程序在代码编写上也有差异:一个小应用程序必须定义为java.applet.Applet类的子类,而不必定义main()方法;应用程序一般不必为java.applet.Applet类的子类,而必须在一个类中定义main()方法。注释:行注释 //块注释 /*….*/文档注释 /**…*/Java程序的开发过程java编译器java编译器字节码文件java编译器java编译器字节码文件.class编写源程序文件.javaJava编译器字节码文件.class由Web浏览器执行有Java解释器执行应用程序Applet通常在JDK目录下有bin、demo、lib、jre等子目录,其中bin目录保存了javac(编译器)、java(解释器)、jdb(调试器)、appletviewer(javaAppelt解释器)等命令文件;Java的字符集和标识符。Java语言使用Unicode字符集,字符采用双字节的表示方式,共有65535个字符,最前面的128个字符与标准的ASCII字符一致,包括:数字字符10个(0~9)英文大小写字母各26个(A~Z,a~z)下划线(_)、美元符号($)文字字符(汉字,日文片假名、平假名,朝鲜文字等)其他用于构成特殊符号的字符集标识符可以用来标识文件名、变量名、类名、接口名和成员方法名等,其构造规则如下:标识符由Java字母和Java数字组成;首字符必须是Java字母;除去关键字、false、true和null;所有标识符是区分大小写的。关键字是Java语言保留的一些英文单词,具有特殊的含义。例如:public、static和class,具有特殊用途,不能作为标识符使用。基本数据类型。布尔型(boolean) 1个字节(true或false)字符型(char) 16位字节型(byte) 8位短整型(short) 16位整数型(int) 32位长整型(long) 64位单精度浮点型(float) 32位双精度浮点型(double) 64位Java直接量是直接显式地表示基本数据类型数据、字符串(String)值和空引用值(null)的表达式,而且在该表达式中不含运算。布尔(boolean)直接量只有两个:true和false字符(char)直接量:如‘a’,‘6’,‘猫’,‘\u0061’,‘\n’整型(byte,short,int)直接量:如-27,+0123,0x56ab长整型(long)直接量:如-27L,+0123L,0x56abL浮点数(float,double)直接量:如1.5,45.6D,100d,76.4e8,-32.0,1.5F,45.6f,76.4E-8F,-32.0F字符串(String)直接量:如“HelloWorld!”引用数据类型的直接量:null变量在计算机内部对应着一个存储单元,而且总是具有某种数据类型:基本数据类型或引用数据类型。每个变量均具有:名字、类型、一定大小的存储单元以及值。变量总是具有与其数据类型相对应的值。基本数据类型:变量的存储单元中存放的是具体的布尔值或数值;引用数据类型:变量的存储单元中存放的是引用值,引用值一般用来指向某个具体的对象。如果引用值是null,则该引用值不指向任何对象。在使用变量前,必须先定义该变量,而且一般要求先初始化。例如:intstudentNumber; //定义单个变量studentNumber=30; //给变量赋值doublevelocity,distance; //定义多个变量intstudentNumber=30; //定义变量,并赋初值运算和语句赋值运算。简单赋值运算,格式如下:变量=表达式 不是“相等”运算符(“==”)。 赋值语句中的数据类型转换只能是简单类型向复杂类型转换,不能从复杂的转换成简单的。转换规则如下: byte→short→int→long→float→bouble复合赋值运算,格式如下:变量双目算术运算符=表达式包括:+=、-=、*=、/=、&=、|=、%=、<<=、>>=和>>>=。例如:a+=b等价于a=a+b,a/=b+c等价于a=a/(b+c)。算术运算符。算术运算符包括:+(取正),-(取负)(单目运算)+,-,*,/,%(双目运算)注意事项:当操作数是定点类型数据时,应当注意运算是否会溢出inti=123456;i=i*i;//溢出整数除法:截去余数,7/5结果为1考虑除数是否可能为0或很小的数取模:返回余数,可以对定点或浮点数进行取模运算,7%5结果为2;15.25%(-0.5)结果为0.25自增自减运算。自增(++)和自减(--):操作数必须是变量;有前置和后置两种运算 intn=3; inti=n++,j=n--; //i=3,j=4,n=3intk=++n,m=--n; //k=4,m=3,n=3前缀和后缀,对变量本身,效果相同;但表达式的值不相同。运算对象只能是变量,不能是常量或表达式,如:7++;(i+j)--都是非法的。关系运算符。关系运算符包括:<、>、<=、>=、==和!=,关系运算生成一个布尔结果。例如: 1>2; //false 3.5!=1; //true 51.5>=23.0; //true 540<=654; //true 24==3*8; //true booleantest1=(10<10); //test1=false;关系运算符的优先级:<、<=、>、>=优先于==、!=;<、<=、>、>=优先级相同,结合性是自左向右;==、!=优先级相同,结合性是自左向右。【注意】Java不允许将一个数字作为布尔值使用,这与c或c++不同。例如:当要表达“如果a不等于0”这个条件不能写作if(a)而要写作if(a!=0)逻辑运算符。逻辑运算的操作数必须是布尔型,结果也是布尔型。可以有3种基本操作:与(&&)、或(||)、非(!)。短路规则:一旦能够明确无误的确定整个表达式的值,就不再计算表达式余下的部分了。因此,整个逻辑表达式靠后的部分可能不会计算。比较:(birthday==true)&&(++age>=65)(birthday==true)||(++age>=65)!优先于双目算术运算符优先于关系运算符优先于&&优先于||条件运算符。条件运算符是一个三目运算符,一般形式为:逻辑表达式表达式1:表达式2例如:inti=5;intk=(i>=0)1:-1;条件运算符的结合性为“自右至左”。例如:x>yx:u>vu:v等价于

x>yx:(u>vu:v)

位运算和位移运算。位运算符包括:&、|、~、^、移位运算符有:>>、>>>和<<&、|、~、^按位求与、或、非、异或>>带符号右移:左端空出的位填原符号位<<左移:右端空出的位补0>>>不带符号右移(逻辑右移):左端空出的位填0(C或C++中无此运算符)位运算操作是:先将整数写成二进制形式(补码),然后按位操作,最后产生一个新的数注意:只用于定点类型数据(整型)基本语句。表达式语句:k=k+2;空语句;break语句:break;用于循环或选择continue语句:continue;同上return语句:return;,return表达式;,该语句的执行将结束方法的执行,只能出现在方法体中。复合语句。用花括号引起来的两条或两条以上语句,顺序执行但作为一个整体。在复合语句中可以定义自己专用的临时变量。if语句。if语句的格式是:if(布尔表达式)语句或if(布尔表达式){一条或多条语句}例如:if(score>=60)System.out.println("Passed");if-else语句。if-else语句的格式是:if(布尔表达式)语句1或语句块1else语句2或语句块2例如:if(score>=60)System.out.println("Passed!");elseSystem.out.println("Failed!");标准嵌套if-else控制结构可实现多路选择,用在想从多个候选项中选择且只选出一项时。例如:if(score>90)System.out.println(“A”);elseif(score>=80)System.out.println(“B”);elseif(score>=60)System.out.println(“C”);elseSystem.out.println(“F”);switch语句。switch语句的格式是:switch(表达式){case值1:语句组1;break;case值2:语句组2;break;……case值n:语句组n;break;default:语句组(n+1);}switch表达式的数据类型可以是基本类型char、byte、short、int;或是这四种基本类型相对应的包装类java.lang.Character、java.lang.Byte、java.lang.Short、java.lang.Integer或enum枚举类型。跟在case后的必须是常量表达式,其值的类型应当与switch表达式的数据类型相匹配。Switch语句的执行规则:求出表达式的值;找出给定值与表达式相符的case语句,执行此case标号后的所有语句(除非遇到break语句),直到switch语句结束;若没有匹配的case语句,则转向defalult语句,执行default标号后的所有语句,直到switch语句结束。若没有匹配的case语句,也没有defalult语句,则switch语句的这次执行立即结束。try…catch语句。try{语句块//执行该语句块,可能会发生异常}catch(异常类型e){异常发生时要执行的语句块}finally{无论异常发生与否,都要执行的语句块}说明:Catch和finally必须和一个try相关联try至少要有一个catch,可以有多个finally语句块是可选的while语句。while语句的格式:while(布尔表达式)语句或语句块当条件(布尔表达式)为true,则不断地执行语句或语句块。“while”循环的中止条件是布尔表达式变为false,如果布尔表达式一开始就为false,则不执行循环体。有时循环条件很难写出,可以直接使用true,格式如下:While(true){…If(条件表达式)break;…}do-while语句。do-while语句的格式是:do{语句或语句块}while(布尔表达式);do-while和while结构唯一的区别就是do-while中的语句至少会执行一次,即便布尔表达式第一次就被计算为false。注意最后的分号,一定不能省略。for语句。for语句的格式是:for([初始化表达式];[条件表达式];[更新表达式])语句或语句块例如:intcounter,sum;for(counter=1,sum=0;counter<=100;counter++)sum+=counter;System.out.println(“counter=“+counter+”,sum=”+sum);注意变量counter和sum的作用域,若将它们改在for语句内部定义,会有何不同。在for语句的初始化和更新部分,可以使用多个由逗号分隔的表达式,这些表达式都会独立执行。例如:for(int1=1,j=i+10;i<5;i++,j=i*2){System.out.println(“i=”+i+“j=”+j);}注意:通过逗号操作符,可以在初始化部分定义多个变量,但这些变量必须具有相同的类型。无论在初始化还是更新部分,表达式都是顺序执行的。嵌套的循环结构。for循环的嵌套while循环的嵌套do..while循环的嵌套以上三个任意之间的嵌套continue语句。格式:continue;功能:跳过continue之后的语句,重新判断循环控制条件,决定是否继续循环。说明:continue语句只能用在三种循环语句的循环体中。continue语句通常和if语句联合使用,从而构成其后的部分循环体是否执行的单分支结构。break语句。格式: break;功能:强制结束当前的循环,不再执行循环体中break后面的语句。说明:break语句只能在三种循环语句的循环体和switch语句中使用。在循环语句中break通常和if语句联合使用,用于构成第二个退出循环的机会。Package语句。程序包相当于其它语言的函数库,系统提供大量的程序包,自己编写的类也可以组成程序包,但一定要用package语句声明。格式:package包名;包名是一个目录名,可以有路径。import语句。用来引入所需要的类格式:import包名.类名;例如:importjava.util.Date;//引入Date类如果从一个包中引入多个类,可以用通配符“*”,如:importjava.awt.*;一个java源程序中可以有多个import语句,它们必须出现在package语句之后;类的定义之前。Java程序的基本结构。[package包名;]import包名.类名;…//更多的import语句[public]class类名{intval=…//变量定义语句Publicstaticvoidmain(Stringargs[])//方法定义{…//变量定义和控制语句构成的方法体}}面向对象编程基础抽象抽象是程序设计最经常使用的技术之一,是有效控制程序复杂性的重要手段。在面向对象程序设计中:把一系列复杂的属性与动作组织到单个模块中,然后把该模块当作一个整体(对象)来对待,就是一种抽象形式。把一个问题分解成构成它的对象,也是一种抽象形式。对象(object)万物皆为对象,它存储数据,还可以要求它在自身上执行操作。对象具有状态、行为和标识。这意味着每一个对象可以拥有内部数据(它们给出该对象的状态)和方法(它们产生行为),并且每一个对象都可以唯一地与其他对象区分开来(每一个对象在内存中都有唯一一个地址)。消息(message)在面向对象框架中,对象之间通过相互发送消息来进行交互。在Java里,通过调用方法来传递消息。类(class)类定义了某种类型的所有对象所具有的属性与行为,是用来创建对象的蓝图或模板;对象是某个确切类的实例。在创建一个类的实例(对象)之前必须定义这个类。继承性(inheritance)多态性(polymorphism)类(1)类的声明类的定义格式如下:[类修饰词]class类名[extends父类名][implements接口名称列表]{类体//通常先定义成员变量,再定义构造方法,最后编写成员方法}(2)成员变量成员变量的定义格式如下:[修饰词列表]类型变量名或带初始化的变量名列表;例如:privatefloatheight,weight;privateStringname,sex,no;(3)方法类的成员方法:简称方法,用来实现类的各种功能。方法的定义格式如下:[方法修饰词列表]返回类型方法名(方法的参数列表){方法体}例如:publicintmb_method(){…}publicstaticvoidmain(Stringargs[]){…}例3.2(若某方法的参数名或局部变量名与类的成员变量名相同,则成员变量名在这个方法内部暂时被隐藏。)例3.3(关键字this:对当前对象的引用)(4)构造方法构造方法用来创建类的实例,并对对象初始化。构造方法的声明和一般方法声明非常相似,但是它必须和类同名,并且不能声明返回值类型。构造方法的一般形式:public<类名>(<参数列表>){<语句>}默认的构造方法:当一个类没有包含构造方法时,Java将自动提供一个默认的构造方法。对象(1)声明对象声明一个对象只是命名一个引用变量,这个引用变量和对象关联,可以用来引用该对象。声明一个对象的格式如下:类名变量名(对象名);例如,声明对象:Pointp1,p2;不要把声明一个对象和创建一个对象混淆起来。声明对象并不会为这个对象分配内存。(2)创建对象创建对象:使用new操作符和构造方法。构造方法是在对象实例化过程中使用的特殊方法;操作符new为新的对象分配一片内存并将它存储在那里,然后返回对象的地址。格式为:new构造方法名(构造方法的调用参数列表)例如:p1=newPoint();p2=newPoint(30,40);声明和创建对象也可以一起完成,例如:Pointp3=newPoint(),p4=newPoint(60,70);(3)对象的内存模型在Java中有两种类型的变量:基本类型与引用类型。基本类型的变量总是存放一个该类型的值;引用变量实际上存放的是它所引用的对象的地址,而不是存放对象本身。在Java中,主要有数组和类类型是引用类型。(4)使用对象程序使用对象:访问对象的成员变量,一般形式为:对象名.成员变量名调用对象的方法,一般形式为:对象名.方法名([参数表])实例变量和类变量被关键字static修饰的变量为类变量(静态变量),未被关键字static修饰的变量为实例变量。例如:classD{floatx;//实例变量staticinty;//类变量…}每个对象都有自己的实例变量,不同对象的实例变量也将被分配不同的内存空间。类变量则被一个类的所有对象共享,在内存中也只有一处。可以通过类名或对象名引用类变量。实例方法和类方法被关键字static修饰的方法为类变量(静态方法),未被关键字static修饰的方法为实例方法。例3.7注意:类中的实例方法可以互相调用,并可调用类方法。类方法也能相互调用,但不能直接调用实例方法,而要通过在类方法中引入局部对象,通过对象名调用实例方法。类中的实例方法中可以直接使用实例变量,也可直接使用类变量。但类方法能直接使用类变量,却必须通过在类方法中引入的局部对象,用对象名引用实例变量。类方法可以通过类名或对象名调用。例3.8访问权限设置访问权限实现访问控制,为类的成员设置访问权限,保护类的成员不在非期望的情况下被引用。在类的声明中,除了类的方法总能访问类的成员变量外,为其他类的方法访问本类的成员变量和方法,提供了四种访问权限:public:无访问限制,其他类的方法都能访问private:最强访问限制,其他类的方法都不能访问protected:仅限子类或同一包中的类的方法访问<default>:只允许同一包中的类的方法访问继承继承性-软件重用的一种方法继承使得一个类可通过扩展现有类来定义扩展声明的新类称为子类,原有的类称为超类(父类)子类继承超类的变量和方法;子类可以增加新的变量和方法;子类可以重写(第51页)从超类中继承的方法。子类对父类的继承性,Java语言有以下规定:子类自然地继承其父类中非private的成员变量作为自己的成员变量子类自然地继承其父类中非private的成员方法作为自己的成员方法多态性静态的多态性:重载,在编译时就能够被识别针对的是同一个类内的同名方法(重载的方法)。动态的多态性:重写,在程序运行时才被识别(动态联编)重写父类的方法(同样签名)。多层继承继承关系具有传递性。继承声明的新类,又可被其他类再继承,从而构成多层继承。Java面向对象的其他机制(1)final类、final方法和final变量关键字final的含义为“最终的”,“不能改变的”。用final修饰类,表明此类不能派生出子类,例如:finalclassC{…}用final修饰方法,表明此方法不能被子类的方法重写(覆盖)例如:finalintf(intx,inty){…}用final修饰变量,表明此变量一旦赋值,则不能再被改变,相当于一个常量例如:finalintFINALVAR=100;(2)abstract类和abstract方法关键自abstract的含义为“抽象”,用abstract修饰类,此类称为抽象类,抽象类不能被实例化;用abstract修饰方法,此方法称为抽象方法,抽象方法没有实现的代码(方法首部;)包含抽象方法的类一定是抽象类,但抽象类可以没有抽象方法。(3)关键字super关键字super的用途:在子类型的非静态成员方法中访问其父类型的成员变量(4)关键字this关键字this的用途:在当前类的非静态成员方法中访问当前类的成员变量(5)类之间的is-a和has-a关系例:类A继承自类B,子类A与父类B之间有is-a关系例:类A的某个成员变量的类型是B,类A和类B之间是has-a关系(6)内部类(innerclass)定义在其它类内部的类称为内部类。接口(interface)Java小应用程序基础JavaApplet主要功能:显示图形、动画、播放声音、响应用户事件等。Javaapplet的实现主要依靠java.applet包中的Applet类。java.applet.Applet类是所有Javaapplet的基类,所有的Javaapplet都必须继承该类。(1)小应用程序的建立和运行Javaapplet程序从建立到运行的步骤如下:选用写字板或文本编辑器等工具建立Javaapplet源程序。(其中必须有一个类继承java.applet.Applet类,这个类是小应用程序的主类,用关键字public修饰。)把Javaapplet的源程序编译为字节码文件。编制HTML文件,通过<applet></applet>标记将字节码文件嵌入HTML文件中。在支持Java的浏览器上运行。(2)Applet类的基本方法publicvoidinit()publicvoidstart()publicvoidpaint()publicvoidstop()publicvoiddestroy()publicvoidrepaint()publicvoidupdate()(4)小应用程序数据输入与输出小应用程序的数据输入有多种方式:从图形用户界面的文本框、文本区域中输入;采用系统标准输入;由HTML文件中的参数导入。数组和字符串1.数组数组是连续存储区域的命名集合,这些存储区域彼此相邻,存放着相同类型的数据元素。一维数组(1)声明一维数组一维数组变量的声明格式有如下两种:数组元素的数据类型[]数组名;数组元素的数据类型数组名[];(2)创建一维数组Java数组是引用类型,可以通过new操作符来创建;在创建一个数组时必须指明数组的元素类型和它的长度。先声明后创建格式:数组名=new数组元素类型[元素个数]示例:char[]c;//声明数组c=newchar[5];//创建数组,并分配内存在声明时创建示例:char[]c=newchar[5];对于较小的数组,可以使用直接赋值创建,即在声明数组时赋给它初值。数组初始化表达式写成一组用逗号分开的扩在花括号里的表达式。例如:intarr[]={2,-9,15,-2,0,80,7};charc[]={‘h’,‘e’,‘l’,‘l’,‘o’};(3)引用一维数组元素数组的每个元素通过它在数组里的位置来引用:数组名[下标],例如:arr[7]数组下标必须是0到N-1之间的整数,或值在0到N-1之间的整数表达式,其中N是数组里元素的个数。例如:arr[7]、arr[i+j](其中i=1,j=6)使用一个不在0到N-1范围内的下标值系统将发生运行时异常,这是由于Java运行系统会对数组下标自动进行范围越界检查。例如:arr[-1]、arr[15]多维数组(1)声明二维数组声明二维数组的形式有以下三种:数据元素类型数组名[][]数据元素类型[][]数组名数据元素类型[]数组名[](2)创建二维数组创建二维数组的方法也有多种:直接分配(适用于平衡二维数组,即矩阵)格式:类型数组名[][]=new类型[长度1][长度2];例如:doublerainfall[][]=newdouble[12][31];从最高维开始,分别对每一维分配不等长空间(适用于非平衡数组)例如:inta[][]=newint[3][];inta[0]=newint[4];inta[1]=newint[5];inta[2]=newint[2];直接赋值创建(适用于元素较少的数组)例如:int[][]x={{5,6,7},{8,9,10,11},{18,19,20,15},{2,9}};(3)引用二维数组元素书中示例的非平衡二维数组x中,x[2][3]值为15(4)使用二维数组要注意的问题二维数组名[下标1]是一维数组。二维数组名.length是二维数组的子数组个数;二维数组名[下标1].length是指定子数组的元素个数。2.字符串字符串常量双引号括起来的字符序列。示例:“student”、“你好”或“123.456”字符串声明和创建Stringname1=newString();Stringname2=newString(“HelloWorld”);chara[]={‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’};Stringname3=newString(a);Stringname4=newString(a,2,4);字符串基本操作(1)字符串连接Strings1=“sweet”;Strings2=newString(“you”+“are”+s1);(2)获取字符串长度方法:publicintlength()功能:返回此字符串的长度(3)字符串前缀或后缀的比较方法:publicbooleanstartsWith(String

prefix)功能:测试此字符串是否以指定的前缀开始方法:publicbooleanendsWith(String

suffix)功能:测试此字符串是否以指定的后缀结束(4)比较两个字符串是否相同方法:publicbooleanequals(Object

obj)功能:比较两个引用变量是否引用同一个对象,例如x.equals(y),对于任何非空引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true(x==y具有值true)。方法:publicbooleanequalsIgnoreCase(String

anotherString)功能:将此String与另一个String比较,不考虑大小写。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。方法:publicintcompareTo(String

str)功能:按字典顺序比较两个字符串的大小。该比较基于字符串中各个字符的Unicode值。如果此String对象小于参数字符串,则返回一个负整数。如果此String对象大于参数字符串,则返回一个正整数。如果这两个字符串相等,则返回0。方法:publicintcompareToIgnoreCase(String

str)功能:按字典顺序比较两个字符串,不考虑大小写。(5)字符串检索String的实例方法indexOf()可以用于在字符串中查找一个字符或子串的索引位置。indexOf()方法在一个String里从左到右查找一个字符或子串,它有几种版本:publicintindexOf(Stringstring);publicintindexOf(Stringstring,intstartingIndex);(6)取字符串的子串方法substring()可以用来从一个String里检索一个字符子串。publicStringsubstring(intstartIndex)例如:Stringstr=“HelloWorld”;str.substring(5);//“World”str.substring(9);//”d”(7)替换字符串中的某字符得到一个新字符串方法:publicStringreplace(char

oldChar,char

newChar)功能:返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。(8)去掉前后空格得到一个新字符串方法:publicStringtrim()功能:返回字符串的副本,去掉前后空白。(9)基本类型值的字符串表示String的类方法valueOf()用于把某种基本类型的值转换成一个String对象。(10)字符串得到基本类型对象每种基本类(包装类,除Character)都有类方法能将字符串转换成基本类的对象,形如:publicstaticTypevalueOf(Strings)其中,Type代表任何基本类,包括Boolean、Integer、Double等。(11)字符串得到基本类型值每种基本类(包装类,除Character)都有类方法能从字符串中解析出基本类型的值,形如:publicstatictypeparseType(String

s)其中,type代表任何基本数据类型,包括boolean、int、double等,Type代表相应的包装类。StringTokenizer类java.util.StringTokenizer类用来把字符串分解为标记。常用构造方法1:publicStringTokenizer(String

str)//为指定字符串构造一个stringtokenizer。使用默认的分隔符集“

\t\n\r\f”,即:空格字符、制表符、换行符、回车符和换页符。常用构造方法2:publicStringTokenizer(String

str,String

delim)//为指定字符串构造一个stringtokenizer。delim参数中的字符都是分隔标记的分隔符。常用方法:publicintcountTokens()//返回使用当前分隔符集的字符串中剩余的标记数publicStringnextToken()//返回此stringtokenizer的下一个标记。publicbooleanhasMoreElements()//测试此stringtokenizer的字符串中是否还有更多的可用标记。如果此方法返回true,那么后续调用无参数的nextToken方法将成功地返回一个标记。字符串与字节数组可以使用String构造方法,利用字节数组创建字符串:publicString(byte[]

bytes)//通过使用默认字节字符对应表,由字节数组构造一个新的String。新String的长度是字符集的函数,因此可能不等于byte数组的长度。publicString(byte[]

bytes,int

offset,int

length)//通过使用默认字节字符对应表,由字节数组起始位置offset开始取length个字节构造一个新的String。String类也提供实例方法将字符串转化为字节数组:publicbyte[]getBytes()//使用默认字节字符对应表将字符串转化为字节数组对象的字符串表示根类Object中定义了实例方法publicStringtoString()此方法的功能描述为:返回该对象的字符串表示。图形界面设计(一)1.图形界面设计基础AWT和SwingAWT:AbstractWindowingToolkit,抽象窗口工具包Swing:与AWT相比——功能更加强大、完善,平台相关性较小组件和容器组件(Component)组件是Java图形用户界面的最基本组成部分,是一个可以以图形化的方式显示在屏幕上、并能与用户进行交互的对象,组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。容器(Container)容器是可以容纳其他组件的组件,是图形界面的复合元素。Container类有add()方法,可以向容器添加组件。类java.awt.container的成员方法:publicComponentadd(componentcomp)//将组件comp添加到当前容器中Component、Container和Graphics类是AWT库中的关键类。事件驱动程序设计基础(1)事件、监视器和监视器注册在Java里,每当某件事发生在一个GUI组件(事件源或源对象)里,会生成一个事件对象(event)并传给为处理该事件而注册的事件监视器(eventlistener)。(2)实现事件处理的途征事件处理模型的三个基本要素:事件源(Aneventsource)事件对象(Aneventobject)事件监视器(eventlistener(s))事件源(源对象)可供用户进行交互的GUI组件事件对象包装相应的事件记录事件源以及处理该事件所需要的各种信息事件对象对应的类一般位于包java.awt.event和包javax.swing.event中事件监视器(事件监听器)在事件源中注册事件监视器,当有事件发生时,事件源接收事件对象,并交由相应的事件监听器处理事件监听器对应的接口和适配器类一般位于包java.awt.event和包javax.swing.event中(3)事件类型和监视器接口常用的事件:动作事件(ActionEvent)、项事件(ItemEvent)、列表选择事件(ListSelectionEvent)、文档事件(DocumentEvent)类javax.swing.Frame的成员方法:publicContainergetContentPane()//返回当前Frame的内容窗格类java.awt.container的成员方法:publicComponentadd(componentcomp)//将组件comp添加到当前容器中对于顶层容器,是向其内容窗格添加组件;对于其他容器,则可直接添加组件。为顶层容器添加组件的另一种方法:建立JPanel对象作为中间容器,将组件添加到这个容器中,再用方法publicvoidsetContentPane(ContainercontentPane)把此中间容器设置为内容面板。JPanelcontentPane=newJPanel();…//添加组件到contentPane中mw=setContentPane(contentPane);//mw为之前创建的某JFame对象3.标签、按钮和按钮事件标签(javax.swing.JLabel)是用于短文本字符串或图像或二者的显示区。标签不对输入事件作出反应。标签(类javax.swing.JLabel)的构造方法:publicJLabel()publicJLabel(Stringtext)publicJLabel(Stringtext,intalign)//参数text指定标签的文字信息;参数align指定文字在水平方向上的对齐方式。常见对齐方式:javax.swing.JLabel.LEFT(左对齐)、javax.swing.JLabel.CENTER(中对齐)、javax.swing.JLabel.RIGHT(右对齐)JLabel的常用成员方法:publicvoidsetText(Stringtext)//设置标签的文字信息publicvoidgetText()//返回该标签所显示的文本字符串publicvoidsetBackground(Colorbg)//设置标签的背景色,默认为容器的背景色publicvoidsetForeground(Colorfg)//设置标签的前景色,即标签上的文字的颜色,默认为黑色按钮:命令式按钮在界面设计中用于激发动作事件。命令式按钮(类javax.swing.JButton)的构造方法:publicJButton()publicJButton(Stringtext)JButton的成员方法详见课本92页。publicvoidaddActionListener(ActionListenera)//为按钮注册由参数a指定的动作事件监视器动作事件监视器一般是实现接口java.awt.event.ActionListener的类的实例对象。接口java.awt.event.ActionListener的定义如下:publicinterfaceActionListenerextendsEventListener{publicvoidactionPerformed(ActionEvente);}动作事件对象动作事件对象的具体类型为java.awt.event.ActionEvent。类java.awt.event.ActionEvent的常用成员方法包括:publicObjectgetSource()//返回当前事件的事件源publicStringgetActionCommand()//返回当前动作事件相关的字符串类JButton中定义了成员方法:publicvoidsetActionCommand(StringactionCommand)//设置此按钮的动作命令按钮(动作事件)处理程序的基本内容包括:定义一个类,实现接口ActionListener,即在此类中实现actionPerformed()方法4.面板JPanel(见课本94-95页)面板是一种常用容器,常被用作中间容器。面板(类javax.swing.JPanel)的构造方法:publicJPanel()publicJPanel(LayoutManagerlayout)//创建具有指定布局管理器的JPanel使用JPanel的两种途径:(1)直接创建JPanel的实例对象,在其中添加组件,再将其放入另一个容器中(如JFrame)(2)定义JPanel类的子类,在其构造方法中向其中添加组件,再通过创建这个子类的实例对象,并将这个对象加入另一个容器中JPanel的常用成员方法:publicvoidsetPreferredSize(DimensionpreferredSize)//将面板大小设置为参数preferredSize所指定的尺寸类java.awt.Dimension的构造方法:publicDimension(intwidth,intheight)//参数width指定宽度,参数height指定高度publicvoidsetBackground(Colorbg)//将面板背景颜色设置为参数bg所指定的颜色JScrollPane(见课本95-96页):带有滚动条的面板,它也是java.awt.container类的子类,但规定只能向其中添加一个组件。当一个容器的显示区域不足,导致无法同时显示其中的所有组件时,如果让容器带有滚动条,则通过移动滚动条的滑块,就可以看到所有位置上的组件。为容器添加滚动条的工作,可以通过将容器添加到一个JScrollPane中实现。滚动窗格(javax.swing.JScrollPane)的构造方法:publicJScrollPane()//可以先创建JScrollPane对象,再用其成员方法setViewportView(Component

view)设置需要加上滚动条功能的组件publicJScrollPane(Componentview)//参数view指定需要加上滚动条功能的组件,只要组件的内容超过视图大小就会显示水平和垂直滚动条设置JScrollPane滚动条属性的成员方法:publicvoidsetHorizontalScrollBarPolicy(int

policy)//确定水平滚动条何时显示在滚动窗格上。选项有:ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED(水平滚动条需要时才显现)ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER(水平滚动条总是不可见)ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS(水平滚动条总是可见)publicvoidsetVerticalScrollBarPolicy(intpolicy)//确定垂直滚动条何时显示在滚动窗格上。选项有:ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED(垂直滚动条需要时才显现)ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER(垂直滚动条总是不可见)ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS(垂直滚动条总是可见)5.布局设计(课本96-102页,综合应用)FlowLayout布局流布局管理器(java.awt.FlowLayout)是java.awt.Applet、java.awt.Panel和javax.swing.JPanel的默认布局方式。特点:在容器中,从左到右依次排列组件,当组件排满一行时,则从下一行开始继续排列组件。可以设置每行组件的对齐方式为:左对齐、中间(默认对齐方式)和右对齐。类java.awt.FlowLayout的构造方法:publicFlowLayout()publicFlowLayout(intalign)publicFlowLayout(intalign,inthgap,intvgap)//参数hgap(vgap)指定同一行相邻两组件之间的水平(竖直)间隙,单位为像素,默认值均为5;参数align指定行对齐方式:java.awt.FlowLayout.LEFT(左对齐)、java.awt.FlowLayout.CENTER(中对齐)、java.awt.FlowLayout.RIGHT(右对齐)BorderLayout布局:边界布局管理器(java.awt.BorderLayout)是java.awt.Frame、java.awt.Dialog和javax.swing.Window、javax.swing.Frame、javax.swing.Dialog的默认布局方式。类java.awt.BorderLayout的构造方法:publicBorderLayout()publicBorderLayout(inthgap,intvgap)//参数hgap指定同一行相邻两组件之间的水平间距,参数vgap指定相邻两行组件之间的竖直间距,单位均为像素,默认值均为0GridLayout布局:特点,网格布局管理器(java.awt.GridLayout)将容器按行与列等分成相同大小的矩形区域(网格);每个组件占用具有相同宽度和高度的网格;添加组件到网格的顺序:从左到右,从上到下类java.awt.GridLayout的构造方法:publicGridLayout()publicGridLayout(introws,intcols)publicGridLayout(introws,intcols,inthgap,intvgap)//参数rows和col分别指定网格的行数和列数(注意实际行数和列数的计算),默认值均为1;参数hgap和vgap分别指定同一行相邻两组件之间的水平和竖直间距,单位均为像素,默认值均为0;CardLayout布局特点:卡片布局管理器(java.awt.CardLayout)对组件的排列类似于码扑克牌,新加入的组件放在已加入的组件的上面,每次一般只能看到一个组件;可以从上到下依次取出下一个组件,而当前组件变为最后一个组件;可以直接翻到某个组件,而组件之间前后排列顺序保持一致。类java.awt.cardLayout的构造方法:publicCardLayout()publicCardLayout(inthgap,intvgap)//参数hgap和vgap分别指定组件与容器边界之间的水平和竖直间隙,单位均为像素,默认值均为0;在CardLayout布局下向容器添加组件:使用类java.awt.container的成员方法:publicvoidadd(componentcomp,Objectcontraints)//将组件comp添加到当前容器中,参数contraints的实际类型为String,指定组件comp的名称。新加入的组件放在已加入的组件的上面类java.awt.CardLayout提供了成员方法:publicvoidshow(Containerparent,Stringname)//直接翻转到指定组件,但不改变组件间的前后排列顺序。参数parent指定要在其中布局的父容器;参数name指定要翻转到的组件的名称。publicvoidfirst(Containerparent)//翻转到容器parent的第一个组件publicvoidlast(Containerparent)//翻转到容器parent的最后一个组件publicvoidnext(Containerparent)//翻转到容器parent中当前显示组件的后一个组件publicvoidprevious(Containerparent)//翻转到容器parent中当前显示组件的前一个组件Null布局与setBounds方法可以把一个容器的布局设置为null,即空布局。而采用组件的setBounds()方法设置其大小和在容器中的位置。类java.awt.Component的成员方法:publicvoidsetBounds(intx,inty,intwidth,intheight)//设置组件位置及大小。由x和y指定组件的左上角在容器中的位置坐标,由width和height指定组件的宽和高。类java.awt.Component还有成员方法:publicDimensiongetSize()//以Dimension对象的形式返回组件的大小。Dimension对象的height字段包含此组件的高度,而Dimension对象的width字段则包含此组件的宽度。布局管理器类(如FlowLayout、BorderLayout、GridLayout、CardLayout等)有成员方法:publicvoidsetHgap(inthgap)//将组件之间的水平间距设置为指定值publicvoidsetVgap(intvgap)//将组件之间的垂直间距设置为指定值6.文本框和文本区文本框:文本框(javax.swing.JTextField)可用来编辑单行文本。文本框(类javax.swing.JTextField)的构造方法:publicJTextField()publicJTextField(Stringtext)publicJTextField(intcolumns)publicJTextField(Stringtext,intcolumns)//参数text指定在文本框中显示的初始文本信息;参数columns为非负整数,指定文本框的宽度类java.swing.JTextFieldpublicStringgetText()//获取文本框的文本信息publicvoidsetText(Stringt)//设置文本框的文本信息publicvoidsetEditable(booleanb)//设置文本框是否可编辑,b为true则可编辑,为false则不可编辑。文本框(JTextField)可以触发动作事件,其类定义中含有成员方法publicvoidaddActionListener(ActionListenera)//为文本框注册由参数a指定的动作事件监视器文本区:可以编辑多行文本信息的文本区域;文本区域不能自动进行滚屏处理,可以将文本区域添加到滚动窗格(JScrollPane)中,从而实现文本区域自动添加滚动条的功能。文本区(类javax.swing.JTextArea)的构造方法:publicJTextArea()publicJTextArea(Stringtext)publicJTextArea(int

rows,int

columns)publicJTextArea(Stringtext,introws,intcolumns)//参数text指定在文本区域中显示的初始文本信息;参数rows指定显示的行数;参数columns指定显示的列数类java.swing.JTextArea的成员方法:publicStringgetText()//获取文本区的文本信息publicvoidsetText(Stringt)//设置文本区的文本信息publicvoidsetLineWrap(booleanwrap)//设置文本区的换行策略。如果设置为true,则当行的长度大于所分配的宽度时,将换行。如果设置为false,则始终不换行。实现文本区域自动添加滚动条,只需使用滚动面板(javax.swing.JScrollPane)的构造方法:publicJScrollPane(Componentview)//参数view指定需要加上滚动条功能的组件例如:JTextAreata=newJTextArea();JScrollPanejsp=newJScrollPane(ta);数据输入和输出在GUI中,常用文本框和文本区实现数据的输入和输出。图形界面设计(二)1.选择框和单选按钮选择框(JCheckBox)和单选按钮(JRadioButton)均为触击式选择组件,单击这些组件时,都能触发特定的事件,使得复选框和单选按钮的选择状态发生变化。选择状态有两种,一种是选中(on),一种是未选中(off)。当需要让用户在一组选择项目中做出选择时,可以使用选择框和单选钮。选择框(选择框也称为复选框,选择框(类javax.swing.JCheckBox)的常用构造方法:publicJCheckBox()publicJCheckBox(Stringtext)publicJCheckBox(Stringtext,booleanselected)//参数text指定复选框的文本信息;参数selected指定复选框是否处于被选中状态单选框可以用选择框(JCheckBox)实现单选框,方法是通过按钮组(ButtonGruop):通过类javax.swing.ButtonGroup的构造方法:publicButtonGroup()//创建按钮组通过类javax.swing.ButtonGroup的成员方法:publicvoidadd(AbstractButtonb)//将选择框b添加到当前按钮组添加到同一个按钮组中的多个选择框有联动的特点,即同一时刻组内只能有一个选择框处于选中状态。单选按钮单选按钮(类javax.swing.JRadioButton)的构造方法:publicJRadioButton()publicJRadioButton(Stringtext)publicJRadioButton(Stringtext,booleanselected)//参数text指定复选框的文本信息;参数selected指定复选框是否处于被选中状态单选按钮之间的联动是通过按钮组(ButtonGruop)实现的:通过类javax.swing.ButtonGroup的构造方法:publicButtonGroup()//创建按钮组通过类javax.swing.ButtonGroup的成员方法:publicvoidadd(AbstractButtonb)//将按钮b添加到当前按钮组添加到同一个按钮组中的单选按钮具有联动的特点。类java.swing.JCheckBox或类java.swing.JRadioButton的成员方法:publicStringsetSelected(booleanb)//设置复选框或单选按钮的选中状态publicbooleanisSelected()//返回当前复选框或单选按钮的选中状态选择项目事件处理复选框(JCheckBox)和单选按钮(JRadioButton)都可以触发项目事件(ItemEvent)这两类组件均含有成员方法publicvoidaddItemListener(ItemListenera)//为组件注册由参数a指定的项目事件监视器项事件监听器项事件监视器一般是实现接口java.awt.event.ItemListener的类的实例对象。接口java.awt.event.ItemListener的定义如下:publicinterfaceItemListenerextendsEventListener{publicvoidItemStateChanged(ItemEvente);}项事件对象项事件对象的具体类型为java.awt.event.ItemEvent。类java.awt.event.ItemEvent的常用成员方法包括:publicObjectgetSource()//返回当前事件的事件源publicItemSelectablegetItemSelectable()//返回当前事件的事件源程序实例(见课本112-113页)2.列表和组合框列表JList构造方法:JList(),JList(String[]list)其他常用方法:课本114-116页组合框JComboBox---文本框和列表的组合常用构造方法:JComboBox(),JComboBox(JComboBoxModelaModel),JComboBox(Object[]items)选择框菜单项JCheckBoxMenuItem4.对话框JDialog类JOptionPane类6.鼠标事件MouseListener接口MouseMotionListener接口图形、图像与多媒体主要内容:绘图基础、绘图、图像处理基础、多媒体基础7.1绘图基础Graphics类的基本功能:建立字体、设定显示颜色、显示图像和文本、绘制和填充各种几何图形。getGraphics()Paint()paintComponent()字型和颜色drawString(Stringstr,intx,inty)drawChars(chardata[],intoffset,intlength,intx,inty)drawBytes(bytedata[],intoffset,intlength,intx,inty)字型的三个要素:字体、风格、字号类Font设置字型构造方法有:Font(StringfontName,intstyle,intsize)常用方法如:getStyle()getName()等绘图模式:如何确定重叠部分,正常模式、异或模式setPaintMode()、setXORMode()7.2绘图Graphics类的绘图方法画线段drawLine()画矩形drawRect()画图擦除矩形块clearRect()复制图形copyArea()Graphics2D类的绘图方法7.3图像处理基础图像载入和输出Image类:getImage(URLurl)图像缓冲技术加载图像小应用程序通过URL得到网页上的图像类java.applet.Applet中的方法ImagegetImage(URLurl)ImagegetImage(URLurl,Stringname)返回图像对象显示图像类java.awt.Graphics中的成员方法不带缩放的图像显示:booleandrawImage(Imageimg,intx,inty,Colorbgcolor,ImageObserverobserver)booleandrawImage(Imageimg,intx,inty,ImageObserverobserver)带缩放的图像显示:booleandrawImage(Imageimg,intx,inty,intwidth,intheight,Colorbgcolor,ImageObserverobserver)booleandrawImage(Imageimg,intx,inty,intwidth,intheight,ImageObserverobserver)图像缓冲技术BufferedImage类通过定时器控制动画速度javax.swing.Timer构造方法publicTimer(intdelay,ActionListenerlistener)成员方法publicvoidsetInitialDelay(intinitialDelay)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论