数组~代码实例

“本文部分内容摘自《java语言程序设计》,郭克华主编。转载请标明出处。后期不定时跟新。

一、结合代码,讲解概念

解析:

(1)要使用一个东西,先要给他一个“名分”——定义

以main方法入口,首先定义一个数组,如上: int[] arr = new int[100];

注意格式可以概括为:type arrayName = new type[arraySize]

以上代码,创建了一个数组,并定义了该数组的长度 arraySize

(2)正名后可以名正言顺的“使用”

此时的数组还是一张白纸,各元素默认为0;你需要根据实际情况给它——赋值

看代码:arr[1] = 10; 注意下标始终是从0开始的。

通过观察两次打印结果,感受前后赋值的的变化。


“千里之行,始于足下”,恭喜,咱们跨出了这第一步。加油,自己!


关于概念,自行百度。我自己是记3个词:有序,同类型,集合

二、小例子

(1)、利用数组计算出 1~1000累加。

/**
 * 利用数组快速算出1+2+3+...+1000
 */
public class ArrayTest1 {
    public static void main(String[] args){
        int[] arr = new int[1000];
        int sum = 0;
//        代码优化,这样就只需要计算一次 arr.length
        int length = arr.length;
        for (int i = 0 ; i < length; i++){
            arr[i] = i+1;
        }
        System.out.println(arr[10]);
        for (int i = 0; i <length;i++){
            sum += arr[i];
        }
        System.out.println("sum = " +sum);
    }
}

解析:最后需要输出的是 sum,即:sum = 1+2+...+ arr[i] +...+1000,所以就需要知道 i 在任何值时,所对应的 arr[i] 的值。

即找到 arr[i] 与 i 的对应关系 以及 i 变化规律。

1、i 为下标 ,初始值为 0 

2、arr[i] 为单个元素,sum为结果

3、arr[i] = i+1——遍历for循环

4、此处有个小小的代码优化:将 int length = arr.length 提出来,避免俩次计算时耗。

5、将下面代码可以替换

for (int i = 0; i <length;i++){

        sum += arr[i];
}

...

for (int e : arr){
    sum += e;
}
System.out.println(sum);

...

(2)、判断一个数组中是否含有正数元素

public class ArrayTest2 {
    public static void main(String[] args){
        int[] arr = new  int[]{1,2,3,4,1,-1};
        boolean flag = true;
        for (int i : arr){
            if (i<=0){
                flag = false;
            }
        }
        System.out.println(flag?"都是正数":"哟,还有负数!");
    }
}

步骤:

1、定义一个数组,列出元素内部情况。

2、立一个flag,初始为 true 

3、for循环中套 if 判断语句。

——for 语句中 遍历i,i不断变化,每一次变化都回判断,当达到判断句的条件时,改变flag的值。执行下面的输出语句。

4、最后的输出直接插入了 条件运算符 语句。

 

(3)二维数组小例子

//二维数组
public class ArrayTest3 {
    public static void main(String[] args){
        int[][] arr = new int[][] {{1,2,3},{100},{12,43}};
        for (int i = 0;i<arr.length;i++){
            for (int j = 0;j < arr[i].length;j++){
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

数组中套数组,不同处就是 数组呈现形式。

定位二维数组某个元素如下图,注意代码放置位置不同输出结果不一样,要考虑到for循环的范围。

注意:i、j 的限定条件。

此处 arr[1][0] 结果输出:100。

引: int[][] arr = new int[3][5]; 

定义一个二维数组,此处为 3个一维数组,每个一维数组有5个元素。实际上就是一个 3行 5列的矩阵。

(4)、这里有坑

public class ArrayTest4 {
    public static void main(String[] args){
//      内存中开辟一块空间,保存一个数组,arr1 指向该数组地址
        int[] arr1 = new int[]{1,2,3};
//      同上
        int[] arr2 =new int[]{23,42,4334};
//      arr2的指向地址变化为跟 arr1 相同
        arr2=arr1;
//      arr2所指向的数组,下标为0的元素发生变化,arr1随之变化
        arr2[0]=90;
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
        System.out.println(arr1[0]);
      }
}


//输出结果:
90
2 
3 
90 

(后续不定时添加内容)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值