当前位置:文档之家› 第4章 数组与字符串处理

第4章 数组与字符串处理


定义多维数组: 数据类型 数组名[ ][ ]; 数组名[ 数据类型 [ ][ ] 数组名; int xx[ ][ ];
int [ ][ ] xx; xx=new int[3][ ]; xx[0]=new int[3]; xx[1]=new int[2]; xx[0]和xx[1]的长度可以不一样,数组对象中 xx[0]和xx[1]的长度可以不一样,数组对象中 也可以只有一个元素。程序运行到这之后 的内存分配情况如图: 的内存分配情况如图:
4.2.1 String构造函数 String构造函数 (1)String(), 默认构造函数,无参数 String(), String s1 = new String(); (2)String( char chars[]) ,传入字符数组 char[] myChars={‘a’, ‘b’, ‘c’}; myChars={‘ String s2 = new String(myChars) // 使 用字符串“abc”初始化s2 用字符串“abc”初始化s2
有时也能见到下面定义数组的方式: int ia[ ]=new int[ ]{3,4,5}; 注意:在java语言中声明数组时,无论用何 注意:在java语言中声明数组时,无论用何 种方式定义数组,都不能指定其长度,例 如下面的定义将是非法的; int a[5];
4.1.3 使用数组时要注意的问题 必须对数组引用变量赋予一个有效的数组 对象(通过new产生或是用{}静态初始化而 对象(通过new产生或是用{}静态初始化而 产生)后,才可以引用数组中的每个元素。 需要注意:如下代码 int ia[ ]=new int[ ]{1,2,3,4,5};
如果数组对象正好是一个x*y形式的规则矩阵,则 如果数组对象正好是一个x*y形式的规则矩阵,则 不必像上面的程序一样,先产生高维的数组对象 后,再逐一产生低维的数组对象,完全可以用一 句代码在产生高维数组对象的同时,产生所有的 低维数组对象。 int xx[ ][ ]=new int [2][3];
numbers[r] = numbers[n-1]; numbers[nn--; --; 关键在于每次抽取的都是下标,而不是实际的值。 下标指向包含尚未抽取过的数组元素。 在抽取了k个数值之后,就可以对result数组进行排 在抽取了k个数值之后,就可以对result数组进行排 序了,这样使得输出效果更加清晰: Arrays.sort(result); for(int r : result) System.out.println(r);
数组是多个相同类型的数据的组合,实现 对这些数据的统一管理,数组中的每一个 数据也叫数组的一个元素。 数组的定义:数据类型 数组名[ ]; 数组名[ 数组的创建: 数组名=new 数据类型[数组长度] 数组名=new 数据类型[数组长度] 解释下面这句代码的语法: int x[ ]=new int[100];
如果创建了一个100个元素的数组,并且试图访 如果创建了一个100个元素的数组,并且试图访 问元素a[100](或任何在0~99之外的下标), 问元素a[100](或任何在0~99之外的下标), 程序就会引发” 程序就会引发”array index out of bounds”异常而 bounds” 终止执行。 要想获得数组中的元素个数,可以引用 array.length。例如: array.length。例如: for(int i =0; i<a.length; i++) System.out.println(a[i]); 一旦创建了数组,就不能再改变它的大小(当 然,尽管可以改变每一个数组元素)。
4.1.4 多维数组 在java中并没有真正的多维数组,只有数组 java中并没有真正的多维数组,只有数组 的数组。虽然应用上很像C 的数组。虽然应用上很像C中的多维数组, 但还是有区别的。在C 但还是有区别的。在C中定义一个二维数组, 必须是一个x*y二维矩阵块 必须是一个x*y二维矩阵块
Java中多维数组不一定是规则矩阵形式,如: Java中多维数组不一定是规则矩阵形式,如:
“for each”循环 each”
for each循环是一种功能很强的循环结构,可以用 each循环是一种功能很强的循环结构,可以用 来一次处理数组中的每个元素(其他类型的元素 集合亦可)而不必为指定下标值而分心。 这种for循环的语句格式为: 这种for循环的语句格式为: for(variable:collection) statement 定义一个变量用于暂存集合中的每一个元素,并 执行相应的语句。 例如: for(int element : a) System.out.println(element);
第4章 数组与字符串 处理
学习目标: 数组的基本概念 一维和二维(多维)数组的创建与引用 数组的常用操作以及应用举例 String类字符串操作常用方法 String类字符串操作常用方法 命令行参数
4.1 数组
4.1.1 数组的基本概念 问题的引入——了解什么是数组以及数组 问题的引入——了解什么是数组以及数组 的作用。 了解数组前需了解的内存分配的一些背后 知识——栈内存和堆内存。 知识——栈内存和堆内存。
如果希望将一个数组的所有值拷贝到另一个 数组中去,就要使用System类的arraycopy方法。 数组中去,就要使用System类的arraycopy方法。 调用这个方法的语法格式为: System.arraycopy(from, fromIndex, to, toIndex, count); 数组to必须有足够的空间来存放拷贝的元素。 数组to必须有足够的空间来存放拷贝的元素。 int[ ] smallPrimes = {2,3,5,7,11,13}; int[ ] luckyNumbers = {1001,1002,1003,1004,1005,1006,1007}; System.arraycopy(smallPrimes, 2, luckyNumbers, 3, 4); for(int i = 0; i< luckyNumbers.length; i++) System.out.println(i + “:” + luckyNumbers[i]);
因此,也可以将这一行代码分成两行来写: int x[ ];//定义了一个数组x, ];//定义了一个数组x x=new int[100];//数组初始化; int[100];//数组初始化; 内存状态分别如下:
也可以改变x 也可以改变x的值,让它指向另外一个数组 对象,或者不指向任何数组对象。要想让x 对象,或者不指向任何数组对象。要想让x 不指向任何数组对象,只需要将常量null赋 不指向任何数组对象,只需要将常量null赋 值给x。如:x=null;,这条语句执行完后的 值给x。如:x=null;,这条语句执行完后的 内存状态如图:
4.2 Java 字符串处理
Java中将字符串作为String类型对象来处理。 Java中将字符串作为String类型对象来处理。 当创建一个String对象时,被创建的字符串 当创建一个String对象时,被创建的字符串 是不能被改变的。每次需要改变字符串时 都要创建一个新的String对象来保存新的内 都要创建一个新的String对象来保存新的内 容。原始的字符串不变。
在java中,还可以用下面的方式定义数组: java中,还可以用下面的方式定义数组: int [ ] x;//方括号([ ])位于变量名之前 x;//方括号([ ])位于变量名之前 x=new int[100];
4.1.2 数组的静态初始化 可以在定义数组的同时就为数组元素分配空间并 赋值,也就是对数组的静态初始化。 如: int ia[ ]={1,2,3,4}; 等号右边相当于产生了一个数组对象,该数组有4 等号右边相当于产生了一个数组对象,该数组有4 个元素变量,这4个变量的取值分别是整数1 个元素变量,这4个变量的取值分别是整数1、2、 3、4。数组的长度等于右边{}中的元素的个数。 。数组的长度等于右边{}中的元素的个数。
要想选择这样一个随机的数值集合,就要首先将数值1,2,3, 要想选择这样一个随机的数值集合,就要首先将数值1,2,3,…, n存入数组numbers中: 存入数组numbers中 int[ ] numbers = new int[n]; for(int i = 0; i< numbers.length; i++) numbers[i] = i+1; 而用第二个数组存放抽取出来的数值: int[ ] result = new int[k]; 现在,就可以开始抽取k个数值了。Math.random方法将返回一个 现在,就可以开始抽取k个数值了。Math.random方法将返回一个 0~1之间的随机浮点数。用n乘以这个浮点数,就可以得到0~n0~1之间的随机浮点数。用n乘以这个浮点数,就可以得到0~n-1 0~n 之间的一个随机数。 int r = (int)(Math.random()*n); 下面将result的第i个元素设置为numbers[r]存放的数值,最初就是r 下面将result的第i个元素设置为numbers[r]存放的数值,最初就是r 本身。但正如所看到的那样,numbers数值的内容在每一次抽取 本身。但正如所看到的那样,numbers数值的内容在每一次抽取 之后都会发生变化。 result[i] = numbers[r]; 因为所有抽奖的数值不能一样,所以必须确保不会再次抽取到那 个数值。因此,这里使用数组中的最后一个数值改写number[r],并 个数值。因此,这里使用数组中的最后一个数值改写number[r],并 将n减1。
这行代码中定义了一个ia数组,它里面包含了5 这行代码中定义了一个ia数组,它里面包含了5个 元素,分别是: ia[0]=1 ia[1]=2 ia[2]=3 ia[3]=4 ia[4]=5 也就是说数组的第一个元素是ia[0],而不是ia[1],最后 也就是说数组的第一个元素是ia[0],而不是ia[1],最后 一个元素是ia[4],而不是ia[5] 一个元素是ia[4],而不是ia[5]
相关主题