Java数组

1.数组的特点

数组:数组是相同类型数据的有序集合。

数组的四个特点:

1.数组的长度是确定的。数组一旦被创建,它的大小是不可以改变的。

2.数组中元素必须是相同类型。比如一个int类型数组只能放int类型的元素。

3.数组的类型可以是任何数据类型,包括基本类型和引用类型。

4.数组变量属引用类型,数组本身就是对象,数组中的每个元素相当于该对象的成员变量。Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

2.数组的声明,创建和初始化

1.一维数组的声明:(两种)

数组类型[]   数组名;

数组类型    数组名[];

注:

 1.    声明一个数组的时候数组并没有被真正的创建,只有在实例化数组对象时数组才被创建,JVM才分配空间,这时才与长度有关。因此,声明数组时不能指定其长度,例如: int a[4]; //非法


比如:int[] s;

声明数组内存分析:声明数组时,只在栈内存中声明了一个引用类型(数组)变量s,堆内存中没有开辟空间。



二维数组的声明:

数组类型   [][] 数组名;

数组类型   数组 [][];

2. 创建数组:(创建数组时,必须指定长度。

基本类型数组创建

public class Test{

         public static void main(String args[]){

       int[] s;   // 声明数组

       s = new int[3];  //创建数组(声明,创建可一步完成 int[] s= new int[5])

       for ( int i=0; i<3; i++ ) {

                      s[i] =2*i;

         System.out.println(s[i]);

       }  

           }

    }

创建数组内存分析:创建数组时,在堆内存中开辟3个长度(指定长度)的空间,把第一个元素的地址赋值给s,并对数组元素进行默认初始化。


引用类型数组创建

class Man{

    private int age;

    private String name ;

public Man(String name,int age) {

    super();

     this.name= name;

     this.age= age;

}

}


public class Test {

public static void main(String[] args) {

Man[] man; //声明  

man = new Man[3];//创建数组  

Man m1 = new Man(张三,11);

Man m2 = new Man(李四,22);  

man[0]=m1;

man[1]=m2;  

}

}

创建数组时内存分析:


数组赋值后内存分析:


3.数组初始化(三种)

1.静态初始化

基本类型数组

in[] a = {1,2,3};

引用类型数组

Man[] mans = {

new Man(张三,11),

new Man(李四,22)

};

2.动态初始化

int[] a = new int[3];

a[0]=1;

a[1]=2;

a[2]=3;

3.数组的默认初始化:

数组创建后,JVM会给该数组分配空间,并对数组的每一个元素默认初始化。

不同类型的默认初始值


数组的界限

1.数组中的元素通过数组下标进行访问,数组下标从0开始。下标的合法区间:[0, length-1]

2.数组的长度为length(元素个数)

4.Arrays类及其常用方法

JDK中提供了一个专门用于操作数组的工具类, 即Arrays类,位于java.util包中 。该类提供了一系列方法来操作数 组,
Arrays类常用方法
equals(array1,array2)方法:比较两个数组是否相等,返回值类型为Boolean型

fill(array,val)方法:把数组中的每一个元素的值用val替换。

BinarySearch(array,val)找到元素在数组中的下标。返回值类型为int

toString(array)把数组转换成字符串进行输出。返回值类型为String

copyof(array,newlength)把一个数组中的元素复制到一个新数组中,新数组的长度为newlength。

sort(array)方法把数组中的元素按升序排序。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值