收藏 分享(赏)

java类的数据成员第3章.ppt

上传人:wspkg9802 文档编号:8035125 上传时间:2019-06-05 格式:PPT 页数:194 大小:2.90MB
下载 相关 举报
java类的数据成员第3章.ppt_第1页
第1页 / 共194页
java类的数据成员第3章.ppt_第2页
第2页 / 共194页
java类的数据成员第3章.ppt_第3页
第3页 / 共194页
java类的数据成员第3章.ppt_第4页
第4页 / 共194页
java类的数据成员第3章.ppt_第5页
第5页 / 共194页
点击查看更多>>
资源描述

1、第3章 类的数据成员,3.1 类的数据成员概述 3.2 简单数据类型的使用方法 3.3 简单数据类型的包装类 3.4 字符串数据类型的使用方法 3.5 数组数据类型的使用方法 3.6 J2SDK帮助文档的使用 3.7 Java标识符命名规范,第3章 类的数据成员 学习目标 掌握标识符与关键字的概念; 掌握简单数据类型byte、short、int、long、float、double、 char和boolean等的使用方法; 掌握简单数据类型对应的包装类的使用方法; 掌握String类型及其常用的操作方法; 掌握数组的声明与实例化,理解数组的一些高级操作; 学会J2SDK帮助文档的使用方法; 理解

2、软件开发中Java语言各种标识符的命名规则。,类是一种由用户定义的新型数据类型,与整型或实型数据相比,类是一种复杂的数据类型,所以也称为构造类型。一个类由表示对象状态的属性和对属性数据进行操作的方法组成,即类是数据成员与方法成员的封装体。本章介绍类的数据成员。,3.1 类的数据成员概述数据成员是一个类的核心内容。设计类的主要内容是设计数据成员,同类的对象之所以互不相同,是由于它们有不同的属性值(即数据)。,3.1.1 数据成员的定义格式类的数据成员也叫属性成员,或叫字段(field)。在设计类时,定义数据成员的简单格式为数据成员类型 数据成员名;例如int sum;int math, engl

3、ish; /注意在程序设计实践中,一般在一行只定义一个属性,数据成员还可在定义时进行赋值初始化,例如: int sum = 0 ;注意:如果一个数据成员在定义时进行了赋值初始化,在执行构造函数时对该数据成员也进行了初始化,则该数据成员的值为执行构造函数时所赋的值。,3.1.2 数据成员的修饰符数据成员的类型前面还可以加修饰符,数据成员的修饰符可分为存取性修饰符和存在性修饰符两类。 1)存取性修饰符:有publicprivateprotectedpackage 2)存在性修饰符:有staticfinal,final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量

4、。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final不能用于修饰构造方法。 注意:被final修饰的数据成员在定义时,一定要同时赋初值,不能在程序的其他地方进行修改。否则会出现编译错误。如已有这样的声明“final float PI;”,然后在程序的其他地方有赋值语句PI = 3.12,这是不允许的。final float PI=3.14f; (但可以初始化对象的时候再赋初值),public class Test3 final float PI; /PI空白 /PI=3.14f; Test3( )PI=3.14f; public static void main(Str

5、ing args) Test3 t=new Test3( ); System.out.println(t.PI); ,final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 一旦给final变量赋初值,值就不能再改变。 final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,但是无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。,class Test private

6、final String S=“final实例变量S“; private final int A=100; public final int B=90; public static final int C=80; /可理解为“全局常量”,一旦给值就不可修改,并且通过类名可以访问。 private static final int D=70; public final int E; /final空白,必须在初始化对象的时候赋初值 public Test(int x) E=x; ,public static void main(String args) Test t=new Test(2); /t

7、.B=91; /出错,final变量的值一旦给定就无法改变 /t.C=81; /出错,final变量的值一旦给定就无法改变 System.out.println(t.S); System.out.println(t.A); System.out.println(t.B); System.out.println(Test3.C); System.out.println(Test3.D); /System.out.println(Test3.E); /出错,因为E为final空白,依据不同对象值有所不同.且E不是静态的,不能用类名直接访问。 System.out.println(t.E); Tes

