Java数组与字符串

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2
数组对象存储示意图
length:n 元素0 元素1 元素2 元素n-1
数组对象中元素的个数
n个相应类型的数组元素
3
数组变量
数组是一种对象,和其他对象一样,一般通 过引用变量来访问。 引用数组对象的变量叫做数组变量。
4
数组变量的声明
语法格式: 语法格式: 类型 [] <数组名>; 或 类型 <数组名> []; 例如: int [ ] ages; char status[]; Shirt [] myShirts; 在声明数组变量时, 在声明数组变量时 , 不能直接指出数组中元素的个数 即数组长度) (即数组长度)。 int ages[10];//错误 错误 数组变量是引用变量,声明之后其值为null,即没有引 数组变量是引用变量,声明之后其值为 , 用任何对象。 用任何对象。 如果试图在声明后直接用数组变量访问数组元素, 如果试图在声明后直接用数组变量访问数组元素,编译 器将要提示如下出错信息: 器将要提示如下出错信息: Variable list may not have been initialized.
例:数组作为方法的返回结果
1. public class returnArray{ 2. static int[ ] f(int[] arrays){ 3. for(int i=0;i<arrays.length;i++){ 4. arrays[i]=i; 5. } 6. return arrays; 7. } 8. public static void main(String []args){ 9. int [ ]hold={9,8,7,3,5,6,4,2,1,0}; 10. hold=f(hold); 11. for(int i=0;i<hold.length;i++){ 12. System.out.println("hold["+i+"]="+hold[i]); 13. } 14. } 15.}
19
数组用作参数和返回值
数组可以作为参数传递给方法,也可以作 为方法的返回值
20
例:分析下面程序的运行结果
1. public class callArray{ 2. static void f (int x){ 3. x=10; 4. } 5. static void fArray (int[ ] anArray){ 6. anArray[0]=10; 7. } 8. public static void main(String []args){ 9. int x=0; 10. f(x); 11. System.out.println(“x=“x); 12. int [] array={0,1}; 13. fArray(array); 14. for(int i=0;i<array.length;i++){ 15. System.out.print(array[i]+“, "); 16. } 17. } 18. }
7
创建数组对象(方式二:直接初始化)
语法格式: 语法格式: 数组变量名>={逗号分隔的值列表 逗号分隔的值列表}; 类型 [] <数组变量名 数组变量名 逗号分隔的值列表 例如: 例如: int [] ages={19, 42,62,33,45}; 以下写法是错误的: 以下写法是错误的: int [] ages; ages={19, 42,62,33,45}; //error 数组直接初始化可由花括号“ 数组直接初始化可由花括号“{}”括起的一串由逗号分 括起的一串由逗号分 隔的表达式组成,逗号(,)分隔各数组元素的值。 (,)分隔各数组元素的值 隔的表达式组成,逗号(,)分隔各数组元素的值。在 语句中不必明确指明数组的长度, 语句中不必明确指明数组的长度,因为它已经体现在所 给出的数据元素个数之中了, 给出的数据元素个数之中了,系统会自动根据所给的元 素个数为数组分配一定的内存空间,如上例中数组a的 素个数为数组分配一定的内存空间,如上例中数组 的 长度自动设置为5。应该注意的是, 长度自动设置为 。应该注意的是,“{}”里的每一个数 里的每一个数 组元素的数据类型必须是相同的。 组元素的数据类型必须是相同的。
13
例:数组元素的赋值与输出
1. class Array1{ Array1 2. public static void main(String[ ] args){ 3. int list[ ]=new int[5]; int[5 4. System.out. System.out.println("list 数 组 的 长 度 为 : "+list.length); "+list.length); 5. for(int i=0;i<list.length;i++){ i=0 i<list.length; 6. list[i]=i*5 list[i]=i*5; 7. System.out.println("list["+i+"]="+list[i]); System.out.println("list["+i+"]="+list[i]); 运行结果: 运行结果: 8. } list数组的长度为:5 数组的长度为: 数组的长度为 9. } list[0]=0 10. }
5
创建数组对象(方式一:new)
<数组变量名> = new 类型 [<元素个数>]; status = new char[20]; ages = new int[5]; myShirts= new Shirt [3]; 声明、实例化、引用赋值用一条wk.baidu.com句实现: 类型 [] <数组变量名> = new 类型 [<元素个数>]; char [] status=new char[20]; int [] ages=new int[5]; Shirt [] myShirts=new Shirt[3];
6
数组元素的初始值
关键字为一个数组对象分配内存空间后, 用new关键字为一个数组对象分配内存空间后, 关键字为一个数组对象分配内存空间后 系统将为每个数组元素都赋予一个初值, 系统将为每个数组元素都赋予一个初值,这个初 值取决于数组的类型。 值取决于数组的类型。所有 数值型数组元素的初 值为 0 , 字符型 数组元素的初值为一个 不可见的 ISO控制符( \u0000’) ISO 控制符(’ \u0000’ ) , 布尔型 数组元素的 控制符 初值为false,字符串数组和所有其他对象数组在 创建时元素的初值为null。 在实际应用中, 在实际应用中,用户应根据具体情况来对数组元 素重新进行赋值。数组一旦创建之后, 素重新进行赋值。 数组一旦创建之后 ,就不能再 改变其长度。 改变其长度。
12
访问数组中的元素
数组中的元素相当于普通变量, 数组中的元素相当于普通变量,可以通 过数组变量和下标来访问。 过数组变量和下标来访问。而且无论元素 在数组中的位置如何、 在数组中的位置如何、或以何种次序排列 都不会产生额外的性能消耗。 都不会产生额外的性能消耗。
格式:数组名[下标 格式:数组名 下标] 下标 例如: 例如: ages[1]=19; shirts[2].size=‘L’; int i=ages[3];
9
语句执行情况分析
int age=new int[3]; age int []ages={19, 42,62}; ages
Length:3 age[0] 0 age[1] 0 age[2] 0
ages[0] ages[1] ages[2]
Length:3 19 42 62
10
语句执行情况分析
shirts=new Shirt[3]; Shirt [] shirts; shirts null shirts
list[1]=5 list[2]=10 list[3]=15 list[4]=20
14
数组边界
试图访问实际不存在的数组元素将产生错 误,系统将显示如下出错信息:
java.lang.ArrayIndexOutOfBoundException at …
越界错误只在运行时出现,编程时要小心!
15
确定数组长度
17
数组的复制
使用System.arraycopy方法,可以复制数 组。 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
18
数组的复制举例
int []elements={1,2,3,4,5,6}; int []hold={10,9,8,7,6,5,4,3,2,1}; System.arraycopy(elements,0,hold,0,elements.len gth); 这样hold数组有如下内容;1,2,3,4,5,6,4,3,2,1
Length:3 shirts[0] null shirts[1] null shirts[2] null
11
这个难一点的答案由你来给出:
Shirt [] myShirt={new Shirt((“雅戈尔”,’L’), new Shirt(“雅戈尔”,’L’), new Shirt(“杉杉”,’M’) };
可以在运行时使用length成员变量来确定数 组长度 格式:<数组名>.length 遍历整个数组的一般写法: for(int i=0;i<数组名.length;i++) {
对数组元素进行处理;
}
16
“调整数组大小”
数组对象一旦创建后,不能调整大小! 可使用同一个数组变量来引用一个全新的 数组。如: int []a = new int[6]; a = new int[10]; 这样第一个数组将被丢失,除非对它的引 用被保留在其它地方。
第八讲 数组与字符串
数组、一维数组、多维数组 字符串与字符串类String 字符串缓冲区类StringBuffer
1
数组
数组是相同类型的数据元素按顺序组成的一种复合数据 类型,元素在数组中的相对位置由下标来指明。 类型 , 元素在数组中的相对位置由下标来指明 。 数组中 的每个元素通过数组名加数组下标进行引用。 的每个元素通过数组名加数组下标进行引用。 数组作为一种特殊的数据类型具有以下特点: 数组作为一种特殊的数据类型具有以下特点: 可以是任何类型) 数组中所有的元素是同一类型(可以是任何类型) ; 数组中的元素是有顺序的; 数组中的元素是有顺序的; 数组中的一个元素通过数组名和数组下标来确定。 数组中的一个元素通过数组名和数组下标来确定。 Java中数组的下标从 开始。 中数组的下标从0开始 中数组的下标从 开始。 数组有一维数组和多维数组之分。 数组有一维数组和多维数组之分。 数组是一种对象 对象。 数组是一种对象。
21
例:分析下面程序的运行结果
1. 2. 3. 4. 5. 6. 7. 8. public class callArray{ static void f (int x){ x=10; } static void fArray (int[ ] anArray){ anArray[0]=10; } public static void main(String []args){ int x=0; f(x); System.out.println(“x=“x); int [] array={0,1}; fArray(array); for(int i=0;i<array.length;i++){ System.out.print(array[i]+" "); }
9. 10. 11. 12. 13. 14. 15. 16. 17. } 18. }
运行时, 数组的内容如下: 运行时,hold数组的内容如下 x=0 数组的内容如下 10, 1
数组变量是引用变 量,作为参数传递时 是传值(对数组对象 的引用),所以被调 方法中的参数数组变 量和实际参数的数组 变量引用的是同一个 数组对象。因此,如 果在方法中修改了任 何一个数组元素,则 作为实际参数的数组 变量引用的数组对象 也将发生改变。 22
8
分析以下语句执行后变量和对象的创建情况 int [] age=new int[3]; int [] ages={19, 42,62}; Shirt [] shirts; shirts=new Shirt[3]; Shirt [] myShirt={new Shirt(), new Shirt(“雅戈尔”,’L’), new Shirt(“杉杉”,’M’) };
相关文档
最新文档