*掌握一/二数组的创建及使用
*如何遍历数组
*如何填充替换数组中的元素
*如何对数组中的元素进行排序
*如何复制数组
*掌握查询数组的方法
为什么要使用数组?
数组能够实现快速寻址(首地址+索引值*存储元素占用的字节数),执行修改和查询的效率高;而缺点是实现插入和删除的效率极低!
一.一二维数组的创建及使用
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);
}
}
好啦,今天的分享就到此为止吧!感谢大家支持!