5Java基础第5章课件.ppt

上传人:sccc 文档编号:5356569 上传时间:2023-06-29 格式:PPT 页数:161 大小:5.60MB
返回 下载 相关 举报
5Java基础第5章课件.ppt_第1页
第1页 / 共161页
5Java基础第5章课件.ppt_第2页
第2页 / 共161页
5Java基础第5章课件.ppt_第3页
第3页 / 共161页
5Java基础第5章课件.ppt_第4页
第4页 / 共161页
5Java基础第5章课件.ppt_第5页
第5页 / 共161页
点击查看更多>>
资源描述

《5Java基础第5章课件.ppt》由会员分享,可在线阅读,更多相关《5Java基础第5章课件.ppt(161页珍藏版)》请在三一办公上搜索。

1、第五章 数组、字符串及容器类,String类和StringBuffer类System类和Runtime类Math类和Random类,包装类Date类、Calendar类和DateFormat类,字符串,数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。数组变量属引用类型,数组也可以看成是对象,数组中的每 个元素相当于该对象的成员变量。数组中的元素可以是可以任何数据类型,包括基本类型和引 用类型。,5.1 一维数组,5.1 一维数组,5.1.1 一维数组的定义在Java中,可以使用以下格式来定义一个数组。上述语句就相当于在内

2、存中定义了100个int类型的变量,第一个变量的名称为x0,第二个变量的名称为x1,以此类推,第100个变量的名称为x99,这些变量的初始值都是0。,5.1一维数组,5.1.1 一维数组的定义接下来,通过两张内存图来详细地说明数组在创建过程中内存的分配情况。,注意:数据类型可以是8种基本数据类型,也可以是引用类型 例如:int a;int b;Animal dog;Java语言中声明数组时不能指定其长度(数组中元素的个数),int a10;/错误,5.1 一维数组,注意:元素为引用数据类型的数组中的每一个元素都需要实例化。,public class TestArry public static

3、 void main(String args)Date days;days=new Date3;for(int i=0;i 3;i+)daysi=new Date(2010,10,i+1);class Date int year;int month;int day;Date(int y,int m,int d)year=y;month=m;day=d;,Days:null,Days:xxx,null,null,null,xxx,xxx,xxx,2010,10,1,2010,10,2,2010,10,3,5.1.1 一维数组的定义-元素为引用数据类型的数组,5.1 一维数组,5.1 一维数组,5

4、.1.1 一维数组的定义-默认值,5.1.2 一维数组的初始化,Java中数组的初始化分为两种方式:静态初始化和动态初始化。动态初始化:为数组元素分配空间和赋值的操作分开进行,例如:,5.1 数组,5.1 数组,5.1.1 一维数组的初始化,再例如:,5.1 一维数组,5.1.2 一维数组的初始化在初始化数组时还有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式:但是为了简便,建议采用第二种方式。,5.1 一维数组,5.1.2 一维数组的初始化数组静态初始化的效果:,5.1 一维数组,5.1.2 一维数组的初始化数组静态初始化的效果:,值得注意的是

5、,例程中的第3行代码千万不可写成int x=new int41,2,3,4;,这样写编译器会报错。原因在于编译器会认为数组限定的元素个数4与实际存储的元素1,2,3,4个数有可能不一致,存在一定的安全隐患。,脚下留心,1、每个数组的索引都有一个范围,即0length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错:,运行结果中所提示的错误信息是数组越界异常ArrayIndexOutOfBoundsException,出现这个异常的原因是数组的长度为4,其索引范围为03,例程中的第4行代码使用索引4来访问元素时超出了数组的索引范围。所谓异常指程序中出现的错误,它会报告出错的异常类型

6、、出错的行号以及出错的原因,关于异常在后面的章节会有详细地讲解。,脚下留心,2、在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常:,5.1 一维数组,5.1.3 数组的常见操作1、一维数组遍历在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。,2.8 数组,2.7.2 数组的常见操作2、数组最值在操作数组时,经常需要获取数组中元素的最值。,5.1一维数组,5.1.3 数组的常见操作3、一维数组排序在操作数组时,经常需要对数组中元素进行排序。冒泡排序:在排序过程中,不断

7、地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉:,第一步,从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个元素比后一个元素大,则交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮比较。第二步,除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中第二大的数放在了倒数第二个位置。第三步,以此类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对元素需要比较为止。,5.1 一维数组,5.1.3 数组的常见操作3、数组排序在操作数组时,经常需要对数组中元素进行排序。,5.1 一维数组,5

