书签 分享 收藏 举报 版权申诉 / 195
上传文档赚钱

类型最新java类的数据成员第3章课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4914422
  • 上传时间:2023-01-25
  • 格式:PPT
  • 页数:195
  • 大小:2.04MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《最新java类的数据成员第3章课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    最新 java 数据 成员 课件
    资源描述:

    1、第3章类的数据成员第第3章章 类的数据成员类的数据成员学习目标学习目标 掌握标识符与关键字的概念;掌握简单数据类型byte、short、int、long、float、double、char和boolean等的使用方法;掌握简单数据类型对应的包装类的使用方法;掌握String类型及其常用的操作方法;掌握数组的声明与实例化,理解数组的一些高级操作;学会J2SDK帮助文档的使用方法;理解软件开发中Java语言各种标识符的命名规则。第3章类的数据成员第3章类的数据成员第3章类的数据成员第3章类的数据成员第3章类的数据成员第3章类的数据成员第3章类的数据成员public class Test3 fina

    2、l float PI;/PI空白/PI=3.14f;Test3()PI=3.14f;public static void main(String args)Test3 t=new Test3();System.out.println(t.PI);第3章类的数据成员final修饰的变量有三种:静态变量、实例变量和局部变量,修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。分别表示三种类型的常量。一旦给final变量赋初值,值就不能再改变。final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,但是无论什么情况,编译器都确保空白final在使用之前必须

    3、被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。第3章类的数据成员class Test private 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;/f

    4、inal空白,必须在初始化对象的时候赋初值 public Test(int x)E=x;第3章类的数据成员public static void main(String args)Test t=new Test(2);/t.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);/Sy

    5、stem.out.println(Test3.E);/出错,因为E为final空白,依据不同对象值有所不同.且E不是静态的,不能用类名直接访问。System.out.println(t.E);Test t1=new Test(3);System.out.println(t1.E);/final空白变量E依据对象的不同而不同 t1.test1();第3章类的数据成员public void test1()final int a;/final空白,在需要的时候才赋值 final int b=4;/局部常量-final用于局部变量的情形 a=3;System.out.println(a);System

    6、.out.println(b);第3章类的数据成员3.2 简单数据类型的使用方法简单数据类型的使用方法数据是一个类的核心,类中定义的数据要有确定的数据类型。数据类型可以是简单类型(如整型、实型等),也可以是复杂类型(如类类型、字符串、数组等)。本节介绍简单数据类型。第3章类的数据成员3.2.1 简单数据类型简单数据类型简单数据类型在Java语言中也叫原始数据类型或基本数据类型。Java语言中定义了四类(八种)基本数据类型:整型:byte、short、int和long 浮点型:double和float 字符型:char 逻辑型:boolean 第3章类的数据成员每一种数据类型有该类型的常量与该类

    7、型的变量。每种数据类型只能进行一些确定的运算,如逻辑型只进行逻辑运算。注意:所有Java编程语言中的整数类型都是带符号的数。1.整型整型整型数据类型分为四种:byte、short、int和long。这些不同整型数据类型的意义在于它们所占用的内存空间大小不同,这也表明它们所能表示的数值范围不同。每种整型数据类型的取值范围如表3-1所示。第3章类的数据成员表表3-1 整数类型数据整数类型数据数据类型 表示符号 字节数 数据位数 数据范围 字节型 byte 1 8 bit-2 72 7-1 短整型 short 2 16 bit-2 152 15-1 整型(默认类型)int 4 32 bit-2 31

    8、2 31-1 长整型 long 8 64 bit-2 632 63-1 第3章类的数据成员整数类型的数据可以使用十进制、八进制或十六进制表示,具体表示方法如下:十进制:用非0开头的数值表示,如100和-50等;八进制:用0开头的数值表示,如017等;十六进制:用0 x或0X开头的数值表示,数字1015分别用字母“A、B、C、D、E和F表示”(也可以使用小写字母a f),如0 x41、0Xabc等。问题:017 =()100123=()100 x41=()100Xff =()10第3章类的数据成员注意注意1:Java缺省的整数常量类型为int类型。如果要表示long类型整数常量,则需要给整数加后

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

    10、必须为整数。数必须为整数。如如12.3e3,123E2,1.23e4,e-5 ,1.2E-3.5 第3章类的数据成员注意注意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章类的数据成员3.逻辑型逻辑型逻辑值有两种状态,即人们常说的“开”和“关”、“成

    11、立”和“不成立”、“是”和“否”等。在Java语言中,这样的值用boolean(布尔)类型来表示。其有两个值,即true和false,分别表示“真”和“假”。布尔型变量在程序中的使用方法举例说明如下:boolean aBooleanVar;/说明aBooleanVar为boolean型变量boolean isStudent=false;/说明变量isStudent是boolean型,并赋以初值false注意:Java语言中不可将布尔类型看成整型值(这与C和C+语言不同)。第3章类的数据成员4.字符型字符型字符型是用单引号括起来的一个字符,程序中使用char类型表示。占两个字节。正因为如此,字符

    12、型的数据在书写时,可用以u开头的4位十六进制数表示,范围从u0000到uFFFF。第3章类的数据成员具体一个字符型的量,在程序中可以用下面几种方式表示:(1)用Unicode码表示。如字符型变量letter的值为A,则可以写为char letter=u0041;(2)用ASCII码表示。对于字符型的量,由于大多数计算机系统使用ASCII码表示,而Unicode码中包含了ASCII码,因此在Java程序中,为了简便,大多数程序员仍使用ASCII字符的书写习惯,如字符型变量letter的值为A,则可以写为char letter=A;它与上面用Unicode码书写的语句是等价的。第3章类的数据成员(

    13、3)用整数表示字符。因为字符型的量在计算机内本质上保存的是一个两个字节的整数,所以字符型变量的取值也可以使用整型常数(注意不能使用整型的变量),如字符型变量letter的值为A,则可以写为char ch=65;但要注意,下面的程序片段是错误的:int a=65;char ch=a;第3章类的数据成员如要正确编译,只有使用强制类型转换:int a=65;char ch=(char)a;注意:在将一个整数赋给一个字符变量时,整数的取值范围要在065535之间(即两个字节可以表示的无符号数据范围)。如果超出这个范围,将产生编译错误。第3章类的数据成员(4)用转义字符。Java语言也允许用转义字符表示

    14、一些特殊的字符。之所以叫转义字符,是因为以反斜杠()开头,将其后的字符转变为另外的含义。如用字符变量Tab表示制表符,则可以写为char tab=t;/而不是字符t表3-2是几个常用的转义字符。第3章类的数据成员表表3-2 常用的转义字符常用的转义字符转义字符名称 转义字符 Unicode 码 退格键 b u0008 Tab 键 t u0009 换行符 n u000a 回车键 r u000d 斜杠 u005c 单引号 u0027 双引号 u0022 第3章类的数据成员5.数据类型转换数据类型转换在同一表达式中,有不同的数据类型要参与运算时,要进行数据类型转换。(1)自动类型转换。整型、实型、字

    15、符型数据可以混合运算,例如:float a=65+a+23.23f;运算过程中,不同类型的数据会自动转换为同一种数据类型(如上面语句中的数都将转换为float类型),然后进行运算。自动转换的数据类型要兼容,并且转换后的数据类型比转换前的数据类型表示的数值范围大。自动转换按低级类型数据(指数据范围小、精度低)转换成高级类型数据(指数据范围大、精度高)的规则进行。转换规则如表3-3所示。第3章类的数据成员表表3-3 转换规则转换规则操作数 1 类型 操作数 2 类型 转换后的类型 byte、short、char int int byte、short、char、int long long byte、

    16、short、char、int、long float float byte、short、char、int、long、float double double 第3章类的数据成员注意1:boolean类型量不能与其他类型量之间相互转换。注意2:byte和short类型的数据计算结果为int型。(2)强制类型转换。在两种情况下,需要使用强制类型转换:高级别数据类型要转换成低级别数据类型。为了提高运算结果的精度。如有程序段:第3章类的数据成员int a=15;int b=7;float c=a/b;/运算结果为c=2.0float d=(float)a/b;/运算结果为c=2.142857强制类型转换的

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

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

    19、如果两个操作数是整数时,则结果也为整数,如17/5=3,5/12=0。如果操作数中有一个是实数,则运算结果为实数。第3章类的数据成员2.关系运算符关系运算符 Java语言的关系运算符共有七种:=、!=、=和instanceof。关系运算符用于关系表达式中,一个关系表达式的结果类型为布尔型,即关系式成立为true,不成立为false。对象运算符instanceof用来判断一个对象是否属于某种类类型,如Hello instanceof String结果为true,表示Hello是一个字符串类型的量。注意1:除了整型数和实型数可以混合出现在关系运算符两边外,在一个关系运算符两边的数据类型应保持一致。

    20、第3章类的数据成员注意2:因为一个实数在内存中只能用近似值来存储,所以应该避免将两个实数进行“=”比较。如下面的判断语句:if(23.12121f=23.121211f)System.out.print(23.12121=23.121211);读者可上机测试一下是否会输出“23.12121=23.121211”。第3章类的数据成员3.逻辑运算符逻辑运算符逻辑运算符有六个,它们是:!(非)、&(与)、|(或)、(异或,即运算符两边的值相异时为true,相同时为false)、&(短路与)和|(短路或)。&又称为无条件与运算符,|又称为无条件或运算符。使用&和|运算符可以保证不管左边的操作数是tru

    21、e还是false,总要计算右边操作数的值。例如:计算false&(1223)运算式的结果时,尽管从第1个操作数的值false就可以得出该表达式的结果为false,但系统还是要进行(1223)的运算。第3章类的数据成员运算符&和|可以提高逻辑运算的速度。例如,在计算(1234)&(ab)时,因为1234为false,所以可以直接得出表达式的结果为false,不再需要计算运算符&右边的ab。在计算124)|(3423)时,因为124为true,所以可以直接得出表达式的结果为true,不再需要计算运算符|右边的3423。因此在逻辑表达式中,应尽量使用&和|运算符,以提高运算速度。注意:逻辑运算符要求

    22、操作数和结果值都是布尔型量。第3章类的数据成员4.赋值运算符赋值运算符赋值运算符用来把“=”右边表达式的值赋给左边的变量,即将右边表达式的值存放在变量名所表示的存储单元中,这样的语句又叫赋值语句。它的语法格式如下:变量名=表达式;复合赋值运算符有+=(加等于)、-=(减等于)、*=(乘等于)、/=(除等于)、%=(余数等于)等。注意:赋值号两边的数据类型不同时,如果将数据类型长度较短的量赋给数据类型长度较长的变量,则可以进行自动类型转换,否则要进行强制类型转换。例如:第3章类的数据成员byte MyByte=10;int MyInteger=-1;MyInterger=MyByte;MyByt

    23、e=(byte)MyInteger;第3章类的数据成员5.条件运算符条件运算符 条件运算符是“?:”,它要求有三个操作数,其格式如下:?:第一个操作数必须是布尔表达式,其他两个操作数可以是数值型或布尔型表达式。条件运算符的含义是:当的值为真时,结果为的值,否则为的值。例如:第3章类的数据成员int a=12;int b=34;int max=(a b)?a:b;则程序运行后,max变量中存放a和b中较大的一个数。第3章类的数据成员6.位运算符位运算符 位运算是对操作数以二进制位为单位进行的运算,位运算的操作数和结果都是整型量。位运算有七个,它们是:、&、(右移)、(不带符号的右移)。例如:in

    24、t a=12;int b=7;int c=a&b;/1100&0111=0100 c=4int c=a|b;/1100|0111=1111 c=15int c=a b;/1100|0111=1011 c=11int c=a 2;/1100 0011 c=3第3章类的数据成员7.其他运算符其他运算符()和 运算符:括号运算符()的优先级是所有运算符中最高的,它可以改变表达式运算的先后顺序。在有些情况下,它可以表示方法或函数的调用。括号运算符 是数组运算符(见3.5节)。运算符:用于访问对象的成员属性或成员方法。new运算符:用于创建一个新的对象。第3章类的数据成员8.运算符的优先级运算符的优先级

    25、运算符的优先级由高到低的规律是:.()单目运算算术运算关系运算逻辑运算?:=详细情况见表3-4。第3章类的数据成员表表3-4 运算符的优先级别运算符的优先级别优先次序 运算符 1.()2+-!instanceof 3 new(type)4*/%5+-6 =8=!=9&10 11|12&13|14?:15=+=-=*=/=%=16&=|=第3章类的数据成员3.2.3 【案例【案例3-1】解方程解方程1.案例描述案例描述设计表示一元一次方程(ax+b=0)的类,并能根据a的系数情况求解方程。2.案例效果案例效果案例程序的执行效果如图3-1所示。图中从第2行开始,输出了4个不同方程及其解的情况。第3

    26、章类的数据成员图3-1 案例3-1的显示效果第3章类的数据成员3.技术分析技术分析为了求解一元一次方程ax+b=0,要定义一个表示一元一次方程的类,其数据是a和b,可以进行的操作是判断方程是否有解,如果有解,则求方程的解,并输出方程式和解的情况。根据以上分析,设计的表示一元一次方程的类应该有两个私有数据成员a和b(对于私有数据,一般应有设置器setXXX和读取器getXXX),有判断方程是否有解、求解和输出方程与解的方法成员。因此,该类的设计要点是:第3章类的数据成员class 方程 私有数据a;私有数据b;构造方法 a的设置器a的读取器 b的设置器b的读取器判断方程是否有解的方法求方程解的方

    27、法 输出方程与解的方法第3章类的数据成员4.程序解析程序解析下面是根据上面的分析设计的一元一次方程类Equation,程序中定义的TestEquation类对Equation类进行了测试。程序如下:01/*02/案例:3.1 程序名:TestEquation.java03/功能:表示一元一次方程ax+b=0类 04/*05 第3章类的数据成员06/一元一次方程类07 class Equation08/方程的两个系数定义为私有成员09 private float a;10 private float b;11 12/无参数的构造方法13 public Equation()14 15/有参数的构造

    28、方法16 public Equation(float a,float b)17 this.a=a;18 this.b=b;19 第3章类的数据成员20 21/系数a的设置器22 public void setA(float a)23 this.a=a;24 25 26/系数a的获取器27 public float getA()28 return a;29 30 第3章类的数据成员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 第3章

    29、类的数据成员41/判断方程是否有根的私有方法42 private boolean hasRoot()43 return a!=0;44 45 46/求方程根的私有方法47 private float root()48 return(-b)/a;49 50 第3章类的数据成员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方程

    30、式是:+a+x-+Math.abs(b)+=0,t其解为x=+root();58 else59 System.out.println(“n方程式是:”+a+“x =0,tt其解为 x=+0);60 第3章类的数据成员61 else62 System.out.println(“n因为系数 a=0,tt方程式无效!);63 64 65 66 class TestEquation67 public static void main(String args)68/建立一个方程对象e1,其方程式为1.4x+2.8=069 Equation e1=new Equation(1.4f,2.8f);70/调用

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

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

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

    34、在类的外部要使用,因而被定义为公共的(public)。在面向对象程序设计中,对外的接口全部应用public修饰,即定义为公共的。第3章类的数据成员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 第3章类的数据成员这里的参数float a和float b是构造方法Equation(float a,float b)的局部变量,其有效范围(也叫作

    35、用域)是方法Equation(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关键字。第3章类的数据成员在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 第3章类的数据成员则33行的this就代表了对象e2,因此“this.b=b;”就表示将给e2对象的系数b赋一个值,这个值就是由实参提供的局部变量b的值。其实,在类中定义的方法,如果使用了属性字段,则在属性字段的前面都有一个默认的this,如程序的第28行有一条“return a;

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

    38、果没有参数,则调用无参的构造方法。看下面的示例程序:01 class Point 02 int x;03 int y;04 05 Point(int x)第3章类的数据成员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)”。第3章类的数据成员注意1:如果在一个类的构造方法中,使用this调用了该类的其他构造方法,则this调用只能放在程序的第一行。如果将上述示例程序的第10行和第11行进行交换,则程序将发生编译错误。注意2:

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

    40、3.3.1 包装类的使用包装类的使用在Java语言类库中,为每一种简单数据类型提供了一个与之对应的类。从本质上来说,这些类就是包装了一个简单类型的数据,并提供了一些对数据进行操作(主要是类型转换)的方法。1.简单数值类型的包装类简单数值类型的包装类简单数值类型有double、float、byte、int、long和short共6种,它们对应的包装类如表3-5所示。第3章类的数据成员表表3-5 简单数值类型的包装类简单数值类型的包装类类别 字节型 短整型 整型 长整型 单精度实型 双精度实型 简单类型名 byte short int long float double 包装类名 Byte Sho

    41、rt Integer Long Float Double 第3章类的数据成员基本数据类型的包装类还提供了很多非常有用的方法:(1)将一个包装类对象转换为任意一种简单数据。Byte、Double、Float、Integer、Long 和 Short类都能使用表3-6所示的方法,将其包装的数值转化为byte、double、float、int、long和short等简单数据类型中的任何一种。第3章类的数据成员表表3-6 包装类转换为简单数据的方法包装类转换为简单数据的方法返回类型 方法名 说 明 byte byteValue()以 byte 形式返回指定的数值 double doubleValue(

    42、)以 double形式返回指定的数值 float floatValue()以 float形式返回指定的数值 int intValue()以 int 形式返回指定的数值 long longValue()以 long 形式返回指定的数值 short shortValue()以 short形式返回指定的数值 第3章类的数据成员如将整数2包装为一个整型类对象:Integer I=new Integer(2);使用下面的语句可将其赋给一个实型变量:float f=I.floatValue();/f=2.0(2)使用toString()方法可以将一个包装类中的数据转化为字符串。如将实数232.34包装为一

    43、个实型类对象:Float F=new Float(232.34f);使用下面的语句可将其赋给一个字符串变量:String str=F.toString();第3章类的数据成员(3)可以将一个由数字组成的字符串转化为简单类型数据。如将字符串232转化为一个整数:int i=Integer.parseInt(232);由于这些转换方法都是静态方法(即类方法,以static修饰),因此在程序中可以通过类名直接使用,例如:float f=Float.parseFloat(232.12);double d=Double.parseDouble(267832.1772);short s=Short.par

    44、seShort(232);long l=Long.parseLong(24532);byte b=Byte.parseByte(24);第3章类的数据成员(4)将一个十进制整数转化为其他数制表示的字符串。Integer类中定义了将一个十进制整数转化为其他数制表示的字符串的方法:toBinaryString(int i):以二进制无符号整数形式返回一个整数参数的字符串表示形式;toHexString(int i):以十六进制无符号整数形式返回一个整数参数的字符串表示形式;toOctalString(int i):以八进制无符号整数形式返回一个整数参数的字符串表示形式。第3章类的数据成员此外,By

    45、te、Double、Float、Integer、Long和Short类都提供了其所对应的简单数据类型所能表示的最大值和最小值的字段(即类的数据成员),字段名分别为MAX_VALUE和MIN_VALUE,这些字段均为静态的(以static修饰)。如下面的语句可分别输出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_VALU

    46、E);第3章类的数据成员2.布尔类型的包装类布尔类型的包装类BooleanBoolean类将基本类型为boolean的值包装在一个对象中。一个Boolean类型的对象只包含一个类型为boolean的字段。此外,此类还为 boolean 和 String 的相互转换提供了许多方法,如:parseBoolean(String s):将字符串参数分析为boolean值;toString():返回表示该布尔值的String对象。第3章类的数据成员3.字符类型的包装类字符类型的包装类CharacterCharacter类在对象中包装了一个基本类型为char的值。此外,该类提供了一些方法,以确定字符的类别

    47、(小写字母、数字等),并提供了将字母由大写转换成小写或由小写转换成大写的方法。常用的方法有:charValue():返回此Character对象包装的字符值;isLowerCase(char ch):确定指定字符是否为小写字母;isUpperCase(char ch):确定指定字符是否为大写字母;isDigit(char ch):指定字符是否为数字;isLetter(char ch):指定字符是否为字母。第3章类的数据成员举例如下:System.out.println(Character.isLowerCase(A);/输出falseSystem.out.println(Character.i

    48、sUpperCase(A);/输出trueSystem.out.println(Character.isDigit(A);/输出falseSystem.out.println(Character.isLetter(A);/输出true第3章类的数据成员3.3.2 创建包装类对象创建包装类对象创建包装类对象非常简单,归纳起来有如下几种方法:(1)使用每个包装类的构造方法直接创建。例如:Boolean b3=new Boolean(true);Character c3=new Character(a);Integer i3=new Integer(2);第3章类的数据成员(2)Java的每个包装类

    49、都提供了一个叫valueOf()的静态方法,使用该静态方法可以很方便地产生包装类的对象。例如:Boolean b4=Boolean.valueOf(true);Character c4=Character.valueOf(a);(3)使用JDK5.0的“自动打包”功能创建。在JDK5.0以后的版本中,为了简化包装类的使用,提供了从基本数据类型到包装类对象的自动转化功能,这就是所谓的“自动打包”。例如:Integer i4=3;Boolean b4=true;第3章类的数据成员同时,也提供了从包装对象到基本数据类型的自动转化功能,这就是所谓的“自动解包”。例如:Float f4=3.34f;Sy

    50、stem.out.println(f4*34);按照Java语言的语法,一个对象f4是不能与一个整数34相乘的,但“自动解包”功能可以将对象f4中包装的实型数3.34取出,然后完成与另外一个数相乘的运算。第3章类的数据成员3.3.3 【案例【案例3-2】数制转换器数制转换器1.案例描述案例描述编写一个将十进制整数转换为其他进制整数的类。程序执行时,输入一个整数后,将其分别转换为二进制、八进制和十六进制后输出。2.案例效果案例效果案例程序执行的效果如图3-2所示(注意,窗口中第1行所示的内容)。在执行程序时,从命令行输入的十进制数为99,第2次执行程序时输入的十进制数为78446。第3章类的数据

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:最新java类的数据成员第3章课件.ppt
    链接地址:https://www.163wenku.com/p-4914422.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库