前言:数组大家字面认为就是和数学有关系,全是数字之类的东西,其实不然,在我们学习的java中,数组具有着重要的意义,他不仅可以包含数字,而且还可以包含文字,来实现自己想要的需求,那接下来让我们对java中的数组进行伸手入的了解吧!
学习要点:
1. 什么是数组
2. 数组的定义
3. 数组在java中的体现
一. 数组的概念
数组:可以存储多个元素并且多个元素是同一种类型的容器。
二. 数组的定义:
数据类型[] 数组名;
数据类型 数组名[];
注释: 对于这两种数组的定义,虽然写法不一样,并且读法不一样,但在java中表示的意义完全相同。本人还是建议用第一种,在表达意义上更有说服力,更主要还是看个人爱好。
举例:int[] a; 定义了一个int类型的数组变量a
int a[] ; 定义了一个int类型 变量a数组
数组的初始化:
1)动态初始化: 给数组指定长度,数组中的元素值由系统默认给定
2)静态初始化: 给定数组中元素的值,数组的长度由系统给定;
动态初始化:
数据类型[] 数组名 = new 数据类型[数组长度] ;
举例:
int[] arr = new int[3] ;
静态初始化:指定数组的元素,长度由系统给定
原始格式:
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
简写方式:
数据类型[] 数组名称= {元素1,元素2,元素3..} ;
举例:
int[] arr = new int[]{1,2,3} ;
int[] arr = {1,2,3} ;
注释:在平时的使用方法中,通常用第二种静态初始化,而且勇气简单方式,简洁明了。
切结不能动静结合, 定义数组要么动态初始化,指定长度,要么静态初始化指定数组元素!
举例: int[] arr2 = new int[3]{1,2,3} ; 这是一种错误的方法。
数组中经常会出现的异常:
ArrayIndexOutOfBoundsException:数组角标越界异常
出现的原因:访问了数组中不存在的索引值;
解决方案:观察数组中到底有索引值到多少; 数组长度-1
NullPointerException:空指针异常 (在实际开发中该异常是最多的)
出现的原因:对象为null,而开发者还要去使用对象,就会出现问题
解决方案:给某个对象进行非空判断,防止程序程序空指针异常
对于异常的处理办法:
把从头到尾,将遇见到的异常建立文档,
出现该异常的原因
如何解决异常
注释:这个我以后会建立有一个专门的异常文档,将见过的所有异常保存下来,随时查阅。
OOM异常:OutOfMemory:内存溢出 Android 解决加载大量图片的问题:图片加载器:ImageLoader等等
三. 数组在java中的体现
1.数组的遍历:
自定义一个数组,静态初始化,求出数组中的元素
分析: 数组中的元素过多,所以用循环的输出方法,将其遍历出来
public static void main(String[] args) {
int[] arr= {22,23,44,55,66};
System.out.print("[");
for(int i=0;i<=arr.length-1;i++) {
if(i==arr.length-1) {
System.out.println(arr[i]+"]");
}
else
System.out.print(arr[i]+",");
}
}
2.数组中的最值应用:
自定义一个数组,静态初始化,求数组中的最大值或者最小值;
分析: 最大值:
1)定义一个数组,静态初始化
2)定义一个参照物,分别和数组中的其他元素进行比较,如果后面的元素都大于参照物,将后面作为参照物作为最大值
3)输出
public static void main(String[] args) {
int[] arr= {22,44,66,88,99};
// 先遍历一下
for(int i=0;i<arr.length;i++) {
if(i==arr.length-1){
System.out.println(arr[i]);
}else
System.out.print(arr[i]+",");
}
int max=arr[0];
int min=arr[0];
for(int i=0;i<arr.length;i++) {
if(arr[i]>max) {
max=arr[i];
}
if(arr[i]<min) {
min=arr[i];
}
}
System.out.println(max);
System.out.println(min);
}
}
3. 定义一个数组,元素逆序
分析:
定义一个数组,静态初始化
将数组中0索引对应的元素和arr.length-1索引对应的元素进行互换
将1索引对应的元素和arr.length-1-1索引对应的元素进行互换
....
只要保证数组的长度arr.length/2
public static void main(String[] args) {
int[] arr= {23,43,56,67,78};
//先来一个遍历
printarr(arr) ;
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~");
rever(arr);
printarr(arr);
}
public static void rever(int[] arr){
for(int i=0 ,x=arr.length-1;i<=x;i++,x--) {
int temp=arr[i];
arr[i]=arr[x];
arr[x]=temp;
}
}
public static void printarr(int[] arr) {
System.out.print("[");
for(int i=0;i<=arr.length-1;i++) {
if(i==arr.length-1) {
System.out.println(arr[i]+"]");
}
else
System.out.print(arr[i]+",");
}
}
}
4.数组中的元素基本查找法: ----->数值中的元素的查找,查找的是该元素在数组中的索引
有一个字符串数组
String[] str = {......} ;
键盘录入一个数据,查找值对应数据..
数组中的元素查找法(数组中的基本查找法)
定义一个数组,静态初始化,查找某个元素在该数组中第一次出现的索引
分析:
1)给出了数组
2)写一个查找数组中的元素的索引的方法
import java.util.Scanner;
/**通过数组中的数求出数组中的索引。
* @author 田伟
*
*/
public class ArrSeek2 {
//首先先遍历一个数组、
public static void main(String[] args) {
int[] arr= {34,45,66,77,44,32,54,65};
System.out.print("[");
for(int i=0;i<=arr.length-1;i++) {
if(i==arr.length-1) {
System.out.println(arr[i]+"]");
}
else
System.out.print(arr[i]+",");
}
int arr1=Arr(arr);
System.out.println(arr1);
}
public static int Arr(int[] arr) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入数组中的一个数:");
int value=sc.nextInt(); for(int i=0;i<=arr.length-1;i++) {
if(value==arr[i]) {
return i;
}
}
return -1;
//要求这个索引的话,首先输入一个值,判断他是否与其中的值相同,如果相同,那么输出他的索引
}
}
总结:数组在java中的实现多种多样,可以通过之前学过的调用,键盘录入对数据进行各种各样的练习,其实也是一种乐趣,总之,还是那句话java要学好,还得多敲代码。