8、.1.3 数组的常见操作3、数组排序在操作数组时,经常需要对数组中元素进行排序。,bubbleSort()方法中通过一个嵌套for循环实现了冒泡排序。,5.1 数组,5.1.3 数组的常见操作3、数组排序在操作数组时,经常需要对数组中元素进行排序。,2628行代码实现了数组中两个元素的交换。,练习题,定义一个对象数组 Student stus=new Student5;每个元素中存储学生信息 姓名(String),年龄(int),成绩(int)然后按成绩给这个数组排序。,5.2 多维数组,5.2.1 二维数组的声明多维数组可以简单地理解为在数组中嵌套数组。在程序中比较常见的就是二维数组。二维数

9、组的定义有很多方式:,5.2.1 二维数组的声明二维数组可以看成以数组为元素的数组。例如:Int a=1,3,3,5,6,7,2,6,3;Java中多维数组的声明和初始化应从最左边维数进行,例如:int a=new int3;a0=new int2;a1=new int3;a2=new int4;int b=new int3;/非法也可以同时指定所有的维数:int a=new int35;,5.2 多维数组,5.2 多维数组,5.2.1 二维数组的声明所以,二维数组也可以如下定义:,5.2 多维数组,5.2.2 二维数组的初始化,静态初始化:适用于数组元素个数较少的情况int intArray

10、=1,2,2,3,3,4;String22 stringArray=“Hello”,“world”,“java”,“test”;/错误,不能指定维数。,动态初始化:(1)直接为每一维分配空间,其语法格式为:数据类型 数组名=new数据类型行数列数;如:int a=new int34;,a:xxx,5.2.2 二维数组的初始化,5.2 多维数组,AS:xxx,再如:String AS=new String34;,5.2.2 二维数组的初始化,5.2 多维数组,(2)从最高维开始(而且必须从最高维开始),分别为每一维 分配空间,此时二维数值中每行的元素个数可以不相等。如:int a=new int

11、3;a0=new int2;a1=new int3;,5.2.2 二维数组的初始化,5.2 多维数组,a:xxx,int a=new int3;a0=new int2;a1=new int3;,5.2.2 二维数组的初始化,5.2 多维数组,例1:,统计一个公司三个销售小组三个季度中每个小组的总销售额以及整个公司的销售额。,例2:,例3:,注意:二维数组名.length方式返回的将是该二维数值的行数,使用“二维数组名index1.length”返回的是该二维数组第index1行的元素数(即该行的列数)。,【书例5.2】MultiMatrixDemo.java,5.2.3 二维数组的访问,5.2

12、 多维数组,foreach语句用于循环遍历数组或集合中的各个元素。,语法格式为:for(数据类型变量:数组集合),如:int intArray=1,2,3,4,5;/声明变量 i 的类型要与数组或集合的数据类型一致;for(int i:intArray)/系统自动帮我们完成循环的循环条件、迭代语句。System.out.println(i);,5.3 foreach语句,循环变量是临时变量,不是数组元素,系统会把数组中的 值依次赋给这个临时变量。虽然允许为此临时变量赋值,但是 无法来修改数组的值,而且极易出错。,5.3 foreach语句,【书例5.3】ForeachDemo.java,5.5

13、Arrays工具类,java.util包中还提供了一个专门用于操作数组的工具类Arrays。Arrays工具类提供了大量的静态方法。1、使用Arrays的sort()方法排序在前面学习数组时,要想对数组进行排序就需要自定义一个排序方法,其实也可以使用Arrays工具类中的静态方法sort()来实现这个功能,接下来通过一个案例来学习sort()方法的使用。,5.5Arrays工具类,2、使用Arrays的binarySearch(Object a,Object key)方法查找元素程序开发中,经常会在数组中查找某些特定的元素,如果数组中元素较多时查找某个元素就会非常繁琐,为此,Arrays类中提

14、供还了一个方法binarySearch(Object a,Object key)用于查找元素,接下来通过一个案例来学习该方法的使用。,5.5Arrays工具类,2、使用Arrays的binarySearch(Object a,Object key)方法查找元素,所谓二分法查找就是每次将指定元素和数组中间位置的元素进行比较,从而排除掉其中的一半元素,这样的查找是非常高效的。接下来通过一个图例来演示二分法查找元素的过程。,5.5Arrays工具类,3、使用Arrays的copyOfRange(int original,int from,int to)方法拷贝元素在程序开发中,经常需要在不破坏原数组