8、t t1=new Test(3); System.out.println(t1.E); /final空白变量E依据对象的不同而不同 t1.test1(); ,public void test1( ) final int a; /final空白,在需要的时候才赋值 final int b=4; /局部常量-final用于局部变量的情形 a=3; System.out.println(a); System.out.println(b); ,3.2 简单数据类型的使用方法数据是一个类的核心,类中定义的数据要有确定的数据类型。数据类型可以是简单类型(如整型、实型等),也可以是复杂类型(如类类型、字符串

9、、数组等)。本节介绍简单数据类型。,3.2.1 简单数据类型简单数据类型在Java语言中也叫原始数据类型或基本数据类型。Java语言中定义了四类(八种)基本数据类型: 整型:byte、short、int和long 浮点型:double和float 字符型:char 逻辑型:boolean,每一种数据类型有该类型的常量与该类型的变量。每种数据类型只能进行一些确定的运算,如逻辑型只进行逻辑运算。注意:所有Java编程语言中的整数类型都是带符号的数。1. 整型整型数据类型分为四种:byte、short、int和long。这些不同整型数据类型的意义在于它们所占用的内存空间大小不同,这也表明它们所能表示

10、的数值范围不同。每种整型数据类型的取值范围如表3-1所示。,表3-1 整数类型数据,整数类型的数据可以使用十进制、八进制或十六进制表示,具体表示方法如下: 十进制:用非0开头的数值表示,如100和-50等; 八进制:用0开头的数值表示,如017等; 十六进制:用0x或0X开头的数值表示,数字1015分别用字母“A、B、C、D、E和F表示”(也可以使用小写字母a f),如0x41、0Xabc等。,问题: 017 = ( )10 0123 =( )10 0x41 = ( )10 0Xff = ( )10,注意1:Java缺省的整数常量类型为int类型。如果要表示long类型整数常量,则需要给整数加

11、后缀L或l,表示为长整数。例如123456L,如果直接写为123456,则系统会认为是int类型数据。注意2:与其他语言(如C语言)不同,Java语言每种整数类型的长度(即占用的字节数)在任何系统中都是一样的。这也是为了保证Java语言的跨平台性。,2. 实型实数数据类型是带小数部分的数据类型,也叫浮点型。Java语言中包括两种浮点型数据: float:单精度实数,长度为4字节(即32位); double:双精度实数,长度为8字节(即64位)。实型数据还可以用科学计数法表示,如123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。 如12.3e3 ,123E2, 1.

12、23e4 , e-5 , 1.2E-3.5,注意1:Java缺省的浮点型常数为double型。如果要表示float型常量,则要给数据加后缀F或f。例如12.34f,若直接写为12.34,则系统认为是双精度实数。在程序中,如 果写float f = 3.14;将产生编译错误。注意2:如果要表示double型,则要给数据加后缀D或d(由于系统默认的浮点型常数为double型,因此也可以不加后缀D或d),如-0.23453D,1.4E+30d。,3. 逻辑型逻辑值有两种状态,即人们常说的“开”和“关”、“成立”和“不成立”、“是”和“否”等。在Java语言中,这样的值用boolean(布尔)类型来表

13、示。其有两个值,即true和false,分别表示“真”和“假”。布尔型变量在程序中的使用方法举例说明如下: boolean aBooleanVar; /说明aBooleanVar为boolean型变量 boolean isStudent = false ; /说明变量isStudent是boolean型,并赋以初值false注意:Java语言中不可将布尔类型看成整型值(这与C和C+语言不同)。,4. 字符型字符型是用单引号括起来的一个字符,程序中使用char类型表示。占两个字节。正因为如此,字符型的数据在书写时,可用以u开头的4位十六进制数表示,范围从 u0000 到 uFFFF。,具体一个字

14、符型的量,在程序中可以用下面几种方式表示:(1) 用Unicode码表示。如字符型变量letter的值为A,则可以写为 char letter = u0041;(2) 用ASCII码表示。对于字符型的量,由于大多数计算机系统使用ASCII码表示,而Unicode码中包含了ASCII码,因此在Java程序中,为了简便,大多数程序员仍使用ASCII字符的书写习惯,如字符型变量letter的值为A,则可以写为 char letter = A; 它与上面用Unicode码书写的语句是等价的。,(3) 用整数表示字符。因为字符型的量在计算机内本质上保存的是一个两个字节的整数,所以字符型变量的取值也可以使

