Java编程详细教程-5-数组

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

one two thuree four five six seven eight nine ten
String对象
堆 内 存
数组的默认初始化
数组是引用类型,它的元素相当于类的成员变量, 因此数组分配空间后,其中的每个元素也按照成 员变量的规则被隐式初始化,例如:
public class Test { public static void main(String args[]) { int a[] = new int[5]; String[] str= new String[3]; System.out.println(“a[3]="+a[3]); System.out.println("str[2]="+str[2]); } }
a[i] = 2*i+1; }
简单数据类型数组的定义
定义数组时,系统给数组分配引用空间 如图所示:
栈内存
堆 内 存
int arr[];
简单数据类型数组的创建
创建简单数据类型的数组时,系统会分配合适的空间用来 存放该种数据类型数据的内存空间,并且将这个数组的各 个元素赋一个和数组类型匹配的初值。
int[] a = new int[10]; float b[]=new float[5]; String c[];
c=new String[3]; ……..
数组的初始化
可以采用两种方式为数组进行初始化:
静态初始化 如:int a[]={3,6,9};
动态初始化
int[] a; a = new int[10]; for (int i = 0;i<10;i++){
0 arr[9]
一维数组的应用举例
利用一维数组来进行冒泡排序:
算法: 每次比较两个相邻的数,将较小的放到前面,较大
的放到后面,这样就可以将这些数中的最大的找出来放 到最后,然后比较剩下的数,再在这些数中找出最大的 来,直到所有的数字按照从小到大的顺序排列
用一个一维数组来存放需要进行排序的数字,然后对这 个一维数组进行排序
int a[]={1,2,3,4,5,6,7,8,9,10} int b[]={100,200,300,400,500,600,700,800,900,1000}; System.arraycopy(a,2,b,5,5)
1
100
2
200
3
300
4
400
a
5 6
b
500 600
7
700
8
800
拷贝前
9
900
10
1000
100
200 300
400
500
b百度文库
3
4
5
拷贝后
6 7
小结
数组定义 数组初始化 数组排序 数组拷贝
Arrays. sort()方法
java.util.Arrays类的静态方法sort()可对数组进行排序 例:
public class ArraysSort{ public static void main(String args[]) { int[] a = { 10, 3, 19, 2, 11, 15 }; System.out.println(“排序前:"); for (int i = 0; i < a.length; i++) System.out.print(a[i] + " "); Arrays.sort(a); System.out.println(“\n排序后:"); for (int i = 0; i < a.length; i++) System.out.print(a[i] + " "); }
栈内存 arr = new String[10];
arr
String[]对象
null
null null

null

null null

null null
null null
引用数据类型数组的初始化
在进行引用数据类型数组的初始化的时候,和简单数据类 型数组的初始化有些不同,因为数组本身是引用类型,而 现在数组元素也是引用类型,所以这个时候需要给数组元 素所引用的对象也分配内存空间。
arr[0]=new String(“one”); arr[1]=new String(“two”); …… arr[9]=new String(“ten”);
栈内存
arr
String[]对象
***** ***** ***** ***** ***** ***** ***** ***** ***** *****
arr= new int[10];
栈内存
arr
int[]对象
0
0
0 0

0

0 0

0
0
0
简单数据类型数组的初始化
对于简单数据类型的数组,当对其进行初始化时, 会将对应的值赋给对应的各个数组元素。
for (int i=1;i<=10;i++) { arr[i] = i;
}
栈内存
arr
int[]对象
数组的定义方式有两种:
type[] arr_name; type arr_name[];
在数组定义中,不能指定数组的长度,而需要在 数组的创建阶段来指定
几个例子:
int[] a; float b[]; String c[]; Date[] d;
数组的创建
通过new操作符来创建数组对象,指定数组的大小, 给数组元素的存储分配空间 例:
a[3]=0 str[2]=null
数组元素的引用
访问数组元素 数组名+数组索引 索引从0开始
测定数组大小 length属性
栈内存
arr
int[]对象
0 arr[0]
0 arr[1]
0 0
aarrrr堆[[23]]
0 arr内[4]
0 0
aarrrr存[[56]]
0 arr[7]
0 arr[8]
参数: src - 源数组。 srcPos - 源数组中的起始位置。 dest - 目标数组。 destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
作用:
从指定源数组中复制一个数组,复制从指定的 位置开始,到目标数组的指定位置结束。
数组值的拷贝示例
数组
单击此处编辑副标题样式
目标
掌握数组的声明 掌握数组的初始化 掌握数据的拷贝和排序
数组基本概念
数组是用来存储一组相同数据类型数据的数据结 构
数组的元素可以是简单类型的数据,也可以是引 用类型的数据
无论数组内容是简单类型还是引用类型,数组自 己本身都是一种引用类型
一维数组定义
冒泡排序演示
public class BubbleSort {
static int[] bubleSort(int[] before) {
int temp;
for (int i = 0; i < before.length; i++) {
for (int j = 0; j < before.length - i - 1; j++) {
if (before[j] > before[j + 1]) {
188
temp = before[j + 1];
before[j + 1] = before[j];
1518830
before[j] = temp;
} }
518038
} return before;
215030
}
}
25103
……
}
数组排序
}
排序前: 10 3 19 2 11 15 排序后: 2 3 10 11 15 19
数组拷贝(1)
数组引用的拷贝
int[] a = {1,2, 3, 4,5,6,7,8,9, 10}; int[] b; b=a;
栈内存
b a
1
2
3 4

5 6

7 8

9
10
数组拷贝(2)
数组值的拷贝
System类的静态方法arraycopy()
01
02
03 04

05

06 07

08
09
100
引用数据类型数组的定义
引用类型数组的定义和简单类型数据类型数组的 定义并无二致
String[] arr; 堆 内 存
arr
引用数据类型数组的创建
引用数据类型数组在创建的时候也是首先给数组 元素分配内存空间,然后给这些数组元素一个默 认的初始值null。
相关文档
最新文档