本文章提供对于数组的简单说明以及概念与数组的基本使用方法
一、数组的基本概念
1.1、数组的地位
数组无论在那种编程语言都是最重要的数据结构之一,同时不同语言的实现以及处理方式也不尽相同,但做程序的人都知道数组的实用性以及数组的价值和数组的重要性。
1.2 、什么是数组?
①.所谓数组,就是相同类型数据的有序集合
②.数组的使用,数组描叙的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每个数据称作数组元素(item),每个数组元素可以通过一个下标来访问它们
1.3、数组的特性
①.数组的长度确定,数组一旦被创建,未来的长度不能发生改变,数组是不可变的
②.数组的元素类型都相同!
③数组是有序的,每个数组元素可以通过一个下标来访问,下标从0开始。
④数组是引用类型
1.4、数组在堆栈的储存方式
一,在栈区声明了一个变量score,数组是引用数据类型所以score 在栈区里面只是声明了一个变量并没有赋值
二,new int[];代表在堆区申请了一个空间,同时产生一个内存地址,同时把这个内存地址赋值给score
三,scroe通过被内存地址找到堆中的相对应地址的空间
二,数组的使用与实际应用
2.1、声明数组方式
①数据类型【】 数组名称 = new 数组类型 { 内容… };
②数组类型【】 数组名称 = new 【数组长度】;
③数组类型【】数组名称 = new 数组类型【】{ 内容…}
2.2、实现对数组进行排序
①冒泡排序法的原理跟运行方式
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
**public class Test02 {
public static void main(String[] args) {
int [] a = {2,4,8,9,6,7,5,1,3};
int tmp;
for(int i=0;i<a.length;i++) {
for (int j = 0; j < a.length-1; j++) {
if (a[j]>a[j+1]) {
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
System.out.print(a[i]+"\t");
}
System.out.println();
for(int i = 0;i<a.length;i++ ) {
System.out.print(a[i]+"\t");
}
}
}**
②如何实现在控制台输入10个字符进行排序以及(二分法)倒序输出
import java.util.Scanner;
import javax.sql.rowset.FilteredRowSet;
public class Test01 {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
char[] a = new char[10]; //声明数组
String str;
for (int i = 0; i < a.length; i++) {
System.out.println("请输入第" + i + "个字符");
str = sc.next();
a[i] = str.charAt(0);
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + "\t");
}
char tmp;
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - 1 - i; j++) {
if (a[j] > a[j + 1]) {
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
System.out.println();
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + "\t");
}
System.out.print("使用二分法实现倒序输出");
tmp = '\u0000';
for (int i = 0; i < a.length / 2; i++) {
tmp = a[i];
a[i] = a[a.length - 1 - i];
a[a.length - 1 - i] = tmp;
}
System.out.println();
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + "\t");
}
}
}
三、Arrays类
3.1、除了以上方法以外jdk还提供了java.util.Arrays类包含了常用的数组操作,为了日常开发提供了方便。 Arraysl类包含了对数组的(排列,查找,填充,打印内容)等,常见的操作
①使用Arrays类对数组元素进行排序
import java.util.Arrays;
import java.util.Scanner;
import javax.sql.rowset.FilteredRowSet;
public class Test01 {
private static Scanner sc;
public static void main(String[] args) {
int[] a = { 1, 2, 9, 7, 5, 6, 4, 8, 3 };
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
}
②使用Arrays类实现二分查找法
public class Test01 {
public static void main(String[] args) {
int [] a ={1,2,9,7,5,6,4,8,3};
System.out.println(Arrays.toString(a));
//使用二分法查找,必须先对数组进行排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//返回排序后新的索引位置,若是没有找到返回负数
System.out.println("该元素的索引:"+Arrays.binarySearch(a,8));
}
}