15、用整型常数(注意不能使用整型的变量),如字符型变量letter的值为A,则可以写为 char ch = 65;但要注意,下面的程序片段是错误的: int a = 65; char ch = a;,如要正确编译,只有使用强制类型转换: int a = 65; char ch = (char)a;注意:在将一个整数赋给一个字符变量时,整数的取值范围要在065535之间(即两个字节可以表示的无符号数据范围)。如果超出这个范围,将产生编译错误。,(4) 用转义字符。Java语言也允许用转义字符表示一些特殊的字符。之所以叫转义字符,是因为以反斜杠()开头,将其后的字符转变为另外的含义。如用字符变量Tab

16、表示制表符,则可以写为 char tab = t; /而不是字符t表3-2是几个常用的转义字符。,表3-2 常用的转义字符,5. 数据类型转换在同一表达式中,有不同的数据类型要参与运算时,要进行数据类型转换。(1) 自动类型转换。整型、实型、字符型数据可以混合运算,例如: float a = 65+a + 23.23f;运算过程中,不同类型的数据会自动转换为同一种数据类型(如上面语句中的数都将转换为float类型),然后进行运算。自动转换的数据类型要兼容,并且转换后的数据类型比转换前的数据类型表示的数值范围大。 自动转换按低级类型数据(指数据范围小、精度低)转换成高级类型数据(指数据范围大、精

17、度高)的规则进行。转换规则如表3-3所示。,表3-3 转换规则,注意1:boolean类型量不能与其他类型量之间相互转换。注意2:byte和short类型的数据计算结果为int型。(2) 强制类型转换。在两种情况下,需要使用强制类型转换: 高级别数据类型要转换成低级别数据类型。 为了提高运算结果的精度。如有程序段:,int a = 15; int b = 7; float c = a / b; / 运算结果为c=2.0 float d = (float) a / b; / 运算结果为c=2.142857强制类型转换的一般格式为:,(类型名)表达式如有程序段:int i = 356;byte b

18、;b = (byte)i; /强制转换后丢失一部分数据,使得b的值为100注意:使用强制类型转换可能会导致数值溢出或数据精度的下降,应尽量避免使用。,3.2.2 数据的运算符数据的运算符表示对数据要进行的运算方式。运算符按其要求的操作数个数分为: 一元运算符:参加运算的操作数有一个; 二元运算符:参加运算的操作数有两个; 三元运算符:参加运算的操作数有三个。运算符按其功能分为七类:算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋值运算符以及一些其他的运算符。,1. 算术运算符 算术运算符用于对整型数和实型数进行运算,按其要求的操作数的个数分为一元运算符和二元运算符两类。(1) 一元

19、运算符(+、-)。一元运算符可以位于操作数的前面,如+x或-x,也可以位于操作数的后面,如x+、x-等。无论一元运算符位于操作数的前面或后面,操作数完成运算后,都把结果赋给操作数变量。注意:+x或x+整体参加表达式运算时,表达式的值是不一样的,这与C语言类似。,(2) 二元运算符。二元运算符有+、-、*、/和%,如两个操作数都是整型,则结果为整型,否则为实型。注意1:%运算符表示求整除的余数,它要求两边的操作数均为整型,结果也为整型。 注意2:对于/运算,如果两个操作数是整数时,则结果也为整数,如17/5 = 3,5/12= 0。如果操作数中有一个是实数,则运算结果为实数。,2. 关系运算符

20、Java语言的关系运算符共有七种:= =、!=、=和instanceof。关系运算符用于关系表达式中,一个关系表达式的结果类型为布尔型,即关系式成立为true,不成立为false。对象运算符instanceof用来判断一个对象是否属于某种类类型,如“Hello“ instanceof String结果为true,表示“Hello“是一个字符串类型的量。注意1:除了整型数和实型数可以混合出现在关系运算符两边外,在一个关系运算符两边的数据类型应保持一致。,注意2:因为一个实数在内存中只能用近似值来存储,所以应该避免将两个实数进行“= =”比较。如下面的判断语句:if( 23.12121f = 23

21、.121211f )System.out.print(“23.12121 = 23.121211 “);读者可上机测试一下是否会输出“23.12121 = 23.121211”。,3. 逻辑运算符逻辑运算符有六个,它们是:!(非)、&(与)、|(或)、(异或,即运算符两边的值相异时为true,相同时为false)、&(短路与)和|(短路或)。&又称为无条件与运算符,| 又称为无条件或运算符。使用&和 | 运算符可以保证不管左边的操作数是true还是false,总要计算右边操作数的值。例如:计算false & (1223)运算式的结果时,尽管从第1个操作数的值false就可以得出该表达式的结果为

