java数组总结

*掌握一/二数组的创建及使用

*如何遍历数组

*如何填充替换数组中的元素

*如何对数组中的元素进行排序

*如何复制数组

*掌握查询数组的方法

为什么要使用数组?

数组能够实现快速寻址(首地址+索引值*存储元素占用的字节数),执行修改和查询的效率高;而缺点是实现插入和删除的效率极低!

一.一二维数组的创建及使用

1.1

一维数组的创建/声明语法格式(两种方法)

*声明数组后,我们并不能直接使用它,因为数组的声明只是表明了数组名字和数组类型

法一:数据类型 数组名字[ ];

int a [ ];

法二:数据类型 [ ] 数组名字;

float [ ] b;

1.2

一维数组的使用语法格式

*要想使用数组,必须为数组分配内存空间,即指明数组长度

数组名字=new 数组元素类型 [数组长度];

a=new int[10];

b=new float[10];

*数组声明的同时并为其分配内存

int a[ ]=new int[10];

float b[ ]=new float[10];

1.3

一维数组的初始化语法格式(两种方法)

*在对数组进行内存分配时,整型数组的初始值为0,字符型为null

int a[ ]=new int[ ]{1,2,3,4};

int a[ ]={1,2,3,4};

两种方法都是创建了包含4个元素的数组

1.4

一维数组的应用

eg:在项目中创建类Demo07,在主方法中创建String类型数组,实现中文星期输出

public class Demo07 {
    public static void main(String[] args) {
        String[] week =new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};//数组的声明同时为其分配内存
        for (int i = 0; i < 7; i++) {
            System.out.println(week[i]);
        }//通过for循环遍历数组中的元素
    }
}

2.1

二维数组的创建/声明语法格式(两种方法)

法一:数据类型 数组名字[ ][ ];

int c[ ][ ];

法二:数据类型  [ ][ ] 数组名字;

float [ ][ ] d;

2.2

二维数组的使用语法格式(两种方法)

法一:c=new int[2][4];

//直接为每个一堆数组分配内存空间

*内存分配图

 法二:d=new float[2][ ];

d[0]=new float[3];

d[1]=new float[4];

//分别为每个一堆数组分配内存空间

*内存分配图

 2.3

二维数组初始化语法格式

int c[ ][ ]={{1,2},{3,4}};

*也可单独给int c[x][y]赋值

*内存分配图

2.4 

二维数组的应用

eg:在项目中创建类Demo07,在主方法中编写代码实现输出两行两列且所有元素都为null的矩阵

public class Demo07 {
    public static void main(String[] args) {
        String s[][]=new String[2][2];
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.print(s[i][j]+"\t");
            }
            System.out.println();
        }
    }
}

二.数组的常用操作

1.1

数组的遍历

1.1.1

for循环遍历

eg:

 public class Demo01
{
    public static void main(String[] args)
    {       
        int[] a={1,2,3,4,5};
        for (int i = 0; i < 5; i++)
        {
            System.out.println("a[i]="+a[i]);
        }
    }
}

1.1.2

增强for循环遍历

eg:

public class Demo02
{
    public static void main(String[] args)
    {
        //2.增强for循环
        int[] arrays = {1, 2, 3, 4, 5};
        for (int array : arrays)
        {
            System.out.print(array);
        }
    }
}

*在遍历数组时,如果指定元素的下标值大于或等于数组长度,则会报出ArrayIndexOutOfBoundsException(数组索引越界异常)异常

1.1.3

toString()方法遍历

eg:

import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        int s[]=new int[]{5,9,2,1};
        Arrays.toString(s);
        System.out.println(Arrays.toString(s));
    }
}

2.1

对数组进行排序

2.1.1

sort()方法升序

通过Arrays类中的静态方法sort()可以实现对任意数据类型数组进行排序,排序以数值默认为升序,英文字符串按照字母顺序升序且大写字母在小写字母前面,中文字符串以字符串的编码进行升序

eg:

import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        int s[]=new int[]{5,9,2,1};
        Arrays.sort(s);
        for (int i = 0; i < 4; i++) {
            System.out.println(s[i]);
        }
    }
}

2.1.2

反转排序

将原有数组顺序转换为倒序

eg:

public class Demo07 {
    public static void main(String[] args) {
        int[] s =new int[]{5,9,2,1};
        for (int i = 0; i < s.length/2; i++) {
            int a=s[i];
            s[i]=s[s.length-i-1];
            s[s.length-i-1]=a;
        }
        for (int i : s) {
            System.out.println(i);
        }
    }
}

3.1

查询数组数据

二分法查找(折半查找):搜索指定数组,以获得指定对象,返回搜索元素的索引值!

语法格式:

binarySearch(数组名字,要搜索的数组元素);

*在进行数据查询之前必须对数组进行排序(sort()方法),否则查询的结果不准确!因为如果数组中含有多个相同搜素值,那么将无法保证找到准确值!

*若key值包含在数组中,则返回该值的索引值;否则返回-1或-(插入点)

eg:key值小于数组中的最小值,返回值为-1

import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        int[] s =new int[]{5,9,2,1};
        Arrays.sort(s);
        int a= Arrays.binarySearch(s,-1);
        System.out.println(a);
    }
}

eg:key值包含在数组中时,返回值为升序排序后的索引值!结果为3

import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        int[] s =new int[]{5,9,2,1};
        Arrays.sort(s);
        int a= Arrays.binarySearch(s,9);
        System.out.println(a);
    }
}

eg:key值小于数组中最大值且大于最小值时,返回值为key值加入数组后它的后一位的索引值!结果为-3

import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        int[] s =new int[]{5,9,2,1};
        Arrays.sort(s);
        int a= Arrays.binarySearch(s,3);
        System.out.println(a);
    }
}

eg:key值大于数组中所有元素时,返回值为数组长度;即s.length

import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        int[] s =new int[]{5,9,2,1};
        Arrays.sort(s);
        int a= Arrays.binarySearch(s,10);
        System.out.println(a);
    }
}

3.2

在指定范围内检索某一元素

语法格式:

binarySearch(数组名字,起始点,结束点,key值);

*指定范围不能大于或等于数组长度,否则会报出ArraysIndexOutOfBoundsException异常

eg:结果为-2

import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        int[] s =new int[]{5,9,2,1};
        Arrays.sort(s);
        int a= Arrays.binarySearch(s,0,1,4);
        System.out.println(a);
        System.out.println(s.length);
    }
}

eg:结果为-1

import java.util.Arrays;
public class Demo07 {
    public static void main(String[] args) {
        int[] s =new int[]{5,9,2,1};
        Arrays.sort(s);
        int a= Arrays.binarySearch(s,0,1,0);
        System.out.println(a);
        System.out.println(s.length);
    }
}

好啦,今天的分享就到此为止吧!感谢大家支持!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值