java中数组的相关知识点

标题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();
          }
          }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值