




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、让IT教学更简单,让IT学习更有效让IT教学更简单,让IT学习更有效第五章 数组、字符串及容器类String类和StringBuffer类System类和Runtime类Math类和Random类包装类Date类、Calendar类和DateFormat类让IT教学更简单,让IT学习更有效 目录5.35.35.3 foreach语句语句5.55.5java.util.Arrays类类5.15.1一维数组一维数组5.25.2多维数组多维数组5.45.4数组的运用数组的运用5.65.65.75.7容器容器字符串字符串让IT教学更简单,让IT学习更有效 数组是指一组数据的集合,数组中的每个数据被称作
2、元素。在数组中可以存放恣意类型的元素,但同一个数组里存放的元素类型必需一致。 数组变量属援用类型,数组也可以看成是对象,数组中的每 个元素相当于该对象的成员变量。 数组中的元素可以是可以任何数据类型,包括根本类型和引 用类型。5.1 一维数组让IT教学更简单,让IT学习更有效5.1 一维数组5.1.1 一维数组的定义一维数组的定义在在Java中,可以运用以下格式来定义一个数组。中,可以运用以下格式来定义一个数组。上述语句就相当于在内存中定义了上述语句就相当于在内存中定义了100个个int类型的变量,类型的变量,第一个变量的称号为第一个变量的称号为x0,第二个变量的称号为,第二个变量的称号为x1
3、,以,以此类推,第此类推,第100个变量的称号为个变量的称号为x99,这些变量的初始,这些变量的初始值都是值都是0。让IT教学更简单,让IT学习更有效5.1一维数组 5.1.1 一维数组的定义一维数组的定义 接下来,经过两张内存图来详细地阐明数组接下来,经过两张内存图来详细地阐明数组在创建过程中内存的分配情况。在创建过程中内存的分配情况。让IT教学更简单,让IT学习更有效留意:留意: 数据类型可以是数据类型可以是8种根本数据类型,也可以是援用类型种根本数据类型,也可以是援用类型 例如:例如:int a; int b; Animal dog; Java言语中声明数组时不能指定其长度数组中元素的个
4、言语中声明数组时不能指定其长度数组中元素的个数,数, int a10; /错误错误5.1 一维数组让IT教学更简单,让IT学习更有效留意:元素为援用数据类型的数组中的每一个元素都需求实例化。public class TestArry public static void main(String args) Date days; days = new Date3; for(int i = 0; i 3; i+) daysi = new Date(2019,10,i+1); class Date int year;int month; int day; Date(int y,int m,int d
5、) year = y; month = m; day = d; Days:nullDays:xxxnullnullnullxxxxxxxxx2019101201910220191035.1.1 5.1.1 一维数组的定义一维数组的定义-元素为援用数据类型的数组元素为援用数据类型的数组5.1 一维数组让IT教学更简单,让IT学习更有效5.1 一维数组 5.1.1 一维数组的定义一维数组的定义-默许值默许值让IT教学更简单,让IT学习更有效5.1.2 一维数组的初始化一维数组的初始化 Java中数组的初始化分为两种方式:静态初始化和动态初始化。 动态初始化:为数组元素分配空间和赋值的操作分开进展,
6、例如:5.1 数组让IT教学更简单,让IT学习更有效5.1 数组 5.1.1 一维数组的初始化一维数组的初始化再例如:再例如:让IT教学更简单,让IT学习更有效5.1 一维数组 5.1.2 一维数组的初始化一维数组的初始化 在初始化数组时还有一种方式叫做静态初始在初始化数组时还有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个化,就是在定义数组的同时就为数组的每个元素赋值。数组的静态初始化有两种方式:元素赋值。数组的静态初始化有两种方式: 但是为了简便,建议采用第二种方式。但是为了简便,建议采用第二种方式。让IT教学更简单,让IT学习更有效5.1 一维数组 5.1.2 一维数组的初始
7、化一维数组的初始化 数组静态初始化的效果:数组静态初始化的效果:让IT教学更简单,让IT学习更有效5.1 一维数组 5.1.2 一维数组的初始化一维数组的初始化 数组静态初始化的效果:数组静态初始化的效果:值得留意的是,例程中的第3行代码千万不可写成int x = new int41,2,3,4;,这样写编译器会报错。缘由在于编译器会以为数组限定的元素个数4与实践存储的元素1,2,3,4个数有能够不一致,存在一定的平安隐患。让IT教学更简单,让IT学习更有效脚下留心 1、每个数组的索引都有一个范围,即0length-1。在访问数组的元素时,索引不能超出这个范围,否那么程序会报错:运转结果中所提
8、示的错误信息是数组越界异常ArrayIndexOutOfBoundsException,出现这个异常的缘由是数组的长度为4,其索引范围为03,例程中的第4行代码运用索引4来访问元素时超出了数组的索引范围。所谓异常指程序中出现的错误,它会报告出错的异常类型、出错的行号以及出错的缘由,关于异常在后面的章节会有详细地讲解。让IT教学更简单,让IT学习更有效脚下留心 2、在运用变量援用一个数组时,变量必需指向一个有效的数组对象,假设该变量的值为null,那么意味着没有指向任何数组,此时经过该变量访问数组的元素会出现空指针异常:让IT教学更简单,让IT学习更有效5.1 一维数组 5.1.3 数组的常见操
9、作数组的常见操作 1、一维数组遍历、一维数组遍历 在操作数组时,经常需求依次访问数组中的在操作数组时,经常需求依次访问数组中的每个元素,这种操作称作数组的遍历。每个元素,这种操作称作数组的遍历。让IT教学更简单,让IT学习更有效2.8 数组 2.7.2 数组的常见操作数组的常见操作 2、数组最值、数组最值 在操作数组时,经常需求获取数组中元素的在操作数组时,经常需求获取数组中元素的最值。最值。让IT教学更简单,让IT学习更有效5.1一维数组 5.1.3 数组的常见操作数组的常见操作 3、一维数组排序、一维数组排序 在操作数组时,经常需求对数组中元素进展在操作数组时,经常需求对数组中元素进展排序
10、。排序。 冒泡排序:在排序过程中,不断地比较数组冒泡排序:在排序过程中,不断地比较数组中相邻的两个元素,较小者向上浮,较大者中相邻的两个元素,较小者向上浮,较大者往下沉:往下沉: 第一步,从第一个元素开场,将相邻的两个元素依次进展比较,直到最后两个元素完成比较。假设前一个元素比后一个元素大,那么交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮比较。 第二步,除了最后一个元素,将剩余的元素继续进展两两比较,过程与第一步类似,这样就可以将数组中第二大的数放在了倒数第二个位置。 第三步,以此类推,继续对越来越少的元素反复上面的步骤,直到没有任何一对元素需求比较为
11、止。让IT教学更简单,让IT学习更有效5.1 一维数组 5.1.3 数组的常见操作数组的常见操作 3、数组排序、数组排序 在操作数组时,经常需求对数组中元素进展在操作数组时,经常需求对数组中元素进展排序。排序。让IT教学更简单,让IT学习更有效5.1 一维数组 5.1.3 数组的常见操作数组的常见操作 3、数组排序、数组排序 在操作数组时,经常需求对数组中元素进展在操作数组时,经常需求对数组中元素进展排序。排序。bubbleSort ()方法中经过一个嵌套for循环实现了冒泡排序。让IT教学更简单,让IT学习更有效5.1 数组 5.1.3 数组的常见操作数组的常见操作 3、数组排序、数组排序
12、在操作数组时,经常需求对数组中元素进展在操作数组时,经常需求对数组中元素进展排序。排序。2628行代码实现了数组中两个元素的交换。让IT教学更简单,让IT学习更有效练习题练习题 定义一个对象数组 Student stus=new Student5;每个元素中存储学生信息 姓名(String) ,年龄(int),成果(int)然后按成果给这个数组排序。让IT教学更简单,让IT学习更有效5.2 多维数组 5.2.1 二维数组的声明二维数组的声明 多维数组可以简单地了解为在数组中嵌套数多维数组可以简单地了解为在数组中嵌套数组。在程序中比较常见的就是二维数组。二组。在程序中比较常见的就是二维数组。二维
13、数组的定义有很多方式:维数组的定义有很多方式:让IT教学更简单,让IT学习更有效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
14、 int35;5.2 多维数组让IT教学更简单,让IT学习更有效5.2 多维数组 5.2.1 二维数组的声明二维数组的声明 所以,二维数组也可以如下定义:所以,二维数组也可以如下定义:让IT教学更简单,让IT学习更有效5.2 多维数组 5.2.2 二维数组的初始化二维数组的初始化静态初始化:适用于数组元素个数较少的情况int intArray=1,2,2,3,3,4;String22 stringArray = “Hello,“world,“java,“test;/错误,不能指定维数。让IT教学更简单,让IT学习更有效动态初始化:1直接为每一维分配空间,其语法格式为: 数据类型 数组名 = n
15、ew数据类型行数列数; 如: int a= new int34;a:xxx5.2.2 二维数组的初始化二维数组的初始化5.2 多维数组让IT教学更简单,让IT学习更有效AS:xxx再如:String AS = new String34;5.2.2 二维数组的初始化二维数组的初始化5.2 多维数组让IT教学更简单,让IT学习更有效(2) 从最高维开场而且必需从最高维开场,分别为每一维 分配空间,此时二维数值中每行的元素个数可以不相等。如:int a = new int3 ;a0= new int2;a1 = new int3; 5.2.2 二维数组的初始化二维数组的初始化5.2 多维数组让IT教
16、学更简单,让IT学习更有效a:xxxint a = new int3 ;a0= new int2; a1 = new int3; 5.2.2 二维数组的初始化二维数组的初始化5.2 多维数组让IT教学更简单,让IT学习更有效例例1:让IT教学更简单,让IT学习更有效统计一个公司三个销售小组三个季度中每个小组的总销售额以及整个公司的销售额。例例2:让IT教学更简单,让IT学习更有效例例3:让IT教学更简单,让IT学习更有效留意:二维数组名.length方式前往的将是该二维数值的行数,运用“二维数组名index1.length前往的是该二维数组第index1行的元素数即该行的列数。【书例5.2】M
17、ultiMatrixDemo.java5.2.3 二维数组的访问二维数组的访问5.2 多维数组让IT教学更简单,让IT学习更有效u foreach语句用于循环遍历数组或集合中的各个元素。语法格式为:语法格式为:for(数据类型变量数据类型变量:数组集合数组集合) 如:int intArray = 1,2,3,4,5; /声明变量 i 的类型要与数组或集合的数据类型一致;for(int i : intArray) /系统自动帮我们完成循环的循环条件、迭代语句。 System.out.println(i);5.3 foreach语句让IT教学更简单,让IT学习更有效循环变量是暂时变量,不是数组元素
18、,系统会把数组中的 值依次赋给这个暂时变量。虽然允许为此暂时变量赋值,但是 无法来修正数组的值,而且极易出错。5.3 foreach语句【书例5.3】ForeachDemo.java让IT教学更简单,让IT学习更有效5.5 Arrays工具类 java.util包中还提供了一个专门用于操作数组的工具类Arrays。Arrays工具类提供了大量的静态方法。 1、运用Arrays的sort()方法排序 在前面学习数组时,要想对数组进展排序就需求自定义一个排序方法,其实也可以运用Arrays工具类中的静态方法sort()来实现这个功能,接下来经过一个案例来学习sort()方法的运用。让IT教学更简单
19、,让IT学习更有效5.5 Arrays工具类 2、运用、运用Arrays的的binarySearch(Object a, Object key)方法查找元素方法查找元素 程序开发中,经常会在数组中查找某些特定的元素,假设程序开发中,经常会在数组中查找某些特定的元素,假设数组中元素较多时查找某个元素就会非常繁琐,为此,数组中元素较多时查找某个元素就会非常繁琐,为此,Arrays类中提供还了一个方法类中提供还了一个方法binarySearch(Object a, Object key)用于查找元素,接下来经过一个案例来学习用于查找元素,接下来经过一个案例来学习该方法的运用。该方法的运用。让IT教学
20、更简单,让IT学习更有效5.5 Arrays工具类 2、运用、运用Arrays的的binarySearch(Object a, Object key)方法查找元素方法查找元素 所谓二分法查找就是每次将指定元素和数组中间位置的元素进展比较,从而排除掉其中的一半元素,这样的查找是非常高效的。接下来经过一个图例来演示二分法查找元素的过程。让IT教学更简单,让IT学习更有效5.5 Arrays工具类 3、运用、运用Arrays的的copyOfRange(int original, int from, int to)方法拷贝元素方法拷贝元素 在程序开发中,经常需求在不破坏原数组的情况下运用数在程序开发中
21、,经常需求在不破坏原数组的情况下运用数组中的部分元素,这时可以运用组中的部分元素,这时可以运用Arrays工具类的工具类的copyOfRange(int original,int from,int to)方法将数组方法将数组中指定范围的元素复制到一个新的数组中,该方法中参数中指定范围的元素复制到一个新的数组中,该方法中参数original表示被复制的数组,表示被复制的数组,from表示被复制元素的初始表示被复制元素的初始索引包括,索引包括,to表示被复制元素的最后索引不包括表示被复制元素的最后索引不包括,接下来经过一个案例来学习如何拷贝数组。,接下来经过一个案例来学习如何拷贝数组。让IT教学更
22、简单,让IT学习更有效5.5 Arrays工具类 4运用运用Arrays的的fill(Object a, Object val)方法填充元方法填充元素素 程序开发中,经常需求用一个值交换数组中的一切元素,程序开发中,经常需求用一个值交换数组中的一切元素,这时可以运用这时可以运用Array的的fill(Object a, Object val)方法,方法,该方法可以将指定的值赋给数组中的每一个元素,接下来该方法可以将指定的值赋给数组中的每一个元素,接下来经过一个案例来演示如何填充元素。经过一个案例来演示如何填充元素。让IT教学更简单,让IT学习更有效5.5 Arrays工具类 5运用运用Arra
23、ys的的toString(int arr)方法把数组转换为字方法把数组转换为字符串符串 在程序开发中,经常需求把数组以字符串的方式输出,这在程序开发中,经常需求把数组以字符串的方式输出,这时就可以运用时就可以运用Arrays工具类的另一个方法工具类的另一个方法toString(int arr)。需求留意的是,该方法并不是对。需求留意的是,该方法并不是对Object类类toString()方法的重写,只是用于前往指定数组的字符串方法的重写,只是用于前往指定数组的字符串方式,接下来经过一个案例来演示如何将数组转换为字符方式,接下来经过一个案例来演示如何将数组转换为字符串。串。让IT教学更简单,让I
24、T学习更有效练习:练习:给定数组9,3,5,6,2,11,5,6,进展如下操作1排序,并输出排序后的结果2再定义一个数组9,3,5,6,2,11,5,6 ,比较这两个数组能否一样。3查找数字5,并前往其下标4运用数字8填充数组中的第3-5元素,并输出结果。5拷贝数组中的前5个值到另外一个数组。并输出该数组中的值。让IT教学更简单,让IT学习更有效5.5 Arrays工具类 留意:留意: Arrays类为我们提供了大量操作数组的方法,实践工程开类为我们提供了大量操作数组的方法,实践工程开发中,引荐运用发中,引荐运用Arrays类的静态方法来完成数组的操作,类的静态方法来完成数组的操作,这样既快捷
25、又不会发生错误,但是面试的时候,假设出现这样既快捷又不会发生错误,但是面试的时候,假设出现对数组操作的标题,就绝不允许是用对数组操作的标题,就绝不允许是用Arrays类提供的方法类提供的方法,由于面试官调查的是我们对数组的操作才干,而不是对,由于面试官调查的是我们对数组的操作才干,而不是对Arrays类的运用。类的运用。让IT教学更简单,让IT学习更有效u 字符串是字符的序列,它是组织字符的根本数据构造, 从 u 某种程度上来说有些类似于字符的数组。u 在Java中,字符串被当作对象来处置。u 程序中需求用到的字符串可以分为两大类,一类是创建之后不会再做修正和变动的字符串常量;另一类是创建之后
26、允许再做更改和变化的字符串变量。u 在Java中,存放字符串常量的对象用String类,对于字符串变量,由于程序中经常需求对它做添加,插入,修正等操作,普通存放在StringBuffer类的对象中。它们都位于java.lang包中,因此不需求导包就可以直接运用。5.6 字符串让IT教学更简单,让IT学习更有效String字符串常量运用双引号括住的一串字符,比如:字符串常量运用双引号括住的一串字符,比如: Hello world! Java编译器自动为每一个字符串常量生成一个编译器自动为每一个字符串常量生成一个String类的实例,因此可以用字符串类的实例,因此可以用字符串常量直接初始化一个常量
27、直接初始化一个String对象,如:对象,如: String s=Hello world! ;5.6 字符串让IT教学更简单,让IT学习更有效要创建类String的一个对象并进展初始化,需求调用类String的构造方法。类String中提供了下面的一些构造方法:String( ):无参数的缺省的构造方法用来创建一个空串。 String s = new String( ); String( String value):利用曾经存在的字符串常量创建一个新的String对象,该对象的内容与给出的字符串常量一致。 String s=new String(“hello);String( char val
28、ue ):经过给构造方法传送一个字符数组可以创建一个非空串。char chars = a , b , c ; String s = new String( chars ) ; String5.6 字符串让IT教学更简单,让IT学习更有效String( char , int startIndex, int numChars ):这种方法用来创建一个非空串,并且指明所创建的字符串在字符数组中的起始地址以及所包含的字符个数。char chars = a , b , c , d , e , f ;String s = new String ( chars , 2 , 3 ); 该方法生成的串s为“cd
29、e。(留意数组的下标从0开场)String5.6 字符串让IT教学更简单,让IT学习更有效String( byte mybyte):从byte型数组进展初始化的构造方法。byte mybyte = 97 , 98 , 99 ; String s = new String( mybyte);该方法构造的字符串s是“abc。String(StringBuffer buffer):这个构造函数利用一个曾经存在的StringBuffer对象为新建的String对象初始化。String5.6 字符串让IT教学更简单,让IT学习更有效 1. length public int length( ) 此方法前
30、往字符串的字符个数,如:String s = abc; System.out.println( s.length( ) ); 那么将显示字符个数为3。StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效2. charAt public char charAt (int index )该方法前往字符串中index位置上的字符。String s1 = here it is; System.out.println(s1.charAt(3);运转结果:e3. getCharspublic void getchars (int srcbegin,int end,cha
31、r buf,int dstbegin)将字符从此字符串复制到目的字符数组。StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效4. indexOf和lastIndexOf int indexOf ( int ch) int lastIndexOf ( int ch) 前往字符ch在字符串中出现的第一个和最后一个位置。String s1 = I am a student;System.out.println(s1.indexOf(a); /或aSystem.out.println(s1.lastIndexOf(a); 运转结果:2 5StringString根
32、本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效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 fromIndex) int lastIndexOf (String str , int fromIndex)前
33、往子串str中的第一个字符在字符串中位置fromIndex以后出现的始末位置。StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效5. public boolean startsWith(Stringprefix) public boolean startsWith(String prefix,int toffset) 测试字符串能否以指定前缀开场。第二个重载函数是以 指定索引开场,如字符串以prefix为前缀前往true,否那么 前往false public boolean endsWith(String suffix) 测试该字符串能否以suffix后缀
34、终了,如是前往true,否 那么前往falseString s1 = I am a student;System.out.println(s1.startsWith(I);System.out.println(s1.endsWith(student);运转结果:true trueStringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效6. 在Java中,运算符“可以用来实现字符串的衔接,如:String s = “He is + age + “years old.假设整数型变量age的值为15,那么,s的值为“He is 15 yearsOld。7. compa
35、reTopublic int compareTo ( String str ) 该方法按字典次序比较两个字符串的大小,假设源串较小,那么前往一个小于0的值,如相等那么前往0,否那么前往一个大于0的值。StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效8. regionMatchesboolean regionMatches( int toffset , String other , int ooffset , int len ) boolean regionMatches( boolean ignoreCase , int toffset , String
36、 other , int ooffset , int len ) 上述两个方法都是用来进展方式匹配的,匹配胜利那么前往true,否那么前往false。其中,toffset和ooffset分别指明当前字符串和参数字符串中所要比较的子串的起始索引位置,len指明比较的长度,而ignoreCase指明比较时能否区分大小写。对于第一种方法,比较是区分大小写的。StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效例如:String s4 = tsinghua; String s5 = it is TsingHua; System.out.println(s4.regi
37、onMatches(0,s5,6,7);System.out.println(s4.regionMatches(true,0,s5,6,7);StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效 9. equals和equalsIgnoreCasepublic boolean equals( object str) public boolean equalsIgnoreCase( object str )判别两个字符串能否相等,那么可以用此方法。相等那么前往 true,不等那么前往false,两种方法的区别在于 equalsIgnoreCase不区分字母大小
38、写,而equals那么须区分。10.其他方法public String replace(char oldChar,char newChar)将串中出现的特定字符用新的字符替代。StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效public String substring(int beginIndex)public String substring(int beginIndex)The substring begins with the character at the The substring begins with the character at
39、the specified index and extends to the end of this string. specified index and extends to the end of this string. public String substring(int beginIndex,int endIndex)public String substring(int beginIndex,int endIndex)returns a new string that is a substring of this string. returns a new string that
40、 is a substring of this string. The substring begins at the specified beginIndex The substring begins at the specified beginIndex and extends to the character at index endIndex - 1.and extends to the character at index endIndex - 1.StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效public String toLowerCas
41、e()把串中的一切字符转换成小写public String toUpperCase()把串中的一切字符转换成大写public String trim()去除字符串两端的空白public char toCharArray()前往字符串的字符数组方式StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效 String s1 = henan university;String s2 = s1.toUpperCase();System.out.println(s2);System.out.println(s2.toLowerCase();String s3 = zha
42、nglin 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.substring(2,8); /包括beginIndex,不包括e
43、ndIndexHENAN UNIVERSITYhenan universityzhanglin 1987 , z, h, a, n, g, l, i, n, , 1, 9, 8, 7, 15 false zhaojing 1987 nan un让IT教学更简单,让IT学习更有效public String concat(String str);将当前字符串对象与给定的字符串str衔接起来。public String split(String regex)将字符串根据给定的正那么表达式进展拆分,举例如下:The string boo:and:foo, for example, yields the
44、 following results with these expressions: Regex Result : boo, and, foo o b, , :and:f public static String valueOf(type types)该前往types的字符串方式StringString根本方法根本方法5.6 字符串让IT教学更简单,让IT学习更有效public static void main(String args) String str = cares.concat(s); String St = to.concat(get).concat(her); System.ou
45、t.println(str+ + St); int t = 341435; float f = 23.4f; 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); 让IT教学更简单,让IT学习更有效String name = ray
46、“; name.concatlong“; /字符串衔接System.out.printlnname; /输出name,还是ray“name = name.concatlong“; /把字符串对象衔接的结果赋给了name援用System.out.printlnname; /输出name,oh!,变成了raylong“分析输出结果分析输出结果让IT教学更简单,让IT学习更有效脚下留心 String字符串在获取某个字符时,会用到字符的索引,当访问字符串中的字符时,假设字符的索引不存在,那么会发生StringIndexOutOfBoundsException字符串角标越界异常可以看出,访问字符串中的字
47、符时,不能超出字符的索引范围,否那么会出可以看出,访问字符串中的字符时,不能超出字符的索引范围,否那么会出现异常,这与数组中的角标越界异常非常类似。现异常,这与数组中的角标越界异常非常类似。让IT教学更简单,让IT学习更有效1给定字符串“abcde,将该字符串转换为字符数组,并将其输出,输出的格式为:a,b,c,d,e.2给定字符串“篮球-足球-乒乓球,将字符串进展分割,最后得到输出格式为:篮球,足球,乒乓球。3对给定的10个国家名,按其字母的顺序输出。 4求输入英文句子单词的平均长度。 5从文件途径中提取出文件名(包含后缀) 。比如从c:ab.txt中提取出b.txt这个文件名出来。练习题练
48、习题让IT教学更简单,让IT学习更有效 5.6.2 StringBuffer类类 为了便于对字符串的修正,在为了便于对字符串的修正,在JDK中提供了一个中提供了一个StringBuffer类也称字符串缓冲区。类也称字符串缓冲区。StringBuffer类和类和String类最大的区别在于它的内容和长度都是可以改动的类最大的区别在于它的内容和长度都是可以改动的。StringBuffer类似一个字符容器,当在其中添加或删除字类似一个字符容器,当在其中添加或删除字符时,并不会产生新的符时,并不会产生新的StringBuffer对象。对象。5.6 字符串字符串StringBuffer让IT教学更简单,
49、让IT学习更有效5.6 字符串 5.6.2 StringBuffer类类例程中涉及到例程中涉及到StringBuffer类的很多方法,其中类的很多方法,其中append()和和insert()方法是方法是最常用的,并且这两个方法有很多重载方式,它们都用于添加字符。不同的最常用的,并且这两个方法有很多重载方式,它们都用于添加字符。不同的是,是,append()方法一直将这些字符添加到缓冲区的末尾,而方法一直将这些字符添加到缓冲区的末尾,而insert()方法那方法那么可以在指定的位置添加字符。么可以在指定的位置添加字符。让IT教学更简单,让IT学习更有效 5.6.2 StringBuffer类类
50、 StringBuffer类和类和String类有很多类似之处,初学者运用时类有很多类似之处,初学者运用时容易混淆。容易混淆。 1、String类表示的字符串是常量,一旦创建后,内容和长度类表示的字符串是常量,一旦创建后,内容和长度都是无法改动的。都是无法改动的。StringBuffer表示字符容器,其内容和长表示字符容器,其内容和长度都可以随时修正。在操作字符串时,假设该字符串仅用于度都可以随时修正。在操作字符串时,假设该字符串仅用于表示数据类型,那么运用表示数据类型,那么运用String类即可,但是假设需求对字类即可,但是假设需求对字符串中的字符进展增删操作,那么运用符串中的字符进展增删操
51、作,那么运用StringBuffer类。类。 2、String类覆盖了类覆盖了Object类的类的equals()方法,而方法,而StringBuffer类没有覆盖类没有覆盖Object类的类的equals()方法方法 3、String类对象可以用操作符类对象可以用操作符“+进展衔接,而进展衔接,而StringBuffer类对象之间不能类对象之间不能5.6 字符串让IT教学更简单,让IT学习更有效常用类一: System类与 Runtime类 1、System类类 System类对大家来说并不陌生,由于之前在打印结果时类对大家来说并不陌生,由于之前在打印结果时,运用的都是,运用的都是“Syst
52、em.out.println()语句。这句代码中语句。这句代码中就运用了就运用了System类。类。 System类定义了一些与系统相关的属性和方法,它所提类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要援用这些属性和供的属性和方法都是静态的,因此,想要援用这些属性和方法,直接运用方法,直接运用System类调用即可。类调用即可。让IT教学更简单,让IT学习更有效 1、 System类类 1getProperties()方法方法 System类的类的getProperties()方法用于获取当前系方法用于获取当前系统的全部属性,该方法会前往一个统的全部属性,该方法
53、会前往一个Properties对象,其中对象,其中封装了系统的一切属性,这些属性是以键值对的方式存在封装了系统的一切属性,这些属性是以键值对的方式存在常用类一: System类 与Runtime类让IT教学更简单,让IT学习更有效 1、 System类类 2currentTimeMillis() currentTimeMillis()方法前往一个方法前往一个long类型的值类型的值,该值表示当前时间与,该值表示当前时间与1970年年1月月1日日0点点0分分0秒之间的时秒之间的时间差,单位是毫秒,习惯性地被称作时间戳。间差,单位是毫秒,习惯性地被称作时间戳。例程例程6-10中,演示了数字的求和操
54、作,程序在求和开场和终了时,分别调用中,演示了数字的求和操作,程序在求和开场和终了时,分别调用了了currentTimeMillis()方法分别获得了两个时间戳,两个时间戳之间的差值方法分别获得了两个时间戳,两个时间戳之间的差值便是求和操作耗费的时间。便是求和操作耗费的时间。常用类一: System类 与Runtime类让IT教学更简单,让IT学习更有效 1、System类类 3arraycopy(Object src,int srcPos,Object dest,int destPos,int length) arraycopy()方法用于将一个数组中的元素快速拷方法用于将一个数组中的元素快
55、速拷贝到另一个数组。其中的参数详细作用如下:贝到另一个数组。其中的参数详细作用如下: src:表示源数组:表示源数组 dest:表示目的数组:表示目的数组 srcPos:表示源数组中拷贝元素的起始位置:表示源数组中拷贝元素的起始位置 destPos:表示拷贝到目的数组的起始位置:表示拷贝到目的数组的起始位置 length:表示拷贝元素的个数:表示拷贝元素的个数 需求留意的是,在进展数组复制时,目的数组必需有需求留意的是,在进展数组复制时,目的数组必需有足够的空间来存放拷贝的元素,否那么会发生角标越界异足够的空间来存放拷贝的元素,否那么会发生角标越界异常。常。常用类一: System类 与Run
56、time类让IT教学更简单,让IT学习更有效 1、 System类类 3arraycopy(Object src,int srcPos,Object dest,int destPos,int length) 例程例程6-11中,创建了两个数组中,创建了两个数组fromArray和和toArray,分别代表源数组和目的,分别代表源数组和目的数组,当调用数组,当调用arraycopy()方法进展元素拷贝时,由于指定了从源数组中索方法进展元素拷贝时,由于指定了从源数组中索引为引为2的元素开场拷贝,并且拷贝的元素开场拷贝,并且拷贝4个元素存放在目的数组中索引为个元素存放在目的数组中索引为3的位置的位置
57、,因此,在打印目的数组的元素时,程序首先打印的是数组,因此,在打印目的数组的元素时,程序首先打印的是数组toArray的前三的前三个元素个元素201、202、203,然后打印的是从,然后打印的是从fromArray中拷贝的四个元素。中拷贝的四个元素。常用类一: System类 与Runtime类让IT教学更简单,让IT学习更有效 2、 Runtime类类 Runtime类用于表示虚拟机运转时的形状,它用于封装类用于表示虚拟机运转时的形状,它用于封装JVM虚拟机进程。每次运用虚拟机进程。每次运用java命令启动虚拟机都对应一命令启动虚拟机都对应一个个Runtime实例,并且只需一个实例,因此该类
58、采用单例实例,并且只需一个实例,因此该类采用单例方式进展设计,对象不可以直接实例化。假想象在程序中方式进展设计,对象不可以直接实例化。假想象在程序中获得一个获得一个Runtime实例,只能经过以下方式:实例,只能经过以下方式: 由于由于Runtime类封装了虚拟机进程,因此,在程序中通常类封装了虚拟机进程,因此,在程序中通常会经过该类的实例对象来获取当前虚拟机的相关信息。会经过该类的实例对象来获取当前虚拟机的相关信息。常用类一: System类 与Runtime类让IT教学更简单,让IT学习更有效 2、Runtime类类 例程例程6-12中,经过中,经过“Runtime.getRuntime(
59、)方式创建了一个方式创建了一个Runtime的实的实例对象,并分别调用该对象的例对象,并分别调用该对象的availableProcessors()方法、方法、freeMemory()方方法和法和maxMemory()方法,将当前虚拟机的处置器个数、空闲内存数和可用最方法,将当前虚拟机的处置器个数、空闲内存数和可用最大内存数的信息打印出来。大内存数的信息打印出来。常用类一: System类 与Runtime类让IT教学更简单,让IT学习更有效 2、 Runtime类类 Runtime 类中提供了一个类中提供了一个exec()方法,该方法用于执行一方法,该方法用于执行一个个dos命令,从而实现和在
60、命令行窗口中输入命令,从而实现和在命令行窗口中输入dos命令同命令同样的效果。样的效果。例程例程6-13中,调用了中,调用了Runtime对象的对象的exec()方法,并将系统命令方法,并将系统命令notepad.exe作为参数传送给方法。运转程序会在桌面上翻开一个记事本作为参数传送给方法。运转程序会在桌面上翻开一个记事本常用类一: System类 与Runtime类让IT教学更简单,让IT学习更有效 2、 Runtime类类 接下来经过一个案例来实现翻开的记事本并在接下来经过一个案例来实现翻开的记事本并在3秒后自动秒后自动封锁封锁例程例程6-14中,经过调用中,经过调用Process对象的对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论