java数组的概念和作用

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

1 数组的概念
和其他语言一样,Java也提供数组支持,数组是属于引用类型,即数组是一个
对象。

强调数组的类型是引用类型。

数组的基本概念及作用
数组是相同数据类型元素的集合
数组本身是引用数据类型,即对象。

但是数组可以存储基本数据类型,也可以存储引用数据类型。

数组的举例
int [] a = new int []{1,2,3,4,5};
String [] s = new String []{"小熊","小小熊","小小小熊"}; Employee [] e=new Employee[10];(Employee是自定义类)
2 数组的声明
数组的声明的两种方式:
数据类型 [] 数组名字例如:int [] a;
数据类型数组的名字 [] 例如: int a [];
注意:
在Java语言中两种声明方法没有任何区别,但是建议大家用第一种,避免混淆a的数据类型。

数组在声明后还只是一个空指针,不能使用,要想使用必须创建。

数组创建的三种方式:
•//声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值
char[] chAry = new char[10];
•//声明数组并分配内存,同时将其初始化
•int[] ary1 = new int[]{1, 2, 3, 4, 5};
•//与前一种方式相同,仅仅只是语法相对简略
•int[] ary2 = {1, 2, 3, 4, 5};
从另一个角度,数组创建可以分为动态和静态两种
动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
char[] chAry = new char[10];
静态创建数组,在创建的时候,即为每个元素赋初值
int[] ary1 = new int[]{1, 2, 3, 4, 5};
数组的长度
数组的长度:length属性
int [] b1 = new int []{1,2,3,4,5,6,7};
System.out.println(b1.length);
注意:数组的长度是属性,String的长度是length();
创建数组的时候必须指定数组的长度,而且一经定义则不允许改变。

数组的长度虽然是7,但是在内存中实际给8个位置,另外一个存储7.
数组之间赋值
在C语言中,不可以将数组直接赋值给另一个数组;
在Java中,语法上允许这样做,但实际得到的效果是两个数组引用指向同一块内存。

int[] ary1 = {2, 4, 6, 8, 10};
int[] ary2;
ary2 = ary1; //允许这样赋值
数组赋值示例
public class ArrayDemo {
public static void main(String[] args) {
int[] ary1 = {2, 4, 6, 8, 10}; //声明并初始化数组1
int[] ary2; //声明数组2
ary2 = ary1; //将数组1赋值给数组2
ary2[3] = 1024; //通过数组2修改其中一个元素的值
//打印出数组1中的元素
System.out.println("数组1中的元素:");
for (int i = 0; i < ary1.length; i++) {
System.out.println(ary1[i]);
}
//打印出数组2中的元素
System.out.println("数组2中的元素:"); for (int i = 0; i < ary2.length; i++) {
System.out.println(ary2[i]);
}
}
}
3 数组的访问
数组元素的访问:
数组名字[索引] 例如:a[2];
注意:
数组的索引从0开始。

索引的数据类型是整型
索引最大值和数组长度始终差1 数组的迭代
数组迭代的两种方式:
第一种:for循环
int [] b1 = new int []{1,2,3,4,5,6,7};
System.out.println(b1[0]);
System.out.println(b1[2]);
//数组的迭代
for(int i =0;i<b1.length;i++){
System.out.println(b1[i]);
}
第二种:增强for循环
int [] b1 = new int []{1,2,3,4,5,6,7};
//增强for循环
for(数组元素的类型临时变量名字:数组的名字){ System.out.println(临时变量名字 );
}
即:
for(int x:b1){
System.out.println(x);
}
注意:
两种方式的迭代都可以,第二种在企业项目开发中较为常用增强for循环是JDK5之后增加的新特性。

多维数组的定义
二维数组的定义:
多维数组即数组的数组,即数组的元素也是数组
例如:
int [][]a = {{1},{1,2},{1,2,3}};
二维数组的声明:
三种方式:
int [][] a;
int []a1[];
int a2[][];
注意:建议用第一种,不容易混淆a的数据类型
int [][] a = new int [2][];
a[0] = {1,2,3};
a[1] = {4,5,6};
多维数组的迭代:
int [][] b1 = new int [][]{{1,2},{3,4}};
for(int i =0;i<b1.length;i++){
for(int j =0;j<b1[i].length;j++){
System.out.print(b1[i][j]);
}
}
数组的拷贝
在JDK API的System类中,提供了一个数组拷贝的静态方法:
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
int[] a={10,100,1000};
int[] b={20,200,2000,20000};
System.arraycopy(a, 1, b, 2, 2);
for(int x:b){
System.out.println(x);
}
输出结果
20 200 100 1000
值传递的定义
值传递的本质是赋值,是把实际参数赋值给形式参数的过程
基本数据类型是值之间进行赋值
引用数据类型虚拟地址之间进行赋值
基本数据类型:传递的是值(value)的拷贝
package com.etc.chapter03;
public class TestPass {
public void add(int x){
x++;
System.out.println("add()方法:x="+x);
}
public static void main(String[] args) {
TestPass pass=new TestPass();
int x=100;
pass.add(x);
System.out.println("main()方法:x="+x); } }
用类型:传递的是引用(reference)
public class TestByReference {
public void test(PersonalAccount a){
a.deposit(2000);
System.out.println("test 方法中a的余额="+a.getBalance()); }
public static void main(String[] args) {
PersonalAccount a=new PersonalAccount("3333","123",1900); TestByReference t=new TestByReference();
t.test(a);
System.out.println("main 方法中a的余额="+a.getBalance()); }
}
基本数据类型在传递过程中形参改变实参不改变
引用类型在传递过程中形参改变实参也改变。

虽然String 、包装器类本身是引用数据类型,但是按基本数据类型的规则传递。

相关文档
最新文档