------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
什么是数组?
数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据。数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写。
数组的概念:
同一种类型数据的集合。其实数组就是一个容器。
数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
一维数组:
格式1
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = nwe int[5];
(动态初始化)
格式2
元素类型[] 数组名 = new 元素类型 []{元素,元素,....};
int [] arr =newint[]{3,4,1,7};
int [] arr = {3,4,1,7};
(静态初始化)
注:动态初始化和静态初始化不能同时使用。
数组取出:
通过数组的角标来获取,定义一个int 数组arr 长度为5,则可以取出arr中的1-4角标(从0开始计算,Java中大多都是含头不含尾)àarr[x](x<5)如角标出界限,则会出现ArrayIndexOutOfBoundsExceptio:数组角标越界异常,而当对数组进行动态初始化并未赋值的情况下进行取值,则会出现NullPointerException:空指针异常。在不确定数组长度的情况下可以使用.length来获取数组的长度。
示例:
package com.itheima;
public class ArrayDemo {
public static void main(String[] args) {
//通过静态初始化设置int数组的值
int[] arr = new int[]{3,5,7,9};
//通过Array.length方法获取数组长度。
for(int x = 0;x<arr.length;x++){
//打印出x角标说对应的值。
System.out.println(arr[x]);
}
}
}
/*3
5
7
9
*/
常见操作:
package com.itheima;
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = new int[]{3,5,7,9,8,7,3};
// repetition(arr);
// max(arr);
printArr(arr);
// bubble(arr);
// selection(arr);
//开发中常用为Arrays.sort
Arrays.sort(arr);
printArr(arr);
}
private static void repetition(int[] arr) {
//判断数组中元素是否重复。
for(int i = 0;i<arr.length-1;i++){
for(int j = i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
System.out.println(i+"角标元素:"+arr[i]+"和"+j+"角标元素:"+arr[j]+"是重复的");
}
}
}
/* 0角标元素:3和6角标元素:3是重复的
2角标元素:7和5角标元素:7是重复的
*/
}
private static void max(int[] arr) {
//求数组中的最大值。
int max = 0;
for(int i = 0 ; i<arr.length;i++){
if(max<arr[i])
max = arr[i];
}
System.out.println("数组中最大值为:"+max);
}
private static void bubble(int[] arr) {
//冒泡排序,从小到大
for (int i=0;i<arr.length-1 ;i++ ) {
//arr.length-i-1让每一次比较的元素减少,-1是为了防止数组角标越界
for (int y=0;y<arr.length-i-1 ; y++) {
if(arr[y]>arr[y+1]){
int temp = 0;
temp = arr[y];
arr[y] = arr[y+1] ;
arr[y+1] = temp;
}
}
}
}
//选择排序
private static void selection(int[] arr) {
for(int i=0;i<arr.length;i++){
for (int j = i+1; j <= arr.length-1; j++) {
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
//打印数组。
private static void printArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if(i!=arr.length-1)
System.out.print(arr[i]+",");
else
System.out.println(arr[i]);
}
//Arrays方法中提供的方法。
// System.out.println(Arrays.toString(arr));
}
}
二维数组
二维数组其实就是一个一维数组的数组。他的每一个元素都是一维数组。
初始化方法:
动态初始化:
int[][] arr2 = new int[3][5];
定义了一个二维数组,二维数组中有3个一维数组,每一个一维数组有5个元素。
静态初始化:
int[][] arr3 = new int[][]{
{1,2,3},
{4,5,6}
};
二维数组取值操作:
package com.itheima;
public class ArraysDemo2 {
public static void main(String[] args) {
int[][] arr = new int[][]{
{3,3,5},
{2,3},
{345,3,2}
};
//首先获取到二维数组中的一位数组,再获取一维数组中的元素。
for (int i = 0; i < arr.length; i++) {
System.out.print("{");
for (int j = 0; j < arr[i].length; j++) {
if(j!=arr[i].length-1)
System.out.print(+arr[i][j]+",");
else{
System.out.println(arr[i][j]+"}");
}
}
}
}
}