【Java学习记录】二 Java中数组的简单操作

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

在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。

数组的基本使用


public class TestArry {

	public static void main(String[] args) {
		//创建一个数组
		int[] arry1 = new int[3];
		//获取数组长度
		int length1 = arry1.length;
		System.out.println("arry1的长度: "+length1);
		//访问数组中的元素:数组名[下标]  注意:下标从0开始,最大取到长度减一
		int element0 = arry1[0];
		System.out.println("第0个元素:"+element0);
		//为数组中的元素赋值
		arry1[0]= 99;
		System.out.println("第0个元素:"+arry1[0]);
		arry1[1]=98;
		arry1[2]=97;
		//遍历数组
		for(int i=0; i<length1 ;i++) {
			System.out.println("arry1 中的第"+i+"个元素为"+arry1[i]);
		}
		
		//创建数组的同时给数组赋值
		int[] arry2 = new int[] {4,5,8,2,3};
		//获取数组长度
		int length2 = arry2.length;
		System.out.println("arry2的长度':"+length2);

	}

}

运行结果:

arry1的长度: 3
第0个元素:0
第0个元素:99
arry1 中的第0个元素为99
arry1 中的第1个元素为98
arry1 中的第2个元素为97
arry2的长度':5 

插入一个新的元素到数组的最后

import java.util.Arrays;

public class TsetOpArry {

	public static void main(String[] args) {
		//解决数组的长度不可变问题
		int[] arry = new int [] {9 , 8 ,7};
		//快速查看数组中的元素
		System.out.println(Arrays.toString(arry));
		//要加入的元素
		int dst = 6 ;
		
		//创建一个新数组,长度是原数组长度+1
		int[] NewArry = new int [arry.length+1];
		
		//把原数组的数据全部复制到新数组的中
		for(int i=0 ;i<arry.length; i++) {
			NewArry[i]=arry[i];
		}
		
		//把目标元素放在新数组的最后
		NewArry[arry.length] = dst;
		
		//新数组替换原数组
		arry = NewArry;	
		System.out.println(Arrays.toString(arry));

	}

}

运行结果:

 [9, 8, 7]
[9, 8, 7, 6]

删除数组中指定位置的元素

import java.util.Arrays;

public class TestOpArry2 {
		//如何删除数组中的元素
	public static void main(String[] args) {
		//创建一个数组
		int[] array2 = new int [] {9,8,7,6,5,4};
		System.out.println(Arrays.toString(array2));
		//要删除元素的下标
		int dst = 3;
		
		//创建一个新的数组,长度是原来长度减一
		int [] Newarray2 = new int [array2.length-1];
		
		//赋值原数组中除了要删除元素以外的其他数组
		for(int i=0;i<Newarray2.length;i++) {
		
			//要删除的元素之前的元素
			if(i<dst) {
				Newarray2[i]= array2[i];
			}else {
				Newarray2[i] = array2[i+1];
			}
							
		}
		//新数组替换原数组
		array2 = Newarray2;
		System.out.println(Arrays.toString(array2));
	}

}

 运行结果:

[9, 8, 7, 6, 5, 4]
[9, 8, 7, 5, 4]

使用面向对象的方法实现上述:

package demo1.util;

import java.util.Arrays;

public class MyArray {
	//用于存储数据的数组
	private int[] elements;
	
	public MyArray() {
		elements = new int[0];
	}
	
	//获取数组长度的方法
	public int size() {
		return elements.length;
	}
	
	//往数组的末尾添加一个元素
	public void add(int element) {
		//创建一个新的
		int[] newarry = new int[elements.length+1];
		//把原数组中的元素复制到新数组中
		for(int i=0;i<elements.length;i++) {
			newarry[i] = elements[i];
		}
		//把添加的元素放在新的数组中
		newarry[elements.length] = element;
		//使用新数组替换旧数组
		elements = newarry;
	}
	
	//打印所有元素
	public void show() {
		System.out.println(Arrays.toString(elements));
	}
	
	//删除数组中的元素
	public void delete(int index) {
		//判断是否下标越界
		if(index<0 ||index>elements.length-1) {
			throw new RuntimeException("下标越界");
		}
			//创建一个新的数组,长度为原数组长度减一
			int [] newarry = new int[elements.length-1];
			for(int i=0;i<newarry.length;i++) {
				
			//要删除的元素之前的元素	
			if(i<index) {
				newarry[i]= elements[i];
			}else { //要删除元素之后元素
				newarry[i] = elements[i+1];
					}	
			}
			//替换
			elements = newarry;		
	}
	
	//获取某个元素
	public int get(int index) {
		return elements[index];
	}
	
	//插入一个元素到指定位置
	public void insert(int index , int element) {
		//创建一个新的数组
		int[] newarray = new int[elements.length+1];
		//将原数组的元素放到新的数组中
		for(int i=0;i<newarray.length-1;i++) {
			if(i<index) {
				newarray[i]=elements[i];
			}else {
				newarray[i+1]=elements[i];
			}
		}
		newarray[index]=element;
		//新数组替换旧数组
		elements=newarray;
	}
	
	
}
import demo1.util.MyArray;

public class TestMyArray {

	public static void main(String[] args) {
		//创建一个可变的数组
		MyArray ma = new MyArray();
		//获取长度
		int size = ma.size();
		ma.show();
		//往可变数组中添加一个元素
		ma.add(99);
		ma.add(98);
		ma.add(97);
		ma.add(96);
		ma.add(95);
		ma.add(94);
		//显示元素
		ma.show();
		//删除某个元素
		ma.delete(1);
		ma.show();
		//取出指定位置的元素
		System.out.println(ma.get(1));
		System.out.println("====================");
		ma.insert(2, 90);
		ma.show();
		
	}
	

}

运行结果:

[]
[99, 98, 97, 96, 95, 94]
[99, 97, 96, 95, 94]
97
====================
[99, 97, 90, 96, 95, 94]

数组的拷贝

System类里也包含了一个static void arraycopy(object src,int srcpos,object dest, int destpos,int length)方法,该方法可以将src数组里的元素值赋给dest数组的元素,其中srcpos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素。

public class Test {
    public static void main(String args[]) {
        String[] s = {"aa","bb","bb","dd","ee"}; 
        String[] sBak = new String[7];
        System.arraycopy(s,0,sBak,1,s.length);
        for (int i = 0; i < sBak.length; i++) {
            System.out.print(sBak[i]+ "\t");
        }
    }
}

输出为:

null aa bb cc dd ee null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程芝士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值