Flask接口签名sign原理与实例代码浅析
244
2022-09-01
Java数组归纳总结
目录一、一维数组1.创建方法2.初始化数组(一维数组)二、二维数组1.创建方法2.初始化二维数组三、遍历数组四、替换元素五、数组排序六、数组拷贝七、元素查询八、排序算法1.冒泡排序2.直接选择排序3.反转排序
一、一维数组
1.创建方法
数组元素类型 数组名字[];数组元素类型[] 数组名字;
比如:
int array[];//int 类型数组
String str[];//String类型数组
我们还要给数组申请空间:
数组名字 = new 数组元素的类型[数组元素的个数];
array = new int[10];//代表创建了一个有10个元素的整型数组
//注意
当我们用new关键字为数组分配内存的时候,整型数组中各个元素初始值都为0
综合上面两种方法,我们可以直接在声明数组的时候为其开辟内存空间:
数组元素的类型 数组名 = new 数组元素的类型[数组元素的个数];
int array[] = new int[10]
2.初始化数组(一维数组)
常见的初始化方法如下:
int array[] = new int[]{1,2,3,4,5};
或者
int shuzu[] = {1,2,3,4,5};
看一个栗子:
public class Day {
public static void main(String[] args) {
int array[] = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for(i = 0;i<12;i++){
System.out.println((i+1)+"月"+array[i]+"天");
}
}
}
//我们创建数组array来承接天数,然后循环将其输出。
二、二维数组
二维数组一般表示行列间的关系,也是要重点掌握的。
1.创建方法
数组元素的类型 数组名字[][];数组元素的类型[][] 数组名字;
代码如下:
int array[][];
我们可以直接分配内存空间:
array = new int[2][5];
或者
也可以分别为每一维分配内存空间:
array = new int[2][];
array[0] = new int[2];
array[1] = new int[3];
两种方法均可
2.初始化二维数组
type arrayname[][] = {value1,value2,value3....};
/*
type 是指数组数据的类型
arrayname 是指数组的名称
value 是指数组中各元素的值
*/
我们看一个代码:
int array[][] = {{2,5},{5,1}};
我们应当注意初始化我们的二维数组后,应当注意数组的小标是在0开始的。对于数组赋值,我们也可以直接进行赋值:
array[1][1] = 20;
我们写一个类Matrix,在主方法中编写代码实现输出一个3行4列且所有元素均为0的矩阵:
public class Matrix {
public static void main(String[] args) {
int array[][] = new int[3][4];
for(int i=0; i for(int j=0; j System.out.println(array[i][j]); } System.out.println(); } } } 和一维数组一样,创建成功后,系统会给每一个元素分配初始值 0。 三、遍历数组 我们一般使用for循环来实现遍历数组,我们重点看一下如何遍历二维数组,我们需要双重for循环。 举个简单例子: public class Matrix { public static void main(String[] args) { int array[][] = new int[3][4]; for(int i=0; i for(int j=0; j System.out.println(array[i][j]); } System.out.println(); } } } 但是一般在java里面,我们不会这么玩,我们使用 foreach 来实现数组遍历: public class Find { public static void main(String[] args) { int array[][] = {{4,3},{5,3}}; int i = 0; for(int a[]: array){ i++; int j=0; for(int b: a){ j++; if(i==array.length && j==a.length){ System.out.println(b); }else{ System.out.println(b + ","); } } } } } 四、替换元素 有时我们会遇到让我们替换数组里一些元素的情况,我们使用fill方法来实现: fill(int[] array,int value); 使用指定的int值分配给int型数组的每个元素 我们来看一个简单的栗子: import java.util.Arrays; public class Swap{ public static void main(String[] args) { int array[] = new int[5]; Arrays.fill(array,6); for(int i = 0;i System.out.println("第"+i+"个元素是:"+array[i]); } } } 上面的栗子,使得我们数组里面的每一个元素赋值均为6; 但是我们一般想要的是指定一些位置,那么我们继续来看: fill(int[] array,int fromIndex,int toIndex,int value); fromIndex 是要使用指定值填充的第一个元素的索引(被包括) toIndex 是使用指定值填充的最后一个元素的索引(不包括) value 是储存在数组所有元素中的值 //我们应当注意不要让索引位置越界,否则会出现数组越界异常 import java.util.Arrays; public class Fill{ public static void main(String[] args) { int array[] = new int[]{1,2,3,4}; Arrays.fill(array,1,2,6);//替换数组里第二个元素 for(int i=0; i System.out.println("第"+i+"个元素是:"+array[i]); } } FUZSHAek} 五、数组排序 在JAVA里面提供了很棒的排序方法,也就是sort( )方法。 Arrays.sort(object);//object也就是数组的名称 直接上代码: import java.util.Arrays; public class A{ public static void main(String[] args) { int array[] = new int[]{1,2,3,4}; Arrays.sort(array); for(int i = 0;i System.out.println(array[i]); } } } JAVA里面对于String类型数组的排序,遵循的原则是数字排在字母前面,大写字母排在小写字母前面。 六、数组拷贝 Java里面一般可以用copyOf() 和copyOfRange()来实现对数组的复制。我们先来看copyOf(): copyOf(array,int newlength); array 是要进行复制的数组 newlength 是复制后的新数组的长度,如果比原来大,那么空余的地方用0填充,如果小,那么就截取到满足条件为止。 看一下代码: import java.util.Arrays; public class Copy { public static void main(String[] args) { int array[] = new int[]{1,2,3}; int newarray[] = Arrays.copyOf(array,5); for(int i=0; i System.out.println(newarray[i]); } } } /* * 输出结果: * 1 * 2 * 3 * 0 * 0 * */ 然后来看一下copyOfRange的方法: copyOfRange(array,int fromIndex,int toIndex) array 是要进行复制的数组对象fromIndex 开始复制数组的索引位置,需要包括toIndex 是指要复制范围的最后索引位置,但是是不包括Index的元素 import java.util.Arrays; public class Copy{ public static void main(String[] args) { int array[] = new int[]{1,2,3,4,5}; int newarray[] = Arrays.copyOfRange(array,0,3);//前三个元素 for(int i = 0;i System.out.println(newarray[i]); } } } 七、元素查询 二分法想必大家都听说过,在JAVA里面也有二分的思想,也就是binarySearch( )方法,二分搜索方法来搜索数组,获取我们的指定对象,返回我们要搜索的元素的索引。与复制相似,也有两种类似写法: binarySearch(Object[ ],Object key) 和 binarySearch(Object[ ] ,int fromIndex, int toIndex ,Object key ) 先看第一个: binarySearch(Object[ ] array,Object key) //array 是要进行搜索的数组 //key 是要进行搜索的值,如果这个key包含在数组里面,则返回搜索值得索引,否则返回 -1 或 " - " 我们看一个栗子: int array[] = new int[]{4,16,10}; Arrays.sort(arr); int index = Arrays.binarySearch(array,0,1,7); 我们看一下上面这个程序,我们发现原来的数组里面是没有 7 的,我们在返回值前面加一个 “ - ” ,然后它索引在0~1,我们看 7 是不是应该在 16 前面,在4的后面,经过sort排序之后,我们的顺序是{4,10,16},此时16的位置是 2 ,所以,我们搜索7的返回值index是 -2。 对于这种方法,应当注意,我们要是找某个元素,那么一定是排顺序后,排序好的,如果没有提前排序,那么结果是无法确定的。 我们再看一个可以查询到的: import java.util.Arrays; public class B{ public static void main(String[] args) { int array[] = new int[]{5,2,4,3,1}; Arrays.sort(array); int index = array.binarySearch(array,4); System.out.println("4的索引位置是"+index); } } //返回值是 3 ,也就是 4 的索引位置 我们再来看一下binarySearch(Object[ ] ,int fromIndex, int toIndex ,Object key ) binarySearch(Object[ ] array,int fromIndex, int toIndex ,Object key) array要检索的数组 fromIndex是指定范围的开始处索引 toIndex 是指范围内的结束处索引 key 是指要搜索的元素 使用此方法依然要进行数组的排序 举个栗子: import java.util.Arrays; public class C{ public static void main(String[] args) { String str[] = new String[]{"ab","cd","ef","gh"}; Arrays.sort(str); int index; index = Arrays.binarySearch(str,0,2,"cd"); System.out.println("cd的索引位置:"+index); } } //cd的索引位置:1 八、排序算法 笔者对于常见的排序算法有过详细的讲解: 小白学六大排序算法(C语言版),思想都是一样的,这里笔者就不再讲解,选取冒泡排序,直接选择排序,反转排序这三个方面来用JAVA实现一下 : 1.冒泡排序 public class BubbleSort { public static void main(String[] args) { int[] array = {1,5,6,9,8,7}; BubbleSort bubbleSort = new BubbleSort(); bubbleSort.sort(array); } public void sort(int[] array){ for(int i = 1;i for(int j = 0;j if(array[j]>array[j+1]){ int temp; temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } showArray(array); } public void showArray(int[] array){ for(int i:array){ System.out.print(" "+i); } System.out.println(); } } 2.直接选择排序 public class SelectSort { public static void main(String[] args) { int array[] = {5,1,2,9,4,6,7}; SelectSort selectSort = new SelectSort(); selectSort.sort(array); } public void sort(int[ ] array){ int index; for(int i = 1; i index = 0; for(int j=1;j<=array.length-i;j++){ if(array[j]>array[index]){ index = j; } } int temp; temp = array[array.length-i]; array[array.length-i] = array[index]; array[index] = temp; } showArray(array); } public void showArray(int[] array){ for(int i:array){ System.out.print(" "+i); } System.out.println(); } } 3.反转排序 public class ReverseSort { public static void main(String[] args) { int[] array = {1,2,3,4,5,6}; ReverseSort reverseSort = new ReverseSort(); reverseSort.sort(array); } public void sort(int[] array){ System.out.println("原数组:"); showArray(array); int temp; for(int i = 0; i temp = array[i]; array[i] = array[array.length-1-i]; array[array.length-1-i] = temp; } System.out.println("反转之后:"); showArray(array); } public void showArray(int[] array){ for(int i:array){ System.out.print(" "+i); } System.out.println(); } }
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~