JAVA一维数组(一)

数组的存放方式:
在JVM虚拟机上,数组指针在栈上,值在堆上

一维数组初始化定义方式:
建立数组时,写数组里的值就不能给定数组长度,写数组长度就不能给数组初始化,编译器会将数组内容初始化为对应类的初始值;
int []array1=new int[6];
int [] array2=new int []{1,2,3,4,5,6};
int [] array3={1,2,3,4,5,6};

java中两大算法类库:
Arrays:数组的算法类库
Collections:集合的算法类库

array.length 数组长度
Array.fill(array1,100);初始化数组值
比较数组内容是否相等:Arrays.equals(array2,array3);

循环打印数组方式:
foreach
for循环 长度为Arrays.length

Array.toString(array3); 打印数组
Arrays.sort(array3);给数组从小到大排序
Arrays.binarySearch(array2,key);在有序数组中查找值 成功返回下标,失败返回1

函数的重载:
函数名可以相同,参数不同;

int类型的数组大小:
对象头:8字节
长度:4字节
32位JVM按8字节对齐

一维数组的复制方式:

int[] array1=new int[]{12,5,67,547,78};
//数组拷贝方法一:clone方法
int[] array2=array1.clone();
System.out.println(array1 + " " + array2);

//数组拷贝方式二:Arrays.copyof
int[] array3=Arrays.copyOf(array1,array1.length);
System.out.println(array1 + " " + array3); 

//数组的拷贝方式三:System.arraycopy
int[] array4 =new int [array1.length];      System.arraycopy(array1,0,array4,0,array1.length);
System.out.println(array1 + " " + array4);

练习:
1.请把下面数组中的数字56全部删掉,并对数组array5进行缩容,打印最终的数组元素
2.随机0-100之间的整形元素100个放到数组中,请删除数组中所有重复的元素,只保留一个该重复数字即可,打印最终的数组
3.随机0-100之间的整形元素100个放到数组中,请在数组中所有能被5整除的元素前面添加数字0,打印最终的数组

import java.util.Arrays;

public class ArrayTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //1.请把下面数组中的数字56全部删掉,并对数组array5进行缩容,打印最终的数组元素
        int[] array5 = new int[]{12,4,56,7,56,21,56,56,89,62,41,56};

        for(int i=0;i<array5.length;i++){
            if(array5[i] == 56){
                System.arraycopy(array5,i+1,array5,i,array5.length-i-1);
                i--;
                array5=Arrays.copyOf(array5,array5.length-1);

            }
        }   
        System.out.println(Arrays.toString(array5));

        //2.随机0-100之间的整形元素100个放到数组中,请删除数组中所有重复的元素,只保留一个该重复数字即可,打印最终的数组
        int[] array1 = new int [100];
        for(int i=0;i<array1.length;i++){
            array1[i]=(int) (Math.random()*100);
        }
        System.out.println(Arrays.toString(array1));
        for(int i=0;i<array1.length-1;i++){
            for(int j=i+1;j<array1.length;j++){
                if(array1[i]==array1[j])
                {
        System.arraycopy(array1,j+1,array1,j,array1.length-j-1);
                    j--;
                    array1=Arrays.copyOf(array1,array1.length-1);
                }
            }
        }
        for(int j=0;j<array1.length;j++){
            System.out.printf("array1[%d]=%d",j,array1[j]);
            System.out.println();
        }
        //3.随机0-100之间的整形元素100个放到数组中,请在数组中所有能被5整除的元素前面添加数字0,打印最终的数组
        int[] array2 = new int [100];
        for(int i=0;i<array2.length;i++){
            array2[i]=(int) (Math.random()*100);
        }
        System.out.println(Arrays.toString(array2));

        for(int i=0;i<array2.length;i++){
            if(array2[i]%5 == 0){
                array2=Arrays.copyOf(array2,array2.length+1);
                System.arraycopy(array2,i,array2,i+1,array2.length-i-1);
                array2[i]=0; 
                i++;

            }
        }
        System.out.println(Arrays.toString(array2));

    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值