黑马程序员_java基础第一部分(二)----数组

 ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

数组概念

        数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。

        数组既可以存储基本数据类型,也可以存储引用数据类型

简单记:数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致。

数组定义格式

        格式1: 数据类型[] 数组名;
        格式2: 数据类型   数组名[];

初始化的分类:
        a:动态初始化:    只指定长度,由系统给出初始化值

格式:
         数据类型[] 数组名 = new 数据类型[数组长度];
       数组长度其实就是数组中元素的个数。
         举例: int[] arr = new int[3];    定义了一个int类型的数组arr,这个数组可以存放3个int类型的值。

        b:静态初始化:    给出初始化值,由系统决定长度    

格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
             举例: int[] arr = new int[]{1,2,3};
        简化格式:
            数据类型[] 数组名 = {元素1,元素2,…};
             举例: int[] arr = {1,2,3};

        注意事项: 这两种方式,只能使用一种,不能进行动静结合    

数组操作的两个常见小问题越界和空指针

a:ArrayIndexOutOfBoundsException:数组索引越界异常
            原因:你访问了不存在的索引。
        b:NullPointerException:空指针异常
            原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。

数组的操作:遍历

//数组遍历
public static void print(int[] arr){
System.out.print("[");

//循环
for(int x=0;x<arr.length;x++){
if(x==arr.length-1){
System.out.println(arr[x]+"]");
}else{
System.out.print(arr[x]+", ");
}
}
}

数组的操作:获取最值

//获取最值
public static int getMax(int[] arr){
int max=arr[0];
for(int x=1;x<arr.length;x++){
if(arr[x]>max){
max=arr[x];
}
}
return max;
}

数组的操作:反转

//反转
public static void reverse(int[] arr){
for(int start=0,end=arr.length-1;start<end;start++,end--){
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
}

数组的操作:获取角标值

//获取角标值
public static int getIndex(int[] arr,int a){
int index=-1;
for(int x=0;x<arr.length;x++){
if(arr[x]==a){
index=x;
break;
}
}
return index;
}

//二维数组的遍历
public static void printArr(int[][] arr){
for(int x=0;x<arr.length;x++){
for(int y=0;y<arr[x].length;y++){
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}

//二维数组求和
public static int sum(int[][] arr){
int sum=0;
for(int x=0;x<arr.length;x++){
for(int y=0;y<arr[x].length;y++){
sum+=arr[x][y];
}
}
return sum;
}

//杨辉三角
public static void arrayP(int[][] arr){
for(int x=0;x<arr.length;x++){
arr[x][0]=1;
arr[x][x]=1;
}
for(int x=2;x<arr.length;x++){
for(int y=1;y<x;y++){
arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
}
}
for(int x=0;x<arr.length;x++){
for(int y=0;y<=x;y++){
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值