15、的情况下使用数组中的部分元素,这时可以使用Arrays工具类的copyOfRange(int original,int from,int to)方法将数组中指定范围的元素复制到一个新的数组中,该方法中参数original表示被复制的数组,from表示被复制元素的初始索引(包括),to表示被复制元素的最后索引(不包括),接下来通过一个案例来学习如何拷贝数组。,5.5Arrays工具类,4使用Arrays的fill(Object a,Object val)方法填充元素程序开发中,经常需要用一个值替换数组中的所有元素,这时可以使用Array的fill(Object a,Object val)方法,该

16、方法可以将指定的值赋给数组中的每一个元素,接下来通过一个案例来演示如何填充元素。,5.5Arrays工具类,5使用Arrays的toString(int arr)方法把数组转换为字符串在程序开发中,经常需要把数组以字符串的形式输出,这时就可以使用Arrays工具类的另一个方法toString(int arr)。需要注意的是,该方法并不是对Object类toString()方法的重写,只是用于返回指定数组的字符串形式,接下来通过一个案例来演示如何将数组转换为字符串。,练习:,给定数组9,3,5,6,2,11,5,6,进行如下操作(1)排序,并输出排序后的结果(2)再定义一个数组9,3,5,6,2

17、,11,5,6,比较这两个数组是否相同。(3)查找数字5,并返回其下标(4)使用数字8填充数组中的第3-5元素,并输出结果。(5)拷贝数组中的前5个值到另外一个数组。并输出该数组中的值。,5.5Arrays工具类,注意:Arrays类为我们提供了大量操作数组的方法,实际项目开发中,推荐使用Arrays类的静态方法来完成数组的操作,这样既快捷又不会发生错误,但是面试的时候,如果出现对数组操作的题目,就绝不允许是用Arrays类提供的方法,因为面试官考察的是我们对数组的操作能力,而不是对Arrays类的应用。,字符串是字符的序列,它是组织字符的基本数据结构,从 某种程度上来说有些类似于字符的数组。

18、在Java中,字符串被当作对象来处理。程序中需要用到的字符串可以分为两大类,一类是创建之后不会再做修改和变动的字符串常量;另一类是创建之后允许再做更改和变化的字符串变量。在Java中,存放字符串常量的对象用String类,对于字符串变量,由于程序中经常需要对它做添加,插入,修改等操作,一般存放在StringBuffer类的对象中。它们都位于java.lang包中,因此不需要导包就可以直接使用。,5.6 字符串,String,字符串常量使用双引号括住的一串字符,比如:Hello world!Java编译器自动为每一个字符串常量生成一个String类的实例,因此可以用字符串常量直接初始化一个Str

19、ing对象,如:String s=Hello world!;,5.6 字符串,要创建类String的一个对象并进行初始化,需要调用类String的构造方法。类String中提供了下面的一些构造方法:String():无参数的缺省的构造方法用来创建一个空串。String s=new String();String(String value):利用已经存在的字符串常量创建一个新的String对象,该对象的内容与给出的字符串常量一致。String s=new String(“hello”);String(char value):通过给构造方法传递一个字符数组可以创建一个非空串。char chars=

20、a,b,c;String s=new String(chars);,String,5.6 字符串,String(char,int startIndex,int numChars):这种方法用来创建一个非空串,并且指明所创建的字符串在字符数组中的起始地址以及所包含的字符个数。char chars=a,b,c,d,e,f;String s=new String(chars,2,3);该方法生成的串s为“cde”。(注意数组的下标从0开始),String,5.6 字符串,String(byte mybyte):从byte型数组进行初始化的构造方法。byte mybyte=97,98,99;Strin

