版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6章章 数组、字符数组、字符串和实用类串和实用类数组数组字符串类字符串类数组类和向量类数组类和向量类Java语言基础类库语言基础类库 实例学习实例学习课程内容二二三三四四五五一一项目学做项目学做六六一、数组一、数组 一、数组一、数组 数组就是一组命名变量,其中的每个变量被称数组就是一组命名变量,其中的每个变量被称之为数组元素。之为数组元素。根据下标个数的多少分类:根据下标个数的多少分类: 数组是有序数据的集合数组是有序数据的集合数组是一种最简单的复合数据类型数组是一种最简单的复合数据类型数组中的每个元素具有相同的数据类型数组中的每个元素具有相同的数据类型数组中的元素可以用一个统一的数组名和
2、下标来唯一地确定定义定义一维数组一维数组多维数组多维数组1、一维数组v 只有只有一个下标一个下标的数组称为一维数组。的数组称为一维数组。v 在使用数组之前必须要在使用数组之前必须要初始化初始化v 一维数组的声明一维数组的声明说明数组变量的名称和数组元素的数据类型。声明格式:声明格式:datatype arrayName ;或datatype arrayName;其中datatype可以为Java中任意的数据类型,包括简单类型和复合类型。arrayName为数组的名字,命名符合标识符的规定。如:int mathScore;为数组分配内存空间,并为每个数组元素赋初始值。 1、一维数组v 定义数组的
3、大小(申请内存空间)定义数组的大小(申请内存空间)v 数组初始化数组初始化静态初始化:静态初始化:在声明和定义数组的同时,给数组元素赋初值。动态初始化:动态初始化:先声明和定义数组,然后再赋值。 简单类型简单类型 复合类型复合类型格式:格式:arrayName =new datatype numberOfArrayElemnt;其中,numberOfArrayElemnt表示数组元素的个数,即数组的长度或大小,是整型表达式。例如:例如:在上面对mathScore声明之后,就可以定义其大小。mathScore = new int10;/定义数组的10个元素 1、一维数组v 一维数组的重定义一维数
4、组的重定义v 一维数组的长度(一维数组的长度(lengthlength属性)属性)v 一维数组元素的引用一维数组元素的引用其实数组是作为其实数组是作为对象对象来处理的,所有的数组对象都有来处理的,所有的数组对象都有length (长度长度)属性,用来记录数组中元素的个数。属性,用来记录数组中元素的个数。所谓重定义也称重用,即是在程序中可以改变数组的大小所谓重定义也称重用,即是在程序中可以改变数组的大小(重新定义数组)。(重新定义数组)。数组元素的引用方式为:数组元素的引用方式为:arrayNameindexindex为数组下标,它可以为整型常数或表达式,下标从0开始到arrayName.len
5、gth-1。例例6-1:将多个学生某课程的成绩放到一个数组中,然后计算学生的平均成绩。(6-1.txt)1、一维数组v 例例6-1:将多个学生某课程的成绩放到一个数组中,:将多个学生某课程的成绩放到一个数组中,然后计算学生的平均成绩。(然后计算学生的平均成绩。(6-1.txt)/* *这是一个利用数组存放学生成绩,统计学生平均成绩的示例程序这是一个利用数组存放学生成绩,统计学生平均成绩的示例程序 *程序的名字是:程序的名字是:AverageScore.java*/ public class AverageScore public static void main(String args) in
6、t score=72,89,65,58,87,91,53,82,71,93,76,68;/声明定义初始化声明定义初始化 float average=0.0f;/部分和,最后存放平均值部分和,最后存放平均值 for(int i=0; iscore.length; i+) average+=scorei; /成绩累加和(部分和)成绩累加和(部分和) average/=score.length; /求平均求平均 System.out.println(average=+average); 1、一维数组v foreachforeach循环循环使用使用foreach循环遍历数组时,无须获得数组和集合长度,
7、无须根据循环遍历数组时,无须获得数组和集合长度,无须根据索引来访问数组元素和集合元素,索引来访问数组元素和集合元素,foreach循环会自动遍历数组。循环会自动遍历数组。格式:格式:for(type variableName:array | collection)/variableName 自动迭代访问每个元素 应为variableName例例6-2:使用foreach循环来遍历数组元素。(6-2.txt)1、一维数组v 例例6-2:使用:使用foreach循环来遍历数组元素。(循环来遍历数组元素。(6-2.txt)public class ForEachTest public static
8、void main(String args)String books=大学计算机基础大学计算机基础,Java程序设计程序设计,操作系统操作系统;for(String book:books)System.out.println(book);运行结果运行结果:大学计算机基础Java程序设计操作系统 2、二维数组v 带有两个下标的数组称为二维数组。带有两个下标的数组称为二维数组。v 声明声明v 初始化初始化与一维数组类似,可以先声明后定义,也可将声明和定义合二为一。声明与定义格式:声明与定义格式:datatype arrayName ;或:datatype arrayName;或:arrayName
9、=new datatypearrayLength1 arrayLength2;或:datatype arrayName =new datatypearrayLength1 arrayLength2;静态初始化静态初始化动态初始化动态初始化 2、二维数组v 不同长度的二维数组不同长度的二维数组v 二维数组元素的引用二维数组元素的引用对二维数组中的每个元素,引用方式为:对二维数组中的每个元素,引用方式为:arrayNameindex1index2arrayNameindex1index2例6-3:设有三个矩阵A、B、C,A和B矩阵相乘,结果放入C中,即 C=AB。(6-3.txt)要求:Alm B
10、mn = Cln计算公式:Cij=aik*bkj 其中: i=0l , j=0n , k=0m在有些具体的应用中,每行元素的个数不是相等的,在有些具体的应用中,每行元素的个数不是相等的,Java允许生成具有不同长度的多维数组。允许生成具有不同长度的多维数组。2、二维数组v 例例6-36-3:设有三个矩阵:设有三个矩阵A A、B B、C C,A A和和B B矩阵相乘,结果放入矩阵相乘,结果放入C C中,即中,即 C=AC=AB B。(6-3.txt)(6-3.txt)public class A_multiply_B public static void main(String args) fl
11、oat B= 1,2,3,4,5,6,7,8,9 ;/声明定义初始化二维数组声明定义初始化二维数组B float A=1,2,3,4,5,6 ;/声明定义初始化二维数组声明定义初始化二维数组A float C=new float23 ; /声明定义二维数组声明定义二维数组C int i,j,k; for (i=0; i2;i+) /控制控制C中的行数中的行数 for (j=0;j3 ;j+)/控制控制C中的列数中的列数 for (k=0;k3;k+) Cij+=Aik*Bkj;/计算计算C中的每个元素中的每个元素 System.out.print(Cij+ ); System.out.prin
12、tln(n); 二、字符串类二、字符串类 二、字符串类二、字符串类 1、String类类在在Java语言中,字符是一基本的数据类型,而字符串是抽象的语言中,字符是一基本的数据类型,而字符串是抽象的数据类型,只能使用对象表示字符串。数据类型,只能使用对象表示字符串。定义定义字符串类字符串类String用于创建字符串对象,并且创建的字符串(对象)用于创建字符串对象,并且创建的字符串(对象)不能被改变,也就是说字符串对象中的字符是不能修改的(如在不能被改变,也就是说字符串对象中的字符是不能修改的(如在一个字符串对象中添加字符、删除字符、修改字符等),称为一个字符串对象中添加字符、删除字符、修改字符等
13、),称为字字符串常量符串常量。(1)String类的构造函数 String() String(String value) String(char value)例例6-4:使用字符数组,创建一个字符串对象,并显示字符串对象中的字符串。(6-4.txt)1、String类类v 例例6-4:使用字符数组,创建一个字符串对象,并显示字:使用字符数组,创建一个字符串对象,并显示字符串对象中的字符串。(符串对象中的字符串。(6-4.txt)class Array_string public static void main(String args) /声明定义初始化字符数组声明定义初始化字符数组char
14、c = J, a, v, a, ,i,s, ,O,O,P; String s1 = new String(c);/创建字符串对象创建字符串对象String s2 = new String(s1); / System.out.println(s1);/打印打印System.out.println(s2); 二、字符串类二、字符串类(2)字符串的操作对字符串处理时,可使用String类提供的几个常用方法(用于对字符串进行处理):charAt(int index)获取指定位置的字符;length()求字符串长度;concat(String str)连接两个字符串;copyValueOf(char v
15、alue) 字符数组转换成字符串;replace(char ch1,char ch2) 字符串中的字符ch1用ch2替换;还有其他很多处理字符串的方法。还有其他很多处理字符串的方法。例6-5:比较字符串(6-5.txt)将截取的子字符串放到字符数组中时,可使用方法void getChars(int startIndex,int endIndex, char target,int targetStart),从startIndex到endIndex的字符在字符数组target从targetStart起存放,应保证能够容纳下。例6-6:截取字符串(6-6.txt)1、String类类v 例例6-5:
16、比较字符串(:比较字符串(6-5.txt)class Equalspublic static void main(String args) String s1 = Hello; String s2 = Hello; String s3 = Good-bye; String s4 = HELLO; System.out.println(s1+ equals + s2 + : +s1.equals(s2);/trueSystem.out.println(s1+ equals +s3+ : +s1.equals(s3);/false System.out.println(s1+ equals +s4
17、+ : +s1.equals(s4);/false System.out.println(s1+ equalsIgnoreCase + s4 + : +s1.equalsIgnoreCase(s4);/true,忽略大小写,忽略大小写 System.out.println(s1+ = +s2+: +(s1=s2);/false,=为对为对象比较,象比较,/s1与与s2不是一个对象,所以不是一个对象,所以2不相等。不相等。1、String类类v 例例6-6:截取字符串(:截取字符串(6-6.txt)class getCharspublic static void main(String args
18、) String s = This is a getChars method.; int start = 10;/第一个字符的位置(索引)为第一个字符的位置(索引)为0,10代表第代表第11个字符位置个字符位置 int end = 18;/第第19个字符位置个字符位置 char buf = new charend - start; s.getChars(start, end, buf, 0); System.out.println(buf);运行结果运行结果:getChars 二、字符串类二、字符串类 2、 StringBuffer类类当需要当需要改变字符串的值改变字符串的值时,可使用时,可使
19、用StringBuffer类,它提供了对字类,它提供了对字符串内容进行动态修改的功能符串内容进行动态修改的功能动态添加,插入、替换等。动态添加,插入、替换等。(1)该类提供三个构造方法)该类提供三个构造方法 StringBuffer() StringBuffer(int length) StringBuffer(String str) *与与String不同,应该使用不同,应该使用StringBuffer的构造函数创建对象,不能的构造函数创建对象,不能定义定义StringBuffer类型的变量。类型的变量。如:StringBuffer sb =”This is StringBuffer”;是不
20、允许的(2)对字符串的修改)对字符串的修改 1)添加操作)添加操作 使用该类的使用该类的append()方法,将一个字符串添加到一个字串缓冲区的后方法,将一个字符串添加到一个字串缓冲区的后面。面。 2)插入操作)插入操作 使用的是使用的是StringBuffer类的类的insert(int offset, representation)方法,用方法,用于在指定的位置插入给定的量。于在指定的位置插入给定的量。 二、字符串类二、字符串类3)删除)删除delete(int start,int end)方法用于删除从方法用于删除从startend之间的字符串;之间的字符串;deleteCharAt(i
21、nt index)方法用于删除位置方法用于删除位置index处的字符。处的字符。4)替换)替换replace(int start,int end,String str)用字符串用字符串str替换替换start到到end之间的字之间的字符串。符串。例6-7:将“Java programming!”中的子串“Java”替换成“This is Turbo C”。(6-7.txt)StringBuffer类中的几个常用方法:类中的几个常用方法:toString()将字符串缓冲区转换为字符串;charAt(int index)取指定位置的字符;getChars(int srcBegin,int srcE
22、nd,chardst,int dstBegin)取指定位置的字符到字符数组dst中length()返回当前对内容的长度;capacity()返回总的容量;ensuareCapacity()设置容量不够时追加的容量大小;reverse()字符串翻转。例6-8:将给定的字符串翻转(6-8.TXT)2、 StringBuffer类类v 例例6-7:将:将“Java programming!”中的子串中的子串“Java”替换成替换成“This is Turbo C”。(。(6-7.txt)class Replacepublic static void main(String args) StringB
23、uffer sb = new StringBuffer(Java programming!); sb.replace(0, 4, This is Turbo C);/第一个字符位置为第一个字符位置为0System.out.println(After replace: + sb.toString();/也可使用下面的方法也可使用下面的方法/sb=sb.replace(0, 4, This is Turbo C);/System.out.println(After replace: + sb);运行结果运行结果:This is Turbo C programming!2、 StringBuffer
24、类类v 例例6-8:将给定的字符串翻转(:将给定的字符串翻转(6-8.TXT)class Reversepublic static void main(String args) StringBuffer s = new StringBuffer(123456789); System.out.println(s);s.reverse();/调用方法,生成逆序即翻转字符串调用方法,生成逆序即翻转字符串 System.out.println(s);运行结果运行结果:987654321 二、字符串类二、字符串类 3、 StringTokenizer类类StringTokenizer(字符串令牌,字符串
25、标记)类主要用于对字符串(字符串令牌,字符串标记)类主要用于对字符串的分析,可的分析,可将一个字符串分解成数个单元将一个字符串分解成数个单元(Token令牌,每个单令牌,每个单元之间以分界符分隔)。元之间以分界符分隔)。StringTokenizer(String str)是构造函数。是构造函数。几个常用方法:几个常用方法:int countTokens(),返回令牌的数目;,返回令牌的数目;boolean hasMoreTokens()检查是否还有令牌存在;检查是否还有令牌存在;String nextToken()返回下一个令牌;返回下一个令牌;String nextToken(String
26、 delimit)根据指定的分界符(根据指定的分界符(delimit),),返回令牌。返回令牌。例6-9:将给定字符串每个单词取出来。(6-9.txt)3、 StringTokenizer类类v 例例6-9:将给定字符串每个单词取出来。:将给定字符串每个单词取出来。(6-9.txt)class Token public static void main(String args) StringTokenizer st=new StringTokenizer(I am a Java newer);String tokens=new Stringst.countTokens();/声明定义数组声明定
27、义数组for(int i=0;st.hasMoreTokens();i+)/每个数组元素存放一个单词每个数组元素存放一个单词tokensi=st.nextToken();/取词取词System.out.println(tokensi);/打印打印运行结果运行结果:IamaJavanewer三、数组类和向量类三、数组类和向量类 三、数组类和向量类三、数组类和向量类 1、数组数组Arrays类类 数组是编程时最常用的数据结构之一,数组可以包含任何数数组是编程时最常用的数据结构之一,数组可以包含任何数据类型,一旦创建便只可存储指定类型的数据。向量的功能更强据类型,一旦创建便只可存储指定类型的数据。向
28、量的功能更强大,它是大,它是允许不同类型元素共存允许不同类型元素共存的变长数组。的变长数组。Array(数组)类提供了对数组运算的功能,如排序、搜索等操(数组)类提供了对数组运算的功能,如排序、搜索等操作。作。Array类的静态方法:类的静态方法:static void sort(dadaType d),对数组进行排序(升序),对数组进行排序(升序)例6-10:使用Array类对数组排序。(6-10.txt)1、数组数组Arrays类类v 例例6-10:使用:使用Array类对数组排序。类对数组排序。(6-10.txt)import java.util.Arrays;class ArraysC
29、lass public static void main(String args) int num=new int10;for(int i=0;i10;i+)/排序前:排序前:numi=(int)(Math.random()*10)+1; /产生产生110随机数随机数System.out.print(numi+ );/打印产生的随机数打印产生的随机数System.out.println(n排序后排序后);Arrays.sort(num);/排序排序for(int i=0;i10;i+)/排序后:排序后:System.out.print(numi+ );/打印排序后的数打印排序后的数System
30、.out.println();System.out.println(6的位置是:的位置是:+Arrays.binarySearch(num,6);/搜索搜索6的位置的位置运行结果运行结果:运行程序后产生一组随机运行程序后产生一组随机数,并搜索数,并搜索6的位置。由于的位置。由于数据是随机产生,所以每数据是随机产生,所以每次运行时数据都不同次运行时数据都不同 三、数组类和向量类三、数组类和向量类 2、向量类向量类VectorJava语言中,数组只能保存固定数目的元素,内存空间的申请也语言中,数组只能保存固定数目的元素,内存空间的申请也是一次完成,不能在创建后再追加数组元素。为此又引入了向量是一次
31、完成,不能在创建后再追加数组元素。为此又引入了向量类类Vector。向量也是一组对象的集合,但它可以向量也是一组对象的集合,但它可以追加对象元素的数量追加对象元素的数量,相当,相当于一个于一个变长数组变长数组。在这些场合中,使用在这些场合中,使用Vector比较方便比较方便:对象的数目不定;对象的数目不定;序列中的元素都是对象;序列中的元素都是对象;组合不同类的对象成一序列;组合不同类的对象成一序列;频繁地插入或删除序列中的对象。频繁地插入或删除序列中的对象。 三、数组类和向量类三、数组类和向量类(1)声明并创建)声明并创建Vector对象对象 Vector类的构造函数:类的构造函数: Vec
32、tor(); Vector(Collection c); Vector(int initialCapacity); Vector(int initialCapacity,int capacityIncrement);(2)几个常用的方法)几个常用的方法 1)向向量中增加一个元素(不是插入元素)向向量中增加一个元素(不是插入元素) add(int index,Object element); 2)批量增加元素)批量增加元素 addAll(Collection c); 3)获取向量的容量空间(余量空间)获取向量的容量空间(余量空间) int capacity(); 4)指定位置插入元素)指定位置插
33、入元素 insertElement(Object obj,int index);例6-11:向量类的应用。创建一个向量对象,将其他对象如字符串添加到向量中,然后为字符串排序。(6-11.txt)2、向量类向量类Vectorv 例例6-11:向量类的应用。创建一个向量对象,将其他对象如字符串:向量类的应用。创建一个向量对象,将其他对象如字符串添加到向量中,然后为字符串排序。添加到向量中,然后为字符串排序。(6-11.txt)import java.util.*;class VectorExm public static void main(String args) Vector vect=new
34、 Vector();/空向量对象空向量对象String str=ZS张三张三,LS李四李四,WW王五王五,ZL赵六赵六;for(int j=0;jstr.length;j+)vect.add(strj);/对象添加到向量中对象添加到向量中Collections.sort(vect);/对向量的对象排序对向量的对象排序for(int j=0;j0)b=Integer.parseInt(args0);/命令行带一个参数命令行带一个参数if(b=0)System.out.println(应用程序正常结束应用程序正常结束);System.exit(b); else/异常退出异常退出System.out
35、.println(应用程序异常结束应用程序异常结束);System.exit(b);运行结果运行结果:运行:java ProgramExit 0或java ProgramExit 1结果是“程序正常退出”或“程序异常退出”2、Java语言核心类库语言核心类库v 例例6-14:数组复制:数组复制(6-14.txt)class ArrayCopy /声明定义初始化数组声明定义初始化数组static byte a = 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 ;static byte b = new bytea.length;/声明定义数组,大小等于声明定义数组,
36、大小等于a的长度的长度public static void main(String args) System.out.println(a = + new String(a);System.arraycopy(a, 0, b, 0, a.length);/调用复制数组的方法调用复制数组的方法System.out.println(b = + new String(b); 运行结果运行结果:a=ABCDEFGHIJb=ABCDEFGHIJ2、Java语言核心类库语言核心类库v 例例6-15:获取计算机系统的相关信息例:获取计算机系统的相关信息例(6-15txt) class DisplayPrope
37、rty public static void main(String args) /以下是调用上面的方法以下是调用上面的方法getProperty(),获取相关的属性,获取相关的属性System.out.println(System.getProperty(java.version);System.out.println(System.getProperty(file.separator);System.out.println(System.getProperty(java.vm.version);System.out.println(System.getProperty(os.version
38、);System.out.println(System.getProperty();System.out.println(System.getProperty(java.class.path);System.out.println(System.getProperty(java.vendor);2、Java语言核心类库语言核心类库v 例例6-16:设置系统的相关属性:设置系统的相关属性(6-16.txt) public class SetSP public static void main(String args) String strProperty = System.getP
39、roperty( java.io.tmpdir );System.out.println(原来的临时文件存储目录名称:原来的临时文件存储目录名称: + strProperty );System.out.println(将临时文件目录设置为将临时文件目录设置为C:/Tmp);String oldProperty = System.setProperty(java.io.tmpdir, C:/Tmp );strProperty = System.getProperty(java.io.tmpdir);System.out.println(设置后的临时文件存储目录名称:设置后的临时文件存储目录名称:
40、 + strProperty );运行结果运行结果:原来的临时文件存储目录名称:D:DOCUME1cyxLOCALS1Temp将临时文件目录设置为C:/Tmp设置后的临时文件存储目录名称:C:/Tmp 2、Java语言核心类库语言核心类库4. Runtime类类Runtime类封装了运行时环境。例6-17:测试计算机的系统内存,并执行记事本程序。(6-17.txt)5. 基本数据类型(包装)类基本数据类型(包装)类数据类型类对应相应的基本数据类型,类名与数据类型的名字相似,但第一个字母需大写。包装类名包装类名 数据类型数据类型Boolean booleanCharacter charDoubl
41、e doubleInteger intLong longFloat floatBytebyte(1)Integer类例例6.18:输出整数的二、八、十六进制数表示。 (6-18.txt)(2)基本数据类型和字符串的相互转换6. Math类类提供用于数学运算的标准函数及常数,它们都是static型的,故在使用时直接用类名作前缀,不需要创建Math类的对象。2、Java语言核心类库语言核心类库v 例例6-17:测试计算机的系统内存,并执行记事本程序。:测试计算机的系统内存,并执行记事本程序。(6-17.txt)class GetMemorypublic static void main(Strin
42、g args) Runtime rt = Runtime.getRuntime(); long mem1, mem2;Integer someints = new Integer100;System.out.println(总内存总内存: +rt.totalMemory();/总内存总内存mem1 = rt.freeMemory(); /可用内存可用内存System.out.println(可用内存可用内存: + mem1);rt.gc(); /内存回收内存回收mem1 = rt.freeMemory();System.out.println(可用内存可用内存: + mem1); /可用内存可
43、用内存 for(int i=0; i100; i+)/占用内存占用内存someintsi = new Integer(i); mem2 = rt.freeMemory();System.out.println(可用内存可用内存: + mem2); /可用内存可用内存 System.out.println(使用的内存使用的内存: + (mem1-mem2); /用的内存用的内存 / discard Integers2、Java语言核心类库语言核心类库for(int i=0; i100; i+) someintsi = null;rt.gc(); /释放内存释放内存 mem2 = rt.freeM
44、emory();System.out.println(可用内存可用内存 : + mem2); /可用内存可用内存/调用记事本程序调用记事本程序rt.exec(notepad);System.out.println(Error executing notepad.);运行结果运行结果:2、Java语言核心类库语言核心类库v 例例6.18:输出整数的二、八、十六进制数表示。:输出整数的二、八、十六进制数表示。 (6-18.txt)public class IntegerChange public static void main(String args) String nm=new String(
45、445); int n=Integer.parseInt(nm); System.out.println(十进制表示:十进制表示:+n); System.out.println(二进制表示:二进制表示:+Integer.toBinaryString(n); System.out.println(八进制表示:八进制表示:+Integer.toOctalString(n); System.out.println(十六进制表示:十六进制表示:+Integer.toHexString(n); 运行结果运行结果:十进制表示:十进制表示:445二进制表示:二进制表示:110111101八进制表示:八进制表
46、示:675十六进制表示:十六进制表示:1bd四、四、 JavaJava语言基础类库语言基础类库 3、实用类库、实用类库java.util java 的的utility类库是类库是Java核心包的一部分,即核心包的一部分,即java.util包。该包。该包中有很多实用的类包中有很多实用的类1. 日期类日期类Date 日期类Date用来操作系统日期、时间,如天数计算、日期比较等。 例6-19:输出时间和日期(6-19.txt)2. 日历类日历类Calendar Calendar类是抽象类,故不能用new创建对象,但可使用其getInstance()方法得到默认时区的一个对象。 例6-20:使用日历
47、类显示日期时间和设置日期时间。 (6-20.txt)3. 标准日历时钟类标准日历时钟类GregorianCalendar GregorianCalendar是一个标准的日历类,其对象也就是Calendar类的getInstance()方法返回的用默认的地区、时区表示的当前日期和时间的对象。 例6-21:显示当前的的日期和时间(6-21.txt)4. 随机类随机类Random Random类是伪随机数产生类。使用相同的初始化值(又称种子数)生成一个Random类的对象时,可获得相同的一组随机数。使用不同的种子数则可产生不同的随机数。3、实用类库、实用类库java.utilv 例例6-19:输出时
48、间和日期:输出时间和日期(6-19.txt)import java.util.Date;class CurrentDatepublic static void main(String args)Date now = new Date();/创建日期对象创建日期对象System.out.println(现在是:现在是:);/显示当前日期和时间显示当前日期和时间System.out.print(1900 + now.getYear()+年年);/取年取年System.out.print(now.getMonth()+月月);/月月System.out.print(now.getDay()+日日);
49、/日日System.out.print(now.getHours()+时时);/System.out.print(now.getMinutes()+分分);System.out.println(now.getSeconds()+秒秒);System.out.println(现在是:现在是:+now);/用用toString()方法显示方法显示long msec = now.getTime();/显示毫秒数,从显示毫秒数,从January 1, 1970 GMT System.out.println(从从Jan. 1, 1970 GMT到现在的毫秒数到现在的毫秒数 = + msec);3、实用类
50、库、实用类库java.utilv 例例6-20:使用日历类显示日期时间和设置日期时间。:使用日历类显示日期时间和设置日期时间。 (6-20.txt)import java.util.Calendar;class ACalendarpublic static void main(String args) String months = /初始化数组初始化数组 Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec; Calendar aCalendar = Calendar.getInstance();/用默认时区得到对象用默认时区得
51、到对象 System.out.print(Date: );/ 显示当前日期显示当前日期 System.out.print(monthsaCalendar.get(Calendar.MONTH); /使用常数使用常数 System.out.print( + aCalendar.get(Calendar.DATE) + ); System.out.println(aCalendar.get(Calendar.YEAR); System.out.print(Time: );/显示和时间显示和时间 System.out.print(aCalendar.get(Calendar.HOUR) + :);/
52、打印时间打印时间 System.out.print(aCalendar.get(Calendar.MINUTE) + :); System.out.println(aCalendar.get(Calendar.SECOND); aCalendar.set(Calendar.HOUR, 10); / 设置时间设置时间 aCalendar.set(Calendar.MINUTE, 29); aCalendar.set(Calendar.SECOND, 22);System.out.print(Updated time: );/显示设置后的时间显示设置后的时间 System.out.print(aC
53、alendar.get(Calendar.HOUR) + :);/打印时分秒打印时分秒 System.out.print(aCalendar.get(Calendar.MINUTE) + :); System.out.println(aCalendar.get(Calendar.SECOND); 3、实用类库、实用类库java.utilv 例例6-21:显示当前的的日期和时间:显示当前的的日期和时间(6-21.txt)import java.awt.*;import java.util.GregorianCalendar; public class Gregorian extends Fram
54、e public static void main(String args) Gregorian gr = new Gregorian();/ 创建框架对象创建框架对象TextArea ta = new TextArea();/ 文本区域对象文本区域对象GregorianCalendar gc = new GregorianCalendar();/ 日历时钟日历时钟ta.append(Year: + gc.get(GregorianCalendar.YEAR) + n);/ 年年ta.append(Month: + gc.get(GregorianCalendar.MONTH) + n);/
55、月月ta.append(Day: + gc.get(GregorianCalendar.DATE) + n);/ 日日ta.append(Hour: + gc.get(GregorianCalendar.HOUR) + n);/ 时时ta.append(Minute: + gc.get(GregorianCalendar.MINUTE) + n);/ 分分ta.append(Second: + gc.get(GregorianCalendar.SECOND) + n);/ 秒秒gr.add(ta, BorderLayout.CENTER);/ 文本区域加入到框架中心,用边界布局文本区域加入到框
56、架中心,用边界布局gr.setSize(300, 200);gr.setVisible(true);运行结果运行结果:五、五、 实例学习实例学习五、五、 实例学习实例学习v 实例学习实例学习1:找出距离最近的点对:找出距离最近的点对假设有一个集合的点,找出最接近的点对问题就是找到两个点,它们到彼此的距离最近。例如:在图6-5中,点(1,1)和(2,0.5)是彼此之间距离最近的一对点。解决这个问题的方法有好几种。一种直观的方法就是计算所有点对之间的距离,并且找出最短的距离。(6-实例学习实例学习-1.txt)6-实例学习实例学习-1.txtimport java.util.Scanner; pu
57、blic class FindNearestPoints public static void main(String args) Scanner input = new Scanner(System.in);System.out.print(Enter the number of points: );int numberOfPoints = input.nextInt(); / Create an array to store pointsdouble points = new doublenumberOfPoints2;System.out.print(Enter + numberOfPo
58、ints + points: );for (int i = 0; i points.length; i+) pointsi0 = input.nextDouble();pointsi1 = input.nextDouble(); / p1 and p2 are the indices in the points arrayint p1 = 0, p2 = 1; / Initial two pointsdouble shortestDistance = distance(pointsp10, pointsp11,pointsp20, pointsp21); / Initialize shorte
59、stDistance 演示示例:演示示例:找出距离最近的点对找出距离最近的点对6-实例学习实例学习-1.txt/ Compute distance for every two pointsfor (int i = 0; i points.length; i+) for (int j = i + 1; j distance) p1 = i; / Update p1p2 = j; / Update p2shortestDistance = distance; / Update shortestDistance / Display resultSystem.out.println(The close
60、st two points are + ( + pointsp10+ , + pointsp11 + ) and ( + pointsp20 + , + pointsp21 + ); /* Compute the distance between two points (x1, y1) and (x2, y2) */ public static double distance(double x1, double y1, double x2, double y2) return Math.sqrt(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);6-实例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国口腔种植体集采政策对民营医院经营影响分析报告
- 2025年榫卯结构建筑模型制作合同
- 环境保护法规与政策知识考试题2026年
- 2026新疆博尔塔拉州博乐黄冈中学第五师分校临聘人员招聘3人考试备考试题及答案解析
- 2026年建筑工程基础知识初级笔试题目
- 2026年金融风险管理师职业水平考试题
- 2026年电子商务运营及网络销售题库
- 2026年淮南高新区中心幼儿园面向社会公开招聘服务岗位教师14名笔试备考试题及答案解析
- 2026年武汉理工大学专业技术人员招聘25人笔试备考试题及答案解析
- 2026湖南长沙宁乡市人力资源和社会保障局公开招聘公益性岗位人员考试备考题库及答案解析
- 2025年医保网络安全自检自查报告
- 制造企业总经理年终总结
- 供应室去污区工作总结
- 中医医院针灸进修总结
- 超高层建筑深基坑施工风险动态评估体系研究
- 牙槽外科常见病例讨论
- 药品研发异常管理办法
- DB1310∕T 326-2024 工程地质层组划分技术规程
- 麦当劳清洁管理制度
- DB13T 2669-2018 高速公路服务区设计规范
- 2025公务员能源局面试题目及答案
评论
0/150
提交评论