java_学习4 数组的学习

package com.qianfeng.test;

import java.util.function.IntBinaryOperator;

/*
 * 数组:用来存储数据的
 * 数组的解释:是一种引用数据类型,可以同时存储多个相同类型的数据
 * 引用数据类型的变量中存储的是地址,并且是十六进制的数据。简单数据类型存储的是数值
 * 
 * 特点:数据的内存空间是连续的,数组内的元素如果没有赋值,会有默认值,简答数据类型 默认值是0
 * 
 * 缺点:这个空间一旦被创建出来就不能再被改变
 * 
 * new:每new一次,会在堆中开辟一块新的空间。两个数组之间没有关系互不影响
 *     new出来的空间都在堆里面
 * 
 */
public class Demo5 {
    public static void main(String[] args) {
        int a = 5;
        // 创建一个可以存三个int型数据的数组,并将地址保存在arr变量中.
        /*
         * 构成: new +数据类型 +【元素的个数】
         * 
         * new 的功能:1.开辟内存空间 2.将当前数组的地址返回,默认当前数据的地址就是首元素的地址 int [3]中的int
         * :存储的值是什么类型,这里就写什么类型
         * 
         * int + [] :代表存储的是int型 数据,int[]是一个整体,代表int型的数组类型。 = 后面是数组(实体),注意:后面的[]与前面的意义不同
         * 
         * arr 是局部变量,是引用数据类型
         * 
         */

        // int[] arr = new int[3];

        // 给元素赋值 -- 通过下标
        // 构成:数组的名字+【下标的值】,先通过arr里面保存的地址找到对应的数组,再通过下标找到对应的元素完成赋值
        // arr[0] = 3;
        // arr[1] = 5;
        // arr[2] = 6;
        // System.out.println(arr[2]);

        /*
         * 注意点:数组下标越界 System.out.println(arr[10]);
         */

        /*
         * 其他创建数组的方式: 方式一:创建数组的同时完成了初始化 要求:int 后面的 [] 里面什么都不能写,数组的大小默认就是后面{}中元素的个数
         * 
         * int [] arr1 = new int []{1,2,3,4};
         * 
         * 方式二: int [] arr2 = {2,3,4};
         *
         */

        /*
         * 遍历:
         */
        // for (int i = 0; i < arr.length; i++) {
        // //arr.length 获取数组的长度(元素的个数)
        // System.out.println(arr[i]);
        // }

        // 实例一:求三个数的最大值:

        // int[] arr = { 4, 2, 7, 1 };
        // int max = getMax(arr);
        // System.out.println(max);

        // 实例二:实现两个值得交换
        int[] arr = { 4, 5 };
        //change(arr[0],arr[1]); 
        
        
        //可以将数组本身直接当做参数传递
        //但是直接写大括号的形式不可以直接作为参数
        //chang(new int []{3,4})
        change(arr);
        System.out.println(arr[0]+"   "+arr[1]);
    }

    // public static int getMax(int[] arr) {
    // int max = 0;
    // for (int i = 0; i < arr.length; i++) {
    // if (arr[i] > max) {
    // max = arr[i];
    // }
    // }
    // return max;
    // }

    //值传递
    public static void change(int a, int b) {
        a = a^b;
        b = a^b;
        a = a^b;
    }

    //地址传递, 址传递时,如果函数内部的引用的指向发生了改变,就不能影响外部得值
    public static void change(int [] arr) {
        arr[0] = arr[0]^arr[1];
        arr[1] = arr[0]^arr[1];
        arr[0] = arr[0]^arr[1];
        
    }

}
 

猜你喜欢

转载自blog.csdn.net/fang1025780636/article/details/81253616