1、第三章. Java,对外经济贸易大学信息学院,第三章.Java,第一节.Java概述 第二节.Java语言基础 第三节.面向对象编程,第一节 Java概述,Java语言起源Java是SUN公司发明的一种计算机程序设计语言,现今已经得到广泛应用。Java的名称来源于太平洋上的一个名为Java的小岛,该岛盛产的咖啡为Java的发明者喜爱,于是他们将该语言命名为Java。Java的目标是成为一种简单、有效、易用的跨计算机平台(硬件、操作系统等)的通用程序设计语言。 1995年Sun公司正式推出了Java语言,现在,Java语言及其扩展技术已经成为互联网应用开发和企业应用开发等的最重要的技术之一。,J
2、ava语言特点 Java是一种简单、面象对象、分布式、解释执行、健壮、安全、结构中立、可移植的多线程的动态的程序设计语言。,Java程序类型 根据计算结构的不同,Java程序最初划分为Application(普通应用程序)和Applet(Java小程序)两大类。这两类程序的开发原理基本相同,但是运行环境有所不同。 Java Application是独立完整的程序,定义有main方法,在命令行调用独立的解释器即可运行。Java Applet主要嵌入到网页里面,由WWW浏览器里面的解释器解释执行。随着Java技术的发展,更多的Java程序类型出现,如Servlet,Java Bean和EJB(En
3、terprise JavaBean)等。Servlet是使用Java技术开发Web应用的基础,它运行在一个Web服务器端的Servlet容器内,支持创建动态的Web页面,极大的增强了Web应用的开发能力;JavaBean是描述Java的软件组件模型,通过JavaBean可以实现代码的重复利用,并可很好的扩充Java程序的功能;EJB是在称作 EJB 容器的特殊环境中运行的软件组件。容器容纳和管理 Enterprise Bean 的方式与 Java Web 服务器容纳 Servlet 或浏览器容纳 Java Applet 的方式相同。Enterprise Bean 不能在 EJB 容器外部运行。
4、,Java 虚拟机 Java程序由Java解释器负责解释、运行,Java解释器是Java虚拟机(见下图)的一部分,不同操作系统和平台上运行的Java虚拟机可将不同平台间的差异性隐藏起来。下图给出了Java程序从源代码到执行的全过程。,JDK JDK (Java Development Kit )是Java开发的工具包,它是构建在Java平台上的应用程序、Applet 和组件的开发环境。 JDK是一切java应用程序的基础,所有的java应用程序是构建在它之上,Java程序员可以使用JDK里提供的类去开发应用程序,JDK提供了编译工具(javac.exe)和解释器(java.exe)供开发者编译
5、和解释执行Java程序。JDK有不同的版本,截至目前(2005年7月)已发布到1.5版本。下面将介绍JDK的安装和使用,介绍中使用版本JDK1.2.3,不同JDK的安装和使用基本是一样的。,JDK的安装与环境设置 JDK的安装与环境设置步骤如下: 1.从网络()下载适合自己操作系统的JDK软件版本。 2.下载结束后将在本地计算机得到一个名为jdk123-win32.exe的开发工具安装文件,在计算机的c盘建立一个名为JDK的目录,将jdk123-win32.exe保存在该目录下。 3.下载JDK的帮助文档jdk123-doc.zip文件,在c盘的JDK目录下建立子目录Document把jdk1
6、23-doc.zip文件保存在这个子目录下。 4.运行jdk123-win32.exe文件,安装在指定的目录下,例如,安装在C:JDK目录下。 5.设置环境变量PATH。修改计算机的C:AUTOEXEC.BAT文件(假定操作系统在C盘安装),在其中增加一句set path=%path%;c:jdkbin,如果没有该文件,自己手工创建。 6.设置环境变量CLASSPATH。修改计算机的C:AUTOEXEC.BAT文件,在其中再增加一句set classpath=.; c:jdklib;%classpath%。然后在c:下手工执行AUTOEXEC.BAT使得环境变量path和classpath生效
7、。 7.使用解压缩工具Winzip解压JDK帮助文件jdk123-doc.zip,将获得一组以HTML文件形式组成的帮助文件,把它们保存在本地的一个目录下,例如,保存在C:JDKDocument目录下。,第一个Java Application程序 编写并编译第一个Java Application程序步骤如下: 打开一个纯文本编辑器,如notePad 键入如下程序:public class FirstJavaProgram public static void main(String args)System.out.println(“This is my first java program!“
8、); 检查无误后(注意大小写准确)把文件保存起来,命名为FirstJavaProgram.java,可以创建如下的目录保存这个文件:C:lx。 进入命令方式(MS-DOS),在保存由上述FirstJavaProgram.java文件的目录下运行Java编译器:C:lxjavac FirstJavaProgram.java如果JDK安装正确、程序输入无误且保存的文件名正确,运行编译器没有任何输出,否则会输出错误信息,一般的错误都是由于拼写失误引起的。再运行dir命令查看是否已在相同目录下生成一个名为FirstJavaProgram.class的文件。 利用Java解释器运行这个Java Appl
9、ication程序,并查看运行结果: C:lxjava FirstJavaProgram 程序运行结果: This is my first java program!,第一个Java Applet程序 编写并编译第一个Java Applet程序步骤如下: 打开一个纯文本编辑器。 键入如下程序: import java.applet.Applet; import java.awt.Graphics; public class FirstJavaApplet extends Applet public void paint(Graphics g) g.drawString(“This is my
10、first java Applet!“,15,20); 检查无误后把文件保存起来,命名为FirstJavaApplet.java,可以创建如下的目录保存这个文件:C:lx 进入命令方式(MS-DOS),在保存由上述FirstJavaApplet.java文件的目录下运行Java编译器: C:lxjavac FirstJavaApplet.java,编写配合Applet的HTML文件,打开一个纯文本编辑器,键入如下的HTML代码:检查无误后把文件名为FirstJavaApplet.html,与文件FirstJavaAppletJava保存在同一个目录下。直接双击这个HTML文件的图标,查看App
11、let在浏览器中的运行结果。,第三章.Java,第一节.Java概述 第二节.Java语言基础 第三节.面向对象编程,第二节 Java语言基础,标识符、变量与常量 标识符是赋予变量、常量、方法、对象或类的名称,标志其存在。一个java的标识符可以由大小写字母、数字、下划线和美元符号组合而成,但必须以字母、下划线或美元符号开头。不符合这一规则的组合就是非法标识符。下面是一些合法的标识符:MyClass $Name line3_1 circle$pot_8下面是一些合法的标识符:5club Hot-street tele123 Red/Bad students在java语言中是大小写敏感的,例如c
12、lass和Class,aVar和avar代表不同的标识符。,数据类型 在java有一些特殊的类型,可以称为基本数据类型。对于这些类型,java采纳了与C语言类似的方法,可以直接创建非句柄的变量,变量中直接存储它的值。java语言中定义了8种基本数据类型:字节型(byte)、短整型(short)、整形(int)、长整型(long)、字符性(char)和浮点型(float)。其长度、缺省值和取值范围如下表所示。一切数据都是对象。,运算符java语言定义了丰富的操作运算,包括赋值运算、算术运算、关系运算和逻辑运算。 1.赋值 赋值是用等号(=)运算符进行的。它的含义是“取得右边的值,把它复制到左边”
13、。右边的值可以是任何常量、变量或表达式。左边必须是一个明确命名的变量。 在进行赋值运算时,运算符等号(=)左边的变量类型和右边值的类型相同时可以赋值,这种情况称为类型相容;参运算符等号(=)两边不相同,如果左边变量类型比表达式类型长时,系统会自动将表达式转化为较长的类型,这时也可以赋值,这种情况可以称为赋值相容。 例如, long a=10L; /类型相同 long b=8 /8是int,自动转化为long,赋值相容 当赋值不相容时,需要使用强制类型转换,格式如下: (目标类型)表达式 例如, a=(int)10L /数值的转换,2.算术运算算术运算是针对数值类型操作数进行的运算,算术运算符分
14、为一元运算符和二元运算符。一元运算符只有一个操作数,而二元运算符有两个操作数参加运算。 一元运算符:一元正(+),一元负(-),加1(+)和减1(-)。 例如, int a=8,b,c; b=+a; /取原值,则b=8 c=-a; /取相反符号值,则c=-8 c=a+; /先c=a,再a=a+1,则c=8,a=9 d=+b; /先b=b+1,再d=b,则d=9,b=9 二元运算符:加(+),减(-),乘(*),除(/)和取余(%)。 只有整数类型的数据才能够进行取余运算,两个整数类型的数据做除法时,结果是截取商数的整数部分。例如, 7/2=3 /整除 7%2=1 /余数为整数,3. 关系运算
15、关系运算符用于比较两个值之间的大小,结果返回布尔值。它们评价的运算对象值之间的关系。若关系是真实的,关系表达式会生成true的结果;反之,生成false的结果。关系运算符有6种:等于(= =),不等于(!=),大于()大于等于(=),小于()和小于等于(=)。等于和不等于适用于所有内建的数据类型。,4.逻辑运算 布尔运算符只能处理布尔值,所得结果都是布尔值。布尔运算符有:逻辑与(&),逻辑或(|),逻辑非(!),逻辑异或(),条件与(&),条件或(|)。,5.其他运算符 除了前面所述几种运算符以外,java还提供位运算符、三元if-else运算符、字符运算符+等运算符。 位运算是对操作数以二进
16、制比特位为单位进行的操作和运算,位运算的操作数和结果都是整型量。位运算符有:位反(),右移(),左移()。 三元if-else运算符格式如下:?:该运算符的作用是:先计算的值,当的值为true时,则将的值作为整个表达式的值;当的值为false时,则将的值作为整个表达式的值。 字符运算符“+”用于字符串合并运算。当“+”合并一个字符串与一个操作数时,自动将操作数转化为字符串。例如,System.out.println(“a=”+a);,流程控制语句 java的流程控制语句包括选择控制语句、循环控制语句和跳转控制语句。 1.选择控制语句 java语言中提供了两种选择控制语句if-else语句和sw
17、itch语句。if-else语句的一般形式是:If () ;else ;条件表达式必须产生一个布尔结果。条件表达式的取值为真,则执行,否则执行。其中else是可选的,可以自嵌套。switch语句是多分支的开关语句,形式为:switch()case:;break;case:;break;default:;,2.循环控制语句 java语言中提供了三种循环控制语句for语句、while语句和do-while语句。 for语句的格式 for (;) ; 其中给循环变量初始化;给循环结束条件,结果为布尔值;表示循环变量的增量或减量;是循环体,可以是一条语句,也可以是括起来的多条语句。 while语句的格
18、式 while() ; 的结果是布尔值,表示循环执行的条件,当值为true时,执行循环体;当值为false时,循环结束,执行下一条语句。在循环刚开始时,会计算一次的值,对于后来的每一次循环,都会对其重新计算。 do-while语句格式 do ; while();,3.跳转控制语句 java语言中提供了三种跳转控制语句continue语句、break语句和return语句。使用这些语句可以从正在执行的程序段转移到其他部分执行。 continue语句 continue语句必须用于循环结构中,它有两种使用形式。 一种是不带标号的continue语句,它的作用是终止当前这一轮的循环,跳过本轮剩余的语句
19、,直接进入当前循环的下一轮。 另一种是带标号的Continue语句,其格式是: continue ; 其中这个标号名应该定义在中外层循环语句的前面,用来标志这个循环结构。 break 语句 break 语句的用途是从一个封闭语句中跳出,并将控制权交给循环语句或分支语句后面的语句。其格式如下: break ; 其中用于指定一个封闭语句的标号。一般情况不用标号。 return 语句 return 语句用来使程序从方法中返回,并为方法返回一个值。return 语句的格式如下: return 返回值;,数组 在Java语言里,数组和C及C+的数组有区别,Java的数组是一种特殊的对象,使用前必须象其它
20、对象一样先创建,然后再使用(详见类的使用章节)。下面分别给出一维数组的使用方法,一维数组里面的元素可以是简单类型或者对象类型,元素类型不同,使用方法也不同。1.一维数组的语法 声明一维数组的语法为: 或者 下面两个语句都声明了一个整型数组,数组的每一个元素都是int类型的。int a ;int a;下面两个语句声明了一个对象数组,数组的每一个元素都是Student类型的(假设Student是一个类)。Student stu ;Student stu;,2.创建数组对象 在Java中,数组在声明的时候不象C和C+一样要指定元素个数,并且声明后也不能直接使用。必须使用new操作符创建数组对象(为数
21、组分配空间),在创建的时候指定元素个数。语法如下:=new 例如针对前面的声明,可以以如下语句分别创建数组a和stu。a=new int 5 ;stu=new Student20;当然也可以在声明的同时创建数组对象,如下:int a =new int 5;Student stu=new Student20;,3.属性length 数组作为一个对象,有一个属性length,代表数组的长度,访问该属性的语法如下:Length比如如下语句执行后,l的值就为5,因为创建数组时指定的元素个数为5,即数组产毒为5。int a =new int 5;int l=a. length;对于Java基本类型的数组
22、和对象类型的数组使用上不一样,这是因为任何一个对象必须先创建后使用,而基本类型定义后可以直接使用。分析一下上面的声明,a和stu都是对象(数组对象),a0,a1 ,a2,a3,a4是整数(简单类型),而stu0,stu1,一直到stu19不是简单类型,它们是Student类型,stu0到stu19仍然不能直接使用,需要继续创建对象才能使用。,4.实例 下面给出一个简单类型的数组使用例子。 testArray.java代码如下 public class testArray public static void main(String args) int a = new int 4; /创建数组对
23、象 aint i;for (i=0;i4;i+) /给a的每个元素赋值ai = i; for (i=0;i4;i+) /打印每个元素System.out.print(ai+ “ “); 程序运行结果如下:0 1 2 3,如下是另外一个对象类型的数组例子,为了演示数组,定义了一个类Student,里面只指定了一个属性name和构造函数,其他属性和方法都省略,特别注意黑体部分,这是和基本类型的数组不一样的地方。 testObjectArray.java代码如下: class Student String name;Student (String nm)name=nm; public class t
24、estObjectArray public static void main(String args) Student stu = new Student3; /声明并创建数组对象stu,3个元素int i;for (i=0;istu.length;i+) /创建stu0, stu1, stu2stui=new Student(“name“ +i); for (i=0;i stu.length;i+) /打印每个元素System.out.println(stui.name); 程序运行结果如下: name0 name1 name2,5.数组赋初值 可以在声明数组的同时,为数组赋初值。例如:in
25、t a =1,2,3,4;数组a的4个元素依次是a0,a1 ,a2 ,a3,第三章.Java,第一节.Java概述 第二节.Java语言基础 第三节.面向对象编程,第三节 面向对象编程,面向对象方法基础1.面向对象的方法概述 面向对象的方法是当前软件开发的主流方法。开发一个软件是为了解决某个领域的问题,面向对象的方法强调直接以问题域中的事物为中心来思考和认识问题,强调运用人们日常的逻辑思维中经常运用的思维方法与原则(如抽象、分类、继承、聚合、封装)来有效地思考问题,强调软件应该保持问题领域的本来面貌,并以人们能够看的懂的方式表达出来。因为日常生活中的概念和对象都是人们所熟悉的,这大大降低了人们
26、认识问题的难度,同时降低了开发软件的难度。,2.面向对象开发的阶段 采用面向对象的方法的开发过程大致可以分为三个阶段:1)面向对象的分析(OOA)面向对象的分析的主要作用是明确用户的需求,并用面向对象的模型(OOA模型)表述这一需求。2)面向对象的设计(OOD)面向对象的设计阶段主要关注系统如何完成客户的需求,OOD阶段将对OOA模型进行细化分析和设计,对系统的静态和动态模型进行设计,设计的结果是系统物理模型,模型中的设计元素能从最终的程序中找到对应体。3)面向对象的实现(OOP)面向对象的实现就是使用面向对象的编程语言(如Java)编码以实现整个软件系统。在OOD模型中定义了很多对象和类,它
27、们的静态特性和动态特征都最终使用特定的程序设计语言给出实现。,3.面向对象的四个基本特征面向对象的编程方法具有如下四个基本特征,要掌握面向对象的程序设计,理解这四个特征是非常重要的。 1)抽象 抽象就是忽略掉问题域中非本质的方面,而抓住所解决问题的主要特征,以便更充分地注意与当前目标有关的方面。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的学号、课程和成绩等和解决问题有关的信息,而不用去关心他的身高、体重这些无关的信息。抽象的基本用途是从对象的实现中分离出一个对象对外部的某个操作请求的反应。,2)封装封装是面向对象的特征之一。封装是把过程和数据包围起来,对数据的访问只
28、能通过已定义的对外接口方法。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。封装主要依靠对类、数据和方法的访问控制,比如在Java语言中,可以在定义属性和方法时加上private、protected和public等关键词来定义属性和方法的对外的可见性。,3)继承继承是一种表示类的关系一种的模型,它允许类的重用。一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性(方法和变量),新类被称为原始类的派生类(子类),而原始类被称为新类的基类(父类)。在继承已有功能的基础上,新类也可以修改或增
29、加新的方法使之更适合特殊的需要。,4)多态性多态指的是一个程序中同名的不同方法共存的情况,面向对象的程序中多态可以通过子类对父类方法的覆盖来实现,方法的含义由调用的场景来决定。,Java自定义类 抽象和封装主要体现在类的定义和使用上,类的定义和使用是面向对象程序设计的主要工作之一。类是一种复杂的数据类型,它将对象的属性对属性的相关的操作封装在一起。在类中用变量表示对象的属性,用方法(函数)表示对象的行为。下面给出Java如何定义和使用类。,1.类的定义类的定义格式分为两部分,类声明和类主体。声明语法如下: 1)类的声明 其中,类声明语法如下: class extends implements,
30、2)类主体声明语法如下:声明变量声明语法如下: static final transient ;static:静态成员变量final:常量transient:临时变量,声明方法声明语法如下: (参数列表)throws如果没有返回值,用void标记。例如,public class Student /类声明private int studentID; /成员变量1 private String studentName; /成员变量2public void setStudentName (String name) /无返回值,有参数studentName=name;注意,方法前如果有static关键
31、字,表示该方法是静态方法(也叫类方法),静态方法可以通过类名直接访问。,2.构造函数 构造函数又叫构造器,它是类的特殊方法。构造方法名和类名同名,没有返回值(不用写void),它的主要作用是用来创建对象并初始化对象成员变量的值。构造函数可以有参数也可以没有参数。每个类至少有一个构造函数,一个类也可以有多个构造函数。如果在类的声明中没有定义任何构造函数,编译器会自动生成一个无参构造函数,这个构造函数可以被调用以创建对象,只是它没有对对象的变量进行初始化等工作。,下面给出一个例子,该例定义了一个圆类,类中有2个构造函数,一个具有1个参数的构造函数用于指定圆的半径,另一个是无参构造函数,无参构造函数
32、缺省指定圆的半径为10。 class Circle double radius; /半径public Circle (double r) /有参构造函数radius=r; public Circle () /无参构造函数radius=10;double calcCircumference () /求周长方法return 2.0 * 3.14 * radius; double calcArea() /求面积方法return 3.14*radius*radius; ,3.类的使用在定义好类之后,可以调用类的构造函数去创建对象,并调用对象的其它方法来完成特定的功能。下面给出对象创建和使用方法。 1)
33、对象的声明和创建 声明语法如下:例如下面语句声明了一个c1对象(实际是引用)。Circle c1; 对象的创建是通过调用构造函数创建的,通过new操作符来调用构造函数。语法如下: =new (参数列表) 例如,下面语句创建了一个半径为20的圆的对象。c1=new Circle(20); 还可以在声明对象的同时使用new运算符创建对象。格式如下:=new (参数列表) 例如:Circle c1=new Circle(20);,2)引用成员变量 引用成员变量语法如下: . Circle c1=new Circle(20); double d1=c1.radius; 其中c1为对象名,c1.radi
34、us访问c1对象的变量radius,将结果放到变量d1里面。 3)调用成员函数 调用成员函数语法如下: . 例如, Circle c1=new Circle(20); double area1=c1. calcArea( );其中c1为对象名,c1.calcArea( )通过c1对象调用计算面积的方法,将c1的面积放到变量area1里面。 特殊的方法静态方法,除了可以使用如上方法访问外,也可以通过类名来访问,语法为.。如类Student的静态方法getSchoolName可以用Student.getSchoolName( )访问。,4.访问控制修饰符访问控制修饰符可以修饰类或者类的成员。通过修
35、饰来达到控制一个类或者类的成员变量和方法的外部可见性(外部是否可以访问它们)。类的封装主要通过合理定义类和类成员的访问控制修饰符来实现。 一个类的访问控制修饰符只能使用public,表示该类是公有的,可以在任何地方定义和创建该类对象并使用。如果一个类没有public修饰,那么该类只能在包内使用,包是java语言的一个逻辑组织单位,里面可以包含很多类。 在类的可见性确定后,可以对类的方法和属性进行修饰,进一步确定方法和属性的可见性。定方法和属性的修饰可以使用4种访问权限:公有(public)、保护(protected)、默认(包内可用的)和私有(private)。下表说明了不同修饰符下,成员的可
36、见性。类的修饰可以用public或者没有任何修饰(缺省),而成员的修饰有4种。,不同修饰符下成员的可见性,Java常用类介绍 并不是任何一个类都需要从头开始定义,Java已经定义好很多基础类供开发者使用。Java语言由语法规则和类库组成,学习java要注意学习语法规则和类库中的类。 1.常用的Java包 Java语言提供的基础类被组织在不同的Java包里面,每个包中都有很多完成特定功能的类。常用的Java包如下:,java.langjava.lang包定义了Java语言最基础的一些类,如类Object(所有类的父类)、数据类型类、字符串类 (String,StringBuffer)以及Syst
37、em类、Runtime类(提供了使用系统资源的方法)、线程类(多线程程序设计)、Math(数学规则及常量库)、异常类、错误类和Throwable等。 java.io提供了一套用以读入或输出到文件或其他输入输出源的输入输出流的类。 java.util提供了日期,堆栈,向量,hash表等工具类。 java.awt提供了获取输入信息或显示信息的GUI元素,如视窗、按纽、滚动条等类。 java.applet提供了支持Java小程序的类。 提供了支持Java网络编程的类。 java.sql提供了访问数据库类。 java.awt.event提供了事件相关的类。要使用这些包里面的类,程序中必须显式引入(包含
38、)这些包。这可以通过使用import关键字来实现。使用java.lang包中的类无需显式引入java.lang包,该包会自动被包含。比如:import java.applet.Applet; /引入java.applet包中的Applet类import java.awt.*; /引入java.awt包中的所有类,2. String类的方法 String类主要用于字符串处理,该类里包含了常见的字符串操作函数,比如连接、查找、替换、比较、截取函数以及类型的转换函数等。String类的对象一旦创建,其内容不可以更改。 常用构造函数如下 String() :构造一个空字符串对象。 String(byt
39、e bytes) :通过byte数组构造字符串对象。 String(char value) :通过char数组构造字符串对象。 String(String original) :构造一个original的副本。既,拷贝一个original。 String(StringBuffer buffer) :通过StringBuffer数组构造字符串对象;,int length() 返回当前字符串长度。 char charAt(int index) 取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。 代码: String s = new Str
40、ing(“Student“); System.out.println(s.charAt(5) ); 结果为:n int compareTo(String anotherString) 当前String对象与anotherString比较。相等关系返回; String concat(String str) 将该String对象与str连接在一起。 boolean endsWith(String suffix) 该String对象是否以suffix结尾。 byte getBytes() 将该String对象转换成byte数组。 int indexOf(int ch, int fromIndex)
41、从fromIndex开始找第一个匹配字符位置。,int indexOf(String str, int fromIndex) 从fromIndex开始找第一个匹配字符串位置。 例如: String s = new String(“write once, run anywhere!“); /注意run前有一个空格String ss = new String(“run“); System.out.println(s.indexOf(ss) ); 结果为: 12 String replace(char oldChar, char newChar) 将字符号串中第一个oldChar替换成newChar
42、 boolean startsWith(String prefix) 该String对象是否以prefix开始。 boolean startsWith(String prefix, int toffset) 该String对象从toffset位置算起,是否以prefix String substring(int beginIndex) 取从beginIndex位置开始到结束的子字符串。 String substring(int beginIndex, int endIndex) 取从beginIndex位置开始到endIndex位置 static String valueOf(其它类型 b)
43、这个方法是一个静态方法,参数的类型可以是int,double和对象等任何类型,该方法用于将各种不同类型转换成Java字符型。这些都是类方法。,3. StringBuffer类的方法 在实际应用中,经常需要对字符串进行动态修改。这时候,String类的功能受到限制,而StringBuffer类可以完成字符串的动态添加、插入和替换等操作。1)构造函数 StringBuffer( ):构造一个没有任何字符的StringBuffer类。 StringBuffer(int length):构造一个没有任何字符的StringBuffer类,并且,其长度为lengthStringBuffer(String
44、str) :以str为初始值构造一个StringBuffer类。,2) append方法 StringBuffer append(boolean b) StringBuffer append(char c) StringBuffer append(char str) StringBuffer append(char str, int offset, int len) StringBuffer append(double d) StringBuffer append(float f) StringBuffer append(int i) StringBuffer append(long l) S
45、tringBuffer append(Object obj) StringBuffer append(String str) StringBuffer append(StringBuffer sb),3) int capacity() 返回当前StringBuffer对象(字符串缓冲区)的总空间,而非字符号串的长度。 4) int length() 返回当前StringBuffer对象(字符缓冲区)中,字符串的长度。注意:此方法与capacity() 不同。 5) char charAt(int index) 在当前StringBuffer对象中取索引号为index的字符。第一个字符的索引为“
46、0” 。,6)StringBuffer delete(int start, int end)删除当前StringBuffer对象中以索引号start开始,到end结束的子串。 7)StringBuffer deleteCharAt(int index)删除当前StringBuffer对象中索引号为index的字符。 8)int indexOf(String str)返回当前StringBuffer对象中,第一个满足str子串的位置。,9) StringBuffer insert(int offset, String str) 以上的方法都是在当前StringBuffer对象中插入 一个元素,在
47、索引号offset处插入相应的值。 10)StringBuffer replace(int start, int end, String str) 替换当前StringBuffer对象的字符串。从start开 始,到end结束的位置替换成str。 11)void setCharAt(int index, char ch) 设置索引号index的字符为ch。,12)void setLength(int newLength) 重新设置字符串缓冲区中字符串的长度,如果newLength小于当前的字符串长度,将截去多余的字符。 13)String substring(int start, int en
48、d)取当前StringBuffer对象中,从start开始到end的子串。 14)String toString() 将当前StringBuffer对象转换成String对象。,4. Math类 Math类是一个工具类,它主要用于数学有关的计算。该类包含许多数学函数,如sin、cos、exp、abs等。Math类里面的方法都是静态的,所以一般不用实例化该类的对象,可以直接通过类名调用该类的方法或者访问静态变量。常用的静态成员如下: public final static double E; 代表数学中的e 2.7182818 public final static double PI; PI代
49、表 3.1415926 double abs(double a) 求a的绝对值,参数也可以是其它类型 double rint(double a) 四舍五入 double sqrt( double a ) sqrt求a的开平方。 double floor( double a ) floor返回最大的小于a的整数。 double ceil( double a ) ceil返回最小的大于a的整数。 double exp( double a ) exp求e的a次幂。 double pow(double a, doube b) 求a的b次方 double random( ) 产生 0.0,1.0 )随机数 double log( double a ) log返回lna。 double sin( double a ) sin求正弦函数。 double cos( double a ) cos求余弦函数。 double tan( double a ) tan求正切函数。 double asin( double a ) asin求反正弦函数。 double acos( double a ) acos求反余弦函数。 double atan( double a ) atan求反正切函数。,