java基础之数组
来源:互联网 发布:武汉烽火网络 编辑:程序博客网 时间:2024/06/11 02:02
(一)数组声明
数组是引用类型。数组必须先声明,再使用。
dataType[]arrayRefVar;// 首选的方法
或dataTypearrayRefVar[];// 效果相同,但不是首选方法
分析好数据的内存分配,数组是引用类型,堆内存的分配。
注意:
针对数组提供了length属性来获取数组的长度
针对字符串提供了length()方法来获取字符串的长度
针对泛型集合类提供了size()方法来获取元素的个数
(二)数组初始化
1、动态初始化
数组定义与为数组元素分配空间和赋值的操作分开进行。
例如:int[ ] a; a = new int[3]; a[0] = 1; a[1] = 2; a[2] = 3;
2、静态初始化
在定义数组的同时就为数组元素分配空间并赋值。
int a[ ] = {1 , 2, 3};
(三)二维数组
二维数组的本质就是多个一维数组的组合。多维的与之类似。
下面哪个语句正确地声明一个整型的二维数组? 多选
A int a[][] = new int[][];
B int a[10][10] = new int[][];
C int a[][] = new int[10][10];
D int [][]a = new int[10][10];
E int []a[] = new int[10][10];
答案是CDE
a[]是一维数组,又定义 int[] 一维数组,所以合起来就是二维数组int[] a[] 与int[][] a 等效1、动态初始化
- String s[][] ;
- s = new String[3][] ;
- s[0] = new String[2] ;
- s[1] = new String[3] ;
- s[2] = new String[2] ;
int a[][] = {{1,2},{3,4,5,6},{7,8,9}} ;
(四)数组与算法
需要结合算法,对数据进行排序和搜索。
同时根据内存的分析,如何提高效率。
选择排序:把第一个数与他后面的数进行比较,如果顺序则继续与后面比较,如果逆序则两数交换位置,继续将第一个数与交换位置后的数进行比较,这样就完成了第一轮排序。同理将第二位与其后的数比较,直到数组有序为止。
public
static
void
selectSort(
int
arr[]){
for
(
int
i = 0; i < arr.length-1; i++) {
for
(
int
j = i+1; j < arr.length; j++) {
if
(arr[j]<arr[i]){
int
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
冒泡排序:将第一个数与相邻的数进行比较,如果顺序则继续第二个数与后面相邻的书进行比较;如果逆序则交换位置,继续和后面相邻的数进行比较,完成第一趟冒泡排序。同理,直到数组有序。
private
static
void
冒泡排序(
int
[] arr) {
for
(
int
j = 0; j < arr.length-1; j++) {
for
(
int
i=0;i<arr.length-1-j;i++){
if
(arr[i]>arr[i+1]){
int
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
}
}
(五)操作数组(Arrays类)(默认是升序)
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
- 给数组赋值:通过 fill 方法。
- 对数组排序:通过 sort 方法,默认是升序。
- 比较数组:通过 equals 方法比较数组中元素值是否相等。
- 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。:binarySearch(数组,要搜索的数据);
调用binarySearch()方法进行搜索时,需要先对数据进行排序,调用sort()方法排序。
搜索方法的简介:
binarySearch(int[] a, int fromIndex, int toIndex, int key)
使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。
binarySearch(int[] a, int key)
使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
排序方法的简介:
sort(int[] a)
对指定的 int 型数组按数字升序进行排序。
sort(int[] a, int fromIndex, int toIndex)
对指定 int 型数组的指定范围按数字升序进行排序。
sort(T[] a, Comparator<? super T> c)
根据指定比较器产生的顺序对指定对象数组进行排序。
1.对基本数据类型的数组的排序
说明:(1)Arrays类中的sort()使用的是“经过调优的快速排序法”;
(2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法。
(3)要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等,对这些类数组进行排序。(其实还不如先进行升序排序,自己在转为将序)。
2.对复合数据类型的数据的排序
函数原型: (1)public static<T> void sort(T[] a,Comparator c) 根据指定比较器产生的顺序对指定对象数组进行排序。
(2)public static<T> void sort(T[] a,int fromIndex,int toIndex,Comparator c) 根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。
结合Arrays详解
一、Comparable接口
Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。
public class Person implements Comparable<Person>{ String name; int age; public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public int compareTo(Person p) { return this.age-p.getAge(); } public static void main(String[] args) { Person[] people=new Person[]{new Person("xujian", 20),new Person("xiewei", 10)}; System.out.println("排序前"); for (Person person : people) { System.out.print(person.getName()+":"+person.getAge()); } Arrays.sort(people); System.out.println("\n排序后"); for (Person person : people) { System.out.print(person.getName()+":"+person.getAge()); } }}
二、Comparator简介
public class PersonCompartor implements Comparator<Person>{ @Override public int compare(Person o1, Person o2) { return o1.getAge()-o2.getAge(); }}
调用方法:
Arrays.sort(people,new PersonCompartor());
- Java基础之数组
- Java基础之数组
- Java基础之数组
- java基础之数组
- Java基础之数组
- JAVA基础之数组
- java基础之数组
- Java基础之数组
- JAVA基础之数组
- java基础之数组
- java基础之数组
- Java基础之数组
- Java基础之数组
- java基础之数组
- Java基础之数组
- Java基础之数组
- java基础之数组
- Java基础之数组
- kubernetes(k8s)安装部署
- mongodb非关系型数据库存日志
- Java IO流
- Python中input和raw_input的区别
- supervisor
- java基础之数组
- 防止SQL注入
- 最简单翻页效果
- Mybatis-plus简单配置及应用
- npm install 报错(npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法
- LeetCode--Unique Paths
- JavaEE——HTML5绘画
- 【转载】快速掌握一个语言最常用的50%
- Android跳转到系统Wifi界面的方式