Java数组总结

Java数组总结

本人正在学习Java语法,技术力尚小,且本文为对书的个人理解,如有错误欢迎各位在评论区指正。

1.数组的声明与创建

1.1一维数组的声明与创建
//声明数组
int a[];
int[] a;
//创建数组并分配内存
a = new a[10];
//声明的同时并创建数组
int b[] = new int[10];

1.new关键字用于进行内存分配
2.整型数组中各元素初始值为0

1.2初始化数组

初始化数组有两种方式

int a[] = new int[]{1,2,3,4};
int b[] = {1,2,3,4};
1.3二维数组的内存分配

二维数组的内存分配有两种方式

//创建方式一
a = new int[2][4];
//创建方式二
b = new int[2];
b[0] = new int[2];
b[1] = new int[3];

两者的区别:
1.前者为同时为每一维分配内存空间,后者为先指定最左边的内容,再以此为每一维分配内存空间。
2.前者创建数组数为积,后者为和。

1.4二维数组的初始化
//初始化赋值
int a[][] = {{0,1},{2,3}};
//直接赋值
a[1][1] = 10;

2.数组的基本操作

2.1遍历数组
//以二维数组为例
public static void main(String[] args){
    int b[][] = new int[][]{{1},{2,3},{4,5,6}};
    for(int x[] : b){
        for(int e : x){
            System.out.print(e);
        }
        System.out.println();
    }
}
2.2替换数组元素

方法名:fill()
重载数:2

//替换数组元素
fill(int[] a,int fromIndex,int toIndex,int value)
//示例代码
int a[] = new int[]{1,2,3,0};
Arrays.fill(a,1,2,4);        //a数组变为{1,4,4,0}

注1.起止位置的关系为[fromIndex,toIndex)
注2.使用fill()方法需要引入java.util.Arrays库

2.3数组排序

方法名:sort()

//对数组升序排序
//代码略

注1:数据数据类型可以为任意类型
注2:排序顺序为unicode值

2.4复制数组

方法名1:copyOf()
方法名2:copyOfRange()

//复制数组至指定长度
copyOf(arr,int newlength)
//示例代码
int arr[] = new int[]{23,42,12};
int newarr[] = Arrays.copyOf(arr, 5);

注:newlength为复制后新数组的长度。如果newlength大于arr.length()整型数组用0填充,char型数组则使用null来填充,否则截取到newlength位置

//复制指定数组的指定长度
copyOfRange(arr,int fromIndex,int inIndex)
//示例代码
int arr[] = new int[]{23,42,12};
int newarr[] = Arrays.copyOfRange(arr, 0, 3);

注:[fromIndex, inIndex)

2.5数组查询

方法名:binarySearch()

//返回搜索元素的索引值
binarySearch(Object[] a, fromIndex, toIndex, Object key)
//示例代码
int arr[] = new int[]{4, 25, 10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr, 0, 1, 8);

注1:fromIndex,toIndex可省略,取值为[fromIndex, toIndex)
注2:该方法实现算法为二分法,故在使用前需要先使用sort()方法排序
注3:如果指定范围内不存在搜索元素,则返回值为-(low+1),其中low是假设存在的下标

2.6数组排序算法

1.冒泡排序

public class BubbleSort{
    public static void main(String[] args){
        int[] array = new int[]{63, 4, 24, 1, 3, 15};
        for(int i = 0; i < array.length; i++){
            for(int j = 0; j < array.length - i; j++){
                if(array[j] > array[j+1]){
                    int temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
    }
}

2.选择排序

public class BubbleSort{
    public static void main(String[] args){
        int[] array = new int[]{63, 4, 24, 1, 3, 15};
        int index;
        for(int i = 0; i < array.length; i++){
        index = 0;
            for(int j = 0; j < array.length - i; j++){
                if(array[j] > array[index]){
                    index = i;
                }
            }
            int temp = array[array.length - i];
            array[array.length - i] = array[index];
            array[index] = temp;
        }
    }
}

3.反转排序
算法思想:第一个与最后一个元素互换

public class BubbleSort{
    public static void main(String[] args){
        int[] array = new int[]{63, 4, 24, 1, 3, 15};
        int temp;
        for(int i = 0; i < array.length/2; i++){
            temp = array[i];
            array[i] = array[array.length -1 -i];
            array[array.length -1 -i] = temp;
        }
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值