标题1.数组的相关概念
1.数组指的是一系列相关变量的集合,然后用统一的方式来控制这些变量。
2数组的初始化方式:
(1).数组的初始化方式分为两类:一类是数组的动态初始化,一类是数组的静态初始化.前者初始化时,开辟了固定的数组长度,而后者在数组初始化时就定义了数组.例如:
数组的动态初始化:
int[] x=new int[3];
x[0]=1;
x[1]=2;
x[3]=3;
数组的静态初始化:
int[] x=new int[]{1,2,3,4,5,6,7,8};
3.数组的引用传递:
数组的实例化可以分布实例,如
int[] x=new int[3];等价于int []x=null;
x=new int[3];
每当new一个数组,就开辟了一个新的空间,其中分为栈内存和堆内存,其中栈内存只能保存一个堆内存地址,但是同一个堆内存可以被不同的栈内存所指向;
//同时声明两个对象
int []x=null;int []tmp=null;
x=new int[2];
x[0]=1,x[1]=2;
tmp=x;//此时数组作为引用类型,发生了引用传递;当改变其中一个堆内存属性时,另一个数组的属性值也改变。
tmp[0]=12;
//此时x[0]=12;
3.匿名数组:和数组的静态初始化有相同部分,无非是直接开辟了一个新的内存空间并且定义了数组 new int[]{1,2,3,4,5,6};
4.数组和方法的互操作:
数组可以与方法之间相互运用,在一个类中创建若干的方法,然后再创建一个数组的主方法,再通过这个主方法调用其它的方法,如数组的定义方法,数组的返回,数组的赋值等方法.
5.java对数组的支持:
可以通过引入java的类库来支持对数组的各种操作,如java.util.Arrays.sort(arrayName);
此函数实现了类库中的数组排序功能,可以直接调用此函数来进行对数组的排序.
6数组的拷贝:
数组的拷贝有四种方式,分别为:(1).System.arraycopy(数组源名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度)
(2).java.util.Arrays.copyof(源数组名称,新数组长度)
(3).native System.arraycopy()和第一种相同,但速度是最快的,属于底层代码C/C++.
(4).for clone()再循环里面。
public class ArrayDemo{
public static void main(String[] args){
int[] dataA=new int[]{1,2,3,4,5,6,7,8};
int[] dataB=new int[]{,22,33,44,55,66,77,88};
System.arraycopy(dataB,4,dataA,1,3);
printArray(dataA);
}
public static void printArray(int[] tmp){
for(int i=0;i<tmp.length;i++){
System.out.printf(tmp[i]);
}
System.out.println();
}
}
这四种拷贝方式对于引用来说都是浅拷贝,拷贝一次都会改变其数值,如同数组引用的传递,一般都是深拷贝.
7.数组的动态初始化和静态初始化:
(1)数组的动态初始化:形式 :类名称[] 数组的初始化对象=new 类名称[长度];
class Person(){
private String naime;
private int age;
public persom(String naime,int age){
this.name=name;
this.age=age;
}
public void getInfo(){
System.out.println(“姓名:”+name+"年龄:"+age);
}
}
pubic class Test{
public static void mian(String[] args){
Person per=new Person();//数组的动态初始化;
per[0]=new Person("张三",1);
per[1]=new Person("王四",2);
per[2]=new Person("李四",3);
for(int i=0;i<per.length;i++){
per[i].length.getInfo();
}
}
}
(2)数组的静态初始化:形式: 类名称[] 初始化数组名=new 类名称[] {值…}
class Person(){
private String naime;
private int age;
public persom(String naime,int age){
this.name=name;
this.age=age;
}
public void getInfo(){
System.out.println(“姓名:”+name+"年龄:"+age);
}
}
pubic class Test{
public static void mian(String[] args){
Person[] per=new Person[]{
new Person("张三"1),
new Person("李四",2),
new Person("王五",5)
}
for(int i=0;i<per.length;i++){
per[i].length.getInfo();
}
}