java中的数组

数组

数据是一个固定长度,包含相同类型数据集合

一维数组

声明数组的方式

//数组的大小长度是固定的若只定义int[] a={};
//数组a的默认长度为零,不能再给它赋值了,否则会出现数组越界!!!
//声明数组
int[] a;
//分配空间:一块连续的空间
a = new int[10];

int[] a = new int[10];

初始化数组的方式

//未初始化的数组默认值为0
//一维数组初始化的两种方式
//1.静态初始化
int[] a = {1,2,3,4,5};
int[] a = new int[]{1,2,3,4,5};
//int[] a = {1}; 和  int[] a = new int[]{1}; 是等价的。
//2.动态初始化
int[] a = new int[5];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
//静态与动态初始化的区别就在于,前者是声明的时候就初始化,后者是先声明,再动态初始化。

for循环和增强型for循环

//for循环
for(;;;){

}
 //增强型for循环--增强型for循环只能用来取值,却不能用来修改数组里的值
for(数据类型 变量名:数组){
	循环体
	}

数组的复制

将一个数组的值复制到另一个数组中去

//System.arraycopy(src, srcPos, dest, destPos, length)
//src-源数组  srcPos-从源数组开始复制的起始位置  dest-目标数组
//destPos-复制到目标数组的起始位置 length-要复制的长度
System.arraycopy(src, srcPos, dest, destPos, length)

多维数组

//这是一个二维数组,里面的每一个元素,都是一个一维数组,一个一维数组就是一列。
//所以二维数组又叫数组的数组 
int[][] a = new int[][]{{1,2,3},{2,3,4},{3,4,5}};
//有两个一维数组,每个一维数组的长度是3
int[][] a = new int[2][3]; 
 //只分配了二维数组
int[][] b = new int[2][]; //有两个一维数组,每个一维数组的长度暂未分配
b[0]  =new int[3]; //必须事先分配长度,才可以访问
b[0][2] = 5;

数组Arrays工具类

//copyOfRange(原数组,开始位置,结束位置)--数组的复制
//copy的结束位置的数组是取不到的。
copyOfRange(int[] original,int from,int to);
int[] b = Arrays.copyOfRange(a,0,3);

//转换为字符串--toString()
String str = Array.toString(a);

//排序--sort()
Arrays.sort(a);

//搜索元素的下标--binarySearch()
//使用binarySearch之前必须使用sort进行排序
//如果数组中有多个相同的值查询结果是不确定的
Arrays.binarySearch(a,元素);

//填充--fill()
Arrays.fill(a,5);//将数组填充为5

**//判断生否相等--equals()
Arrays.equals(a,b);**

==和equals的区别

== 是比较运算符,比较的是两个变量的内存地址。
equals 是object提供的一个方法,默认返回的是两个对象==比较的结果,但是equals方法是可以被重写的,在使用的时候要看equals有没有被重写。

  • 赋值方式中如果调用了new关键字,一定会在内存中给你分配一个新的地址
  • 给Integer类型赋值的时候,如果没有调用new关键字,并且值在-128与-+127之间,包括-128和+127,那么指向的都是同一个内存位置.
  • Integer类中重写了equals()方法,使用equals()方法进行比较的时候,实际上比较的内存中最终指向的值的内存位置,不是直接比较变量的内存位置.
    例如Integer重写了equals方法,比较的是值
   public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

equals()用于两个引用数据类型的两个值要比较是否相同,使用equals()不会出问题,使用==可能会出问题

public static void main(String[] args) {
		Integer B1 = 5;
		int b=5;
		Integer B2 = new Integer(5);
		System.out.println(b==B1);//true
		System.out.println(b==B2);//true
		System.out.println(B1==B2);//false
		
	}

首先,基本类型和引用类型不能比较,但是这里有一个特殊情况就是发生了自动拆箱,引用类型的Integer变成了int,然后就相等了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值