22、false,但系统还是要进行(1223)的运算。,运算符& 和 |可以提高逻辑运算的速度。例如,在计算(1234) & (ab)时,因为1234为false,所以可以直接得出表达式的结果为false,不再需要计算运算符&右边的ab。在计算124) | (3423)时,因为124为true,所以可以直接得出表达式的结果为true,不再需要计算运算符 | 右边的3423。因此在逻辑表达式中,应尽量使用&和|运算符,以提高运算速度。 注意:逻辑运算符要求操作数和结果值都是布尔型量。,4. 赋值运算符赋值运算符用来把“=”右边表达式的值赋给左边的变量,即将右边表达式的值存放在变量名所表示的存储单元中,

23、这样的语句又叫赋值语句。它的语法格式如下: 变量名 = 表达式;复合赋值运算符有+=(加等于)、-=(减等于)、*=(乘等于)、/=(除等于)、%=(余数等于)等。注意:赋值号两边的数据类型不同时,如果将数据类型长度较短的量赋给数据类型长度较长的变量,则可以进行自动类型转换,否则要进行强制类型转换。例如:,byte MyByte = 10; int MyInteger = -1; MyInterger = MyByte; MyByte = (byte)MyInteger;,5. 条件运算符 条件运算符是“?:”,它要求有三个操作数,其格式如下:? : 第一个操作数必须是布尔表达式,其他两个操作

24、数可以是数值型或布尔型表达式。条件运算符的含义是:当的值为真时,结果为的值,否则为的值。例如:,int a = 12; int b = 34; int max = (a b) ? a : b; 则程序运行后,max变量中存放a和b中较大的一个数。,6. 位运算符 位运算是对操作数以二进制位为单位进行的运算,位运算的操作数和结果都是整型量。位运算有七个,它们是:、 / 1100 0011 c = 3,7. 其他运算符 ( ) 和 运算符:括号运算符( )的优先级是所有运算符中最高的,它可以改变表达式运算的先后顺序。在有些情况下,它可以表示方法或函数的调用。括号运算符 是数组运算符(见3.5节)。

25、 运算符:用于访问对象的成员属性或成员方 法。 new运算符:用于创建一个新的对象。,8. 运算符的优先级运算符的优先级由高到低的规律是:. ( ) 单目运算算术运算关系运算逻辑运算?: =详细情况见表3-4。,表3-4 运算符的优先级别,3.2.3 【案例3-1】 解方程1. 案例描述设计表示一元一次方程(ax + b = 0)的类,并能根据a的系数情况求解方程。2. 案例效果案例程序的执行效果如图3-1所示。图中从第2行开始,输出了4个不同方程及其解的情况。,图3-1 案例3-1的显示效果,3. 技术分析为了求解一元一次方程ax + b = 0,要定义一个表示一元一次方程的类,其数据是a和

26、b,可以进行的操作是判断方程是否有解,如果有解,则求方程的解,并输出方程式和解的情况。根据以上分析,设计的表示一元一次方程的类应该有两个私有数据成员a和b(对于私有数据,一般应有设置器setXXX和读取器getXXX),有判断方程是否有解、求解和输出方程与解的方法成员。因此,该类的设计要点是:,class 方程私有数据a;私有数据b;构造方法a的设置器 a的读取器b的设置器 b的读取器 判断方程是否有解的方法 求方程解的方法输出方程与解的方法 ,4. 程序解析下面是根据上面的分析设计的一元一次方程类 Equation,程序中定义的TestEquation类对Equation类进行了测试。程序如