21、g s=new String(mybyte);该方法构造的字符串s是“abc”。,String(StringBuffer buffer):这个构造函数利用一个已经存在的StringBuffer对象为新建的String对象初始化。,String,5.6 字符串,1.length public int length()此方法返回字符串的字符个数,如:String s=abc;System.out.println(s.length();则将显示字符个数为3。,String基本方法,5.6 字符串,2.charAt public char charAt(int index)该方法返回字符串中index

22、位置上的字符。String s1=here it is;System.out.println(s1.charAt(3);运行结果:e3.getCharspublic void getchars(int srcbegin,int end,char buf,int dstbegin)将字符从此字符串复制到目标字符数组。,String基本方法,5.6 字符串,4.indexOf和lastIndexOf int indexOf(int ch)int lastIndexOf(int ch)返回字符ch在字符串中出现的第一个和最后一个位置。String s1=I am a student;System.o

23、ut.println(s1.indexOf(a);/或aSystem.out.println(s1.lastIndexOf(a);运行结果:2 5,String基本方法,5.6 字符串,int indexOf(String str)int lastindexOf(String str)返回子串str中第一个字符在字符串中出现的始末位置。int indexOf(int ch,int fromIndex)int lastIndexOf(int ch,int fromIndex)返回字符ch在字符串中位置fromIndex以后出现的始末位置。int indexOf(String str,int fr

24、omIndex)int lastIndexOf(String str,int fromIndex)返回子串str中的第一个字符在字符串中位置fromIndex以后出现的始末位置。,String基本方法,5.6 字符串,5.public boolean startsWith(Stringprefix)public boolean startsWith(String prefix,int toffset)测试字符串是否以指定前缀开始。第二个重载函数是以 指定索引开始,如字符串以prefix为前缀返回true,否则 返回false public boolean endsWith(String suf

25、fix)测试该字符串是否以suffix后缀结束,如是返回true,否 则返回falseString s1=I am a student;System.out.println(s1.startsWith(I);System.out.println(s1.endsWith(student);运行结果:true true,String基本方法,5.6 字符串,6.在Java中,运算符“”可以用来实现字符串的连接,如:String s=“He is”+age+“years old.”假设整数型变量age的值为15,那么,s的值为“He is 15 yearsOld”。pareTopublic int

26、compareTo(String str)该方法按字典次序比较两个字符串的大小,如果源串较小,则返回一个小于0的值,如相等则返回0,否则返回一个大于0的值。,String基本方法,5.6 字符串,8.regionMatchesboolean regionMatches(int toffset,String other,int ooffset,int len)boolean regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len)上述两个方法都是用来进行模式匹配的,匹配成功则返回true,否则返回

27、false。其中,toffset和ooffset分别指明当前字符串和参数字符串中所要比较的子串的起始索引位置,len指明比较的长度,而ignoreCase指明比较时是否区分大小写。对于第一种方法,比较是区分大小写的。,String基本方法,5.6 字符串,例如:String s4=tsinghua;String s5=it is TsingHua;System.out.println(s4.regionMatches(0,s5,6,7);System.out.println(s4.regionMatches(true,0,s5,6,7);,String基本方法,5.6 字符串,9.equals

28、和equalsIgnoreCasepublic boolean equals(object str)public boolean equalsIgnoreCase(object str)判断两个字符串是否相等,则可以用此方法。相等则返回 true,不等则返回false,两种方法的区别在于 equalsIgnoreCase不区分字母大小写,而equals则须区分。10.其他方法public String replace(char oldChar,char newChar)将串中出现的特定字符用新的字符代替。,String基本方法,5.6 字符串,public String substring(i

29、nt beginIndex)The substring begins with the character at the specified index and extends to the end of this string.public String substring(int beginIndex,int endIndex)returns a new string that is a substring of this string.The substring begins at the specified beginIndex and extends to the character

30、 at index endIndex-1.,String基本方法,5.6 字符串,public String toLowerCase()把串中的所有字符转换成小写public String toUpperCase()把串中的所有字符转换成大写public String trim()清除字符串两端的空白public char toCharArray()返回字符串的字符数组形式,String基本方法,5.6 字符串,String s1=henan university;String s2=s1.toUpperCase();System.out.println(s2);System.out.prin

31、tln(s2.toLowerCase();String s3=zhanglin 1987;System.out.println(s3.trim();char s4=s3.toCharArray();System.out.println(Arrays.toString(s3.toCharArray();System.out.println(s3.length();/s4.lengthSystem.out.println(s1.equals(s2);System.out.println(s3.replace(zhanglin,zhaojing);System.out.println(s1.subs

32、tring(2,8);/包括beginIndex,不包括endIndex,HENAN UNIVERSITYhenan universityzhanglin 1987,z,h,a,n,g,l,i,n,1,9,8,7,15 false zhaojing 1987 nan un,public String concat(String str);将当前字符串对象与给定的字符串str连接起来。public String split(String regex)将字符串根据给定的正则表达式进行拆分,举例如下:The string boo:and:foo,for example,yields the foll

33、owing results with these expressions:Regex Result:boo,and,foo o b,:and:f public static String valueOf(type types)该返回types的字符串形式,String基本方法,5.6 字符串,public static void main(String args)String str=cares.concat(s);String St=to.concat(get).concat(her);System.out.println(str+St);int t=341435;float f=23.4f

34、;String sNumber=String.valueOf(t);System.out.println(String.valueOf(f)+“,t的位数+sNumber.length();String S=boo:is:foo;String sPlit=S.split(:);for(int i=0;i sPlit.length;i+)System.out.println(sPliti);,String name=”ray“;name.concat(”long“);/字符串连接System.out.println(name);/输出name,还是”ray“name=name.concat(”l

35、ong“);/把字符串对象连接的结果赋给了name引用System.out.println(name);/输出name,oh!,变成了”raylong“,分析输出结果,脚下留心,String字符串在获取某个字符时,会用到字符的索引,当访问字符串中的字符时,如果字符的索引不存在,则会发生StringIndexOutOfBoundsException(字符串角标越界异常),可以看出,访问字符串中的字符时,不能超出字符的索引范围,否则会出现异常,这与数组中的角标越界异常非常相似。,(1)给定字符串“abcde”,将该字符串转换为字符数组,并将其输出,输出的格式为:a,b,c,d,e.(2)给定字符串

36、“篮球-足球-乒乓球”,将字符串进行分割,最后得到输出格式为:篮球,足球,乒乓球。(3)对给定的10个国家名,按其字母的顺序输出。(4)求输入英文句子单词的平均长度。(5)从文件路径中提取出文件名(包含后缀)。比如从c:ab.txt中提取出b.txt这个文件名出来。,练习题,5.6.2 StringBuffer类为了便于对字符串的修改,在JDK中提供了一个StringBuffer类(也称字符串缓冲区)。StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对

37、象。,5.6 字符串StringBuffer,5.6 字符串,5.6.2 StringBuffer类,例程中涉及到StringBuffer类的很多方法,其中append()和insert()方法是最常用的,并且这两个方法有很多重载形式,它们都用于添加字符。不同的是,append()方法始终将这些字符添加到缓冲区的末尾,而insert()方法则可以在指定的位置添加字符。,5.6.2 StringBuffer类StringBuffer类和String类有很多相似之处,初学者使用时容易混淆。1、String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。StringBuffer表示字符容

38、器,其内容和长度都可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类。2、String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法3、String类对象可以用操作符“+”进行连接,而StringBuffer类对象之间不能,5.6 字符串,常用类一:System类与 Runtime类,1、System类System类对大家来说并不陌生,因为之前在打印结果时,使用的都是“System.out.println()”语

39、句。这句代码中就使用了System类。System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。,1、System类(1)getProperties()方法 System类的getProperties()方法用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在,常用类一:System类 与Runtime类,1、System类(2)currentTimeMillis()currentTimeMillis()方法返回一个long类型的值,该值表

40、示当前时间与1970年1月1日0点0分0秒之间的时间差,单位是毫秒,习惯性地被称作时间戳。,例程6-10中,演示了数字的求和操作,程序在求和开始和结束时,分别调用了currentTimeMillis()方法分别获得了两个时间戳,两个时间戳之间的差值便是求和操作耗费的时间。,常用类一:System类 与Runtime类,1、System类3arraycopy(Object src,int srcPos,Object dest,int destPos,int length)arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组。其中的参数具体作用如下:src:表示源数组dest:表示

41、目标数组srcPos:表示源数组中拷贝元素的起始位置destPos:表示拷贝到目标数组的起始位置length:表示拷贝元素的个数 需要注意的是,在进行数组复制时,目标数组必须有足够的空间来存放拷贝的元素,否则会发生角标越界异常。,常用类一:System类 与Runtime类,1、System类3arraycopy(Object src,int srcPos,Object dest,int destPos,int length),例程6-11中,创建了两个数组fromArray和toArray,分别代表源数组和目标数组,当调用arraycopy()方法进行元素拷贝时,由于指定了从源数组中索引为2

42、的元素开始拷贝,并且拷贝4个元素存放在目标数组中索引为3的位置,因此,在打印目标数组的元素时,程序首先打印的是数组toArray的前三个元素201、202、203,然后打印的是从fromArray中拷贝的四个元素。,常用类一:System类 与Runtime类,2、Runtime类 Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化。若想在程序中获得一个Runtime实例,只能通过以下方式:由于Runtime类封装了虚拟机进程,因此,在程序中通常

43、会通过该类的实例对象来获取当前虚拟机的相关信息。,常用类一:System类 与Runtime类,2、Runtime类,例程6-12中,通过“Runtime.getRuntime()”方式创建了一个Runtime的实例对象,并分别调用该对象的availableProcessors()方法、freeMemory()方法和maxMemory()方法,将当前虚拟机的处理器个数、空闲内存数和可用最大内存数的信息打印出来。,常用类一:System类 与Runtime类,2、Runtime类 Runtime 类中提供了一个exec()方法,该方法用于执行一个dos命令,从而实现和在命令行窗口中输入dos命令

44、同样的效果。,例程6-13中,调用了Runtime对象的exec()方法,并将系统命令notepad.exe作为参数传递给方法。运行程序会在桌面上打开一个记事本,常用类一:System类 与Runtime类,2、Runtime类 接下来通过一个案例来实现打开的记事本并在3秒后自动关闭,例程6-14中,通过调用Process对象的destroy()方法,将打开的记事本关闭了。为了突出演示的效果,使用了Thread类的静态方法sleep(long millis)使程序休眠了3秒,因此,程序运行后,会看到打开的记事本在3秒后自动关闭了。,常用类一:System类 与Runtime类,常用类二:Mat

45、h类与Random类,3、Math类Math类是数学操作类,提供了一系列用于数学运算的静态方法,包括求绝对值、三角函数等。Math类中有两个静态常量PI和E,分别代表数学常量和e。,例程6-15对Math类的常用方法进行了演示。从运行结果中可以看出每个方法的作用。需要注意的是,round()方法用于对某个小数进行四舍五入,此方法会将小数点后面的数字全部忽略,返回一个int值。而ceil()方法和floor()方法返回的都是double类型的数,这个数在数值上等于一个整数。,4、Random类在JDK的java.util包中有一个Random类,它可以在指定的取值范围内随机产生数字。在Rando

46、m类中提供了两个构造方法,表中列举了Random类的两个构造方法,其中第一个构造方法是无参的,通过它创建的Random实例对象每次使用的种子是随机的,因此每个对象所产生的随机数不同。如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子即可。,常用类二:Math类与Random类,4、Random类,从运行结果可以看出,例程6-16运行两次产生的随机数序列是不一样的。这是因为当创建Random的实例对象时,没有指定种子,系统会以当前时钟作为种子,产生随机数。,常用类二:Math类与Random类,4、Random类接下来将例程6-16稍

47、作修改,采用第二种构造方法产生随机数,从运行结果可以看出,当创建Random类的实例对象时,如果指定了相同的种子,则每个实例对象产生的随机数具有相同的序列。,常用类二:Math类与Random类,4、Random类相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数,表中列出了Random类常用的方法,其中,Random类的nextDouble()方法返回的是0.0和1.0之间double类型的值,nextFloat()方法返回的是0.0和1.0之间float类型的值,nextInt(int n)返

48、回的是0(包括)和指定值n(不包括)之间的值。,常用类二:Math类与Random类,4、Random类相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数,从运行结果可以看出,例程6-18中通过调用Random类不同的方法分别产生了不同类型的随机数。,常用类二:Math类与Random类,常用类三:Date类、Calendar类与DateFormat类,5、Date类在JDK的java.util包中提供了一个Date类用于表示日期和时间。Date类中大部分构造方法都被声明为已过时,只有两个构造方法

49、是建议使用的,一个是无参的构造方法Date(),用来创建当前日期时间的Date对象。另一个是接收一个long型参数date的构造方法Date(long date),用于创建指定时间的Date对象,其中date参数表示1970年1月1日0时0分0(称为历元)以来的毫秒数,即时间戳。,5、Date类,例程6-22中,打印date1得到的是当前计算机的日期和时间,打印date2则是自1970年1月1日00:00:00以来966666666666l毫秒后的日期和时间。因此,大家可以根据需求选择不同的方式创建Date对象。,常用类三:Date类、Calendar类与DateFormat类,6、Calen

50、der类Calendar类用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特定部分,比如年、月、日、时、分和秒等。Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后调用其相应的方法,具体示例如下:,常用类三:Date类、Calendar类与DateFormat类,6、Calender类接下来通过一个案例来学习下Calender类如何获取当前计算机的日期和时间,例程6-23中,调用Calendar的getInstance()方法创建一个代表默认时区内当前时间的Calendar对象。然后调用该对

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号