27、下: 01 /* 02 /案例:3.1 程序名:TestEquation.java 03 /功能:表示一元一次方程ax + b = 0类 04 /* 05,06 /一元一次方程类 07 class Equation 08 /方程的两个系数定义为私有成员 09 private float a; 10 private float b; 11 12 /无参数的构造方法 13 public Equation( ) 14 15 /有参数的构造方法 16 public Equation(float a, float b) 17 this.a = a; 18 this.b = b; 19 ,20 21 /系

28、数a的设置器 22 public void setA(float a) 23 this.a = a; 24 25 26 /系数a的获取器 27 public float getA( ) 28 return a; 29 30,31 /系数b的设置器 32 public void setB(float b) 33 this.b = b; 34 35 36 /系数b的获取器 37 public float getB( ) 38 return b; 39 40,41 /判断方程是否有根的私有方法 42 private boolean hasRoot( ) 43 return a != 0; 44 45

29、 46 /求方程根的私有方法 47 private float root( ) 48 return (-b) / a; 49 50,51 /输出方程式和根的公有方法 52 public void showEquation( ) 53 if(hasRoot( ) 54 if(b 0) 55 System.out.println(“n方程式是:“ + a + “x + “ + b + “= 0, t其解为 x = “ + root( ); 56 else if(b 0) 57 System.out.println(“n方程式是:“ + a + “x - “ +Math.abs(b)+“=0,t其解

30、为x =“ + root( ); 58 else 59 System.out.println(“n方程式是:” + a + “x = 0, tt其解为 x = “ + 0); 60 ,61 else 62 System.out.println(“n因为系数 a = 0 , tt方程式无效!“); 63 64 65 66 class TestEquation 67 public static void main(String args ) 68 /建立一个方程对象e1,其方程式为1.4x + 2.8 = 0 69 Equation e1 = new Equation(1.4f, 2.8f); 7

31、0 /调用showEquation方法,输出e1对象表示的一元一次方程式和根,71 e1.showEquation( ); 72 73 /建立一个方程对象e2,其方程的系数a和b的初始值都为0 74 Equation e2 = new Equation( ); 75 /将系数b设置为4,即对象e2表示的方程式为0x - 4= 0,是一个无效的方程 76 e2.setB(-4); 77 /调用showEquation方法,输出e2对象表示的一元一次方程式和根 78 e2.showEquation( ); 79,80 /改变e2对象的系数a, 将其设置为e1对象的系数b,即对象e2表示的方程式变为

32、2.8x-4=0 81 e2.setA(e1.getB( ); 82 e2.showEquation( ); 83 84 /改变e2对象的系数b, 将其设置为0,即对象e2表示的方程式变为2.8x = 0 85 e2.setB(0); 86 e2.showEquation( ); 87 88 ,该程序有着比较详细的注释,读者参考注释,应该很容易读懂程序。程序中使用了实型数据和布尔型数据,有简单的关系运算与算术运算。关于this关键词的含义在下面有详细的说明。在程序的55行、57行、59行和62行等多处使用了转义符n和t,转义符n在程序中起到换行的作用,转义符t在程序中起到输出制表符的作用(类似

33、于按Tab键的功能)。因此,程序在输出一个方程后即换到下一行,并能将方程的解对齐输出,如图3-1所示。,第57行使用了一个对数据求绝对值的数学函数Math.abs。类Math中定义的方法都是静态的。最后要说明的是,在面向对象程序设计中,如果属性和方法是在类的内部使用,则应该说明为private的,以防止外部访问,避免因对程序的非法操作而使程序出错。如42行判断方程是否有根的方法private boolean hasRoot( )和47行求方程根的方法private float root( ),都因只在类Equation的内部使用,所以定义为私有方法。而类的构造方法、设置器、获取器和输出方程与解

34、的方法,由于在类的外部要使用,因而被定义为公共的(public)。在面向对象程序设计中,对外的接口全部应用public修饰,即定义为公共的。,3.2.4 【相关知识】 this关键字的功能在案例3-1的程序中的多个方法中使用了关键词this,如1619行的代码中,给方程的系数a和b提供初值的构造方法: 16 public Equation(float a , float b) 17 this.a = a; 18 this.b = b; 19 ,这里的参数float a和float b是构造方法Equation(float a , float b)的局部变量,其有效范围(也叫作用域)是方法Equ

35、ation(float a , float b)的内部,因此,在Equation类中定义的方程系数a和b(在案例3-1的第09行和第10行)在方法Equation(float a , float b)中被隐藏了。也就是说,在该方法中直接用a和b,则表示使用的是方法参数中定义的局部变量a和b。当一个对象在调用Equation(float a , float b)方法时,如果要使用属于该对象的属性a和b(也就是在类中定义的a和b),则要在属性a和b前面加一个表示对象中a和b的标记,这个标记就是this关键字。,在Java语言中,this代表当前对象,主要用来以“this.成员”的方式引用当前对象的

36、成员。如在案例程序3-1的85行,有一个方法调用“e2.setB(0);”,因为是通过e2对象去调用方法setB( ),所以表明当前对象是e2,即这里的this代表e2对象。被调用的方法setB( )的程序段如下: 32 public void setB(float b) 33 this.b = b; 34 ,则33行的this就代表了对象e2,因此“this.b = b;”就表示将给e2对象的系数b赋一个值,这个值就是由实参提供的局部变量b的值。其实,在类中定义的方法,如果使用了属性字段,则在属性字段的前面都有一个默认的this,如程序的第28行有一条“return a;”语句,本质为“re

37、turn this.a;”,表示返回当前对象的a值,只是由于在27行定义的方法“public float getA( )”中,没有使用局部变量a,直接写a不会造成混乱,所以省略了a前面的this。当然,也可以在程序中避免使用this,如该类的构造方法也可以写成如下的形式:,16 public Equation(float p , float q) 17 a = p; 18 b = q; 19 这种形式很好理解,但它不符合面向对象的编程特点。所以,建议还是使用案例3-1中定义的方式。,this还有一种用法,就是调用该类的其他构造方法,其格式是: this(参数);如果没有参数,则调用无参的构造方

38、法。看下面的示例程序: 01 class Point 02 int x; 03 int y; 04 05 Point(int x),06 this.x = x; 07 08 09 Point(int x, int y) 10 this(x); 11 this.y = y; 12 13 程序的第10行使用this调用了该类的带一个参数的构造方法“Point(int x)”。,注意1:如果在一个类的构造方法中,使用this调用了该类的其他构造方法,则this调用只能放在程序的第一行。如果将上述示例程序的第10行和第11行进行交换,则程序将发生编译错误。注意2:一个类的静态方法体中不能使用this关

39、键词。,3.3 简单数据类型的包装类在面向对象程序设计中“一切皆对象”,而前一节介绍的简单数据类型就不是以对象的形式出现的,这从本质上来说不符合面向对象程序设计的思想。但是,简单数据类型易于理解,可以简化程序的书写,所以简单数据类型在Java语言中有其存在的合理性。尽管如此,有时在程序中还是要使用以对象形式表示的简单数据类型(如一个方法只能接收以对象为参数的调用),Java语言已经考虑到了这个问题,对每一种简单数据类型都提供了一个与之对应的类,这就是所谓简单数据类型的包装类,本节将介绍这些包装类的知识。,3.3.1 包装类的使用在Java语言类库中,为每一种简单数据类型提供了一个与之对应的类。

40、从本质上来说,这些类就是包装了一个简单类型的数据,并提供了一些对数据进行操作(主要是类型转换)的方法。1. 简单数值类型的包装类简单数值类型有double、float、byte、int、long和short共6种,它们对应的包装类如表3-5所示。,表3-5 简单数值类型的包装类,基本数据类型的包装类还提供了很多非常有用的方法:(1) 将一个包装类对象转换为任意一种简单数据。Byte、Double、Float、Integer、Long 和 Short类都能使用表3-6所示的方法,将其包装的数值转化为byte、double、float、int、long和short等简单数据类型中的任何一种。,表3

41、-6 包装类转换为简单数据的方法,如将整数2包装为一个整型类对象: Integer I = new Integer(2);使用下面的语句可将其赋给一个实型变量: float f = I.floatValue( ); /f = 2.0(2) 使用toString( )方法可以将一个包装类中的数据转化为字符串。如将实数232.34包装为一个实型类对象: Float F = new Float(232.34f);使用下面的语句可将其赋给一个字符串变量: String str = F.toString( );,(3) 可以将一个由数字组成的字符串转化为简单类型数据。如将字符串“232“ 转化为一个整数

42、: int i = Integer.parseInt(“232“);由于这些转换方法都是静态方法(即类方法,以static修饰),因此在程序中可以通过类名直接使用,例如:float f = Float.parseFloat(“232.12“);double d = Double.parseDouble(“267832.1772“);short s = Short.parseShort(“232“);long l = Long.parseLong(“24532“);byte b = Byte.parseByte(“24“);,(4) 将一个十进制整数转化为其他数制表示的字符串。Integer类中

43、定义了将一个十进制整数转化为其他数制表示的字符串的方法: toBinaryString(int i):以二进制无符号整数形式返回一个整数参数的字符串表示形式; toHexString(int i):以十六进制无符号整数形式返回一个整数参数的字符串表示形式; toOctalString(int i):以八进制无符号整数形式返回一个整数参数的字符串表示形式。,此外,Byte、Double、Float、Integer、Long和Short类都提供了其所对应的简单数据类型所能表示的最大值和最小值的字段(即类的数据成员),字段名分别为MAX_VALUE和MIN_VALUE,这些字段均为静态的(以stat

44、ic修饰)。如下面的语句可分别输出float型数据和short型数据的最大值和最小值:System.out.println(Float.MAX_VALUE);System.out.println(Float.MIN_VALUE);System.out.println(Short.MAX_VALUE);System.out.println(Short.MIN_VALUE);,2. 布尔类型的包装类BooleanBoolean类将基本类型为boolean的值包装在一个对象中。一个Boolean类型的对象只包含一个类型为boolean的字段。此外,此类还为 boolean 和 String 的相互转

45、换提供了许多方法,如: parseBoolean(String s):将字符串参数分析为boolean值; toString( ):返回表示该布尔值的String对象。,3. 字符类型的包装类CharacterCharacter类在对象中包装了一个基本类型为char的值。此外,该类提供了一些方法,以确定字符的类别(小写字母、数字等),并提供了将字母由大写转换成小写或由小写转换成大写的方法。常用的方法有: charValue( ):返回此Character对象包装的字符值; isLowerCase(char ch):确定指定字符是否为小写字母; isUpperCase(char ch):确定指定

46、字符是否为大写字母; isDigit(char ch):指定字符是否为数字; isLetter(char ch):指定字符是否为字母。,举例如下:System.out.println(Character.isLowerCase(A); /输出falseSystem.out.println(Character.isUpperCase(A); /输出trueSystem.out.println(Character.isDigit(A); /输出falseSystem.out.println(Character.isLetter(A); /输出true,3.3.2 创建包装类对象创建包装类对象非常简

47、单,归纳起来有如下几种方法:(1) 使用每个包装类的构造方法直接创建。例如:Boolean b3 = new Boolean(true);Character c3 = new Character(a);Integer i3 = new Integer(2);,(2) Java的每个包装类都提供了一个叫valueOf( )的静态方法,使用该静态方法可以很方便地产生包装类的对象。例如: Boolean b4 = Boolean.valueOf(true); Character c4=Character.valueOf(a);(3) 使用JDK5.0的“自动打包”功能创建。在JDK5.0以后的版本中

48、,为了简化包装类的使用,提供了从基本数据类型到包装类对象的自动转化功能,这就是所谓的“自动打包”。例如: Integer i4 = 3; Boolean b4 = true;,同时,也提供了从包装对象到基本数据类型的自动转化功能,这就是所谓的“自动解包”。例如: Float f4 = 3.34f; System.out.println(f4 * 34);按照Java语言的语法,一个对象f4是不能与一个整数34相乘的,但“自动解包”功能可以将对象f4中包装的实型数3.34取出,然后完成与另外一个数相乘的运算。,3.3.3 【案例3-2】 数制转换器1. 案例描述编写一个将十进制整数转换为其他进制整数的类。程序执行时,输入一个整数后,将其分别转换为二进制、八进制和十六进制后输出。2. 案例效果案例程序执行的效果如图3-2所示(注意,窗口中第1行所示的内容)。在执行程序时,从命令行输入的十进制数为99,第2次执行程序时输入的十进制数为78446。,图3-2 案例3-2的执行结果,3. 技术分析编写该程序时,可以自己定义一个包装整数的类,在类中定义一个私有成员,存放将要转换的整数,设计一个用于将十进制整数转换为二进制、八进制和十六进制数的方法。4. 程序解析下面是案例3-2的程序代码。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报