A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 温暖的小白   /  2015-5-12 22:18  /  6222 人查看  /  50 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

笔记内容:数组
笔记来源:刘意老实Java基础视频第4天
正文格式:
数组格式
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];通过new关键字创建了一个长度为5,元素类型是int的数组实体,并把这个数组实体赋值给引用类型变量 arr, 所以arr的类型是int[] (int类型数组)
会打印数组的内存地址(暂且这样记忆,之后会详细讲解),可以通过索引获取指定位置的元素


int [] arr = new int[5];

数据类型:
                 基本类型;4类8种。
                引用类型;类,借口,数组。

                左边;
                        int;表示数据类型。
                        [];表示这是一个数组
                        arr; 数组的名字。
               
                右边;
                        new;
                        int;表示数据类型。
                        [];表示一个数组
                        5;数组的长度

其他三种数组格式  A int[] arr =new int[2];//念法:int类型的数组arr
                  B int arr[] = new int[2];//念法:int 类型的arr数组,不推荐这么写,他和第一种格式其实一样的
                  C int[] arr = new int[]{1,2,3,7};//大括号内可以没有任何东西
                  D int[] arr = {3,4,65,4};//大括号内可以没有任何东西
                                 
                                  System.out.println(arr2) 是打印 arr2的十六进制字符
                                System.out.println(arr[2]) 是打印 堆中角标为3的元素


class Demo
{
                public static void main(String[] args)
        {
                        double[]  arr1 = new double[2];
                        int[] arr2 = new int[2];                //arr1 arr2 arr3就相当于变量x y z
                        char[] arr3 = new char[3]; //
                        boolean[] arr4 = new boolean[3];
                        System.out.println(arr2);
        }


}*/

/*
        需求:我要获取一个数据肿么办?
        通过索引(类似于字典的索引)。格式:数组名【索引】
                                                                        arr[0] arr[1]

       
        Java内存图:
                A:栈        存储局部变量使用。局部变量:定义在方法中或者方法声明上的形式参数都叫做局部变量
                        使用完毕,立马消失。

                B:堆        所有new出来的都在堆里面。
                        a:每一个实体都有地址值  本身是十进制,显示的是十六进制
                        b:每一个实体内的内容都有默认值
                                整数:0
                                浮点数:0.0
                                字符:'\u0000'
                                布尔:false
                        c:实体不再被使用的时候,在垃圾回收器空闲的时候被回收。

                C:方法区
                D:本地方法区
                E:寄存器
       
        需求:我要给第三个元素赋值为10,肿么办?
        arr[2]=10;    我说过了 arr[]  就相当于一个变量,[]里面装的是角标


****知识点:数组操作的常见问题
                       
                        A 数组越界  访问了不存在的索引,如下
                        ArrayIndexOutOfBoundsException

class Demo
{
        public static void main(String[] args)
        {
        int[] arr={1,2,3,4,2};

        System.out.println(arr[3]);
        System.out.println(arr[5]);//没有角标6的元素
        }
               
}
                        B 空指针异常。一个实例对象都已经不存在了,你还要访问
                                NullPointerException
                       
class Demo
{
        public static void main(String[] args)
        {
        int[] arr={1,2,3,4,2};

                arr=null;                                                //重新给arr赋值,以前是堆的地址值赋值给arr,
                                                                                                                现在是null赋值给arr,arr就不会通过 地址值指向堆
               
                System.out.println(arr[3]); //arr 已经是个空的了
        }
               
}
/*
知识点;多个数组指向同一个实例

class Demo
{
        public static void main(String[] args)
        {
                int[] arr=new int[3];
                arr[0]=1;
                arr[1]=3;
                arr[2]=5;

                int[] arr2=arr;        //再定义一个数组,把数组arr的值(地址值)付给了arr2                       
                arr2[1]=10;
               
                System.out.println(arr[1]);//10

                System.out.println(arr2[2]);//5
        }
                       
}       
*/
/*
   知识点; 遍历  获取数组中的所有元素

class Demo
{
        public static void main(String[] args)
        {
        int[] arr={1,2,3,4,5};

                System.out.println(arr[0]);
                System.out.println(arr[1]);
                System.out.println(arr[2]);
                System.out.println(arr[3]);
                System.out.println(arr[4]);
        }
               
}
   //通过循环改进,把所有数组中元素罗列出来

class Demo
{
        public static void main(String[] args)
        {
        int[] arr={1,2,3,4,5};

                for (int x=0;x<5;x++)                //x定义的是脚标 0 1 2 3 4
                {
                        System.out.println(arr[x]);
                }
        }
               
}
        //如果数据太多,就没办法了遍历么??
        //假如有人能够提供我们数组的长度,就可以做了(x<?)
        // java 提供了一个属性   length
                格式; 数组名.length
class Demo
{
        public static void main(String[] args)
        {
        int[] arr={1,2,3,4,5};

                for (int x=0;x<arr.length;x++)                //x定义的是脚标 0 1 2 3 4
                {
                        System.out.println(arr[x]);
                }
        }
               
}
                       
                需求;数组遍历  用方法
                思路   
                                返回值类型;void
                                参数列表;int[]arr



class Demo
{
        public static void main(String[] args)
        {
        int[] arr={1,2,3,4,5};
        int[] arr2={34,415,515,321,54,52,37,73,42};
        printArray(arr);    //执行一遍函数
                                                       
        printArray(arr2);        // 再执行一遍函数
        }
        public static void printArray(int[] arr)   // 传送数组  arr无所谓他和上面的arr1  arr2没有联系        其实传送的是空,直接就打印出来了        {
                        for (int x=0;x<arr.length;x++)                //x定义的是脚标 0 1 2 3 4
                        {
                                System.out.println(arr[x]);
                        }
                }
        }
                 
*/
/*
        需求,求数组中的最大值
        思路  
        1.需要进行比较,并且定义变量记住每次比较后较大的值
        2.对数组中的元素遍历取出,和变量记住的元素进行比较
                 如果遍历的元素大于变量中记录的元素,就用变量记住较大的值。
        3.遍历结果,该变量记住的就是最大值。

        定义一个功能实现

        明确1 结果。
                        是数组中的元素,int
        明确2 未知内容
                        数组



class Demo
{
        public static void main(String[] args)
        {
       
        int[] arr={34,415,515,321,54,52,37,73,42};
       
        int max = getMax(arr);  //先定义,在打印输出,这都错!!MD!!///?????????

        System.out.println(max);

       

        }
//方法1 定义元素
        public static int getMax(int[] arr)
                {   // 传送数组  arr无所谓他和上面的arr1  arr2没有联系                {
                        int max=arr[5];                                        //定义 int max=0  就是让每次循环中 元素跟0对比,
                                                                                                //假如元素中都是负数,那没就会输出最大值是0
                                                                                                //所以定义max 可以随意定义一个  数组中的任何一个元素

                                                                                                //初始化数组中的  元素 可以,那么初始化元素中的角标可不可以呢?怎么可以做到呢
                                                                                                //        可以,因为元素跟角标有着对应关系
                                                                               
                                                                                       
                        for (int x=0;x<arr.length;x++)                //x定义的是脚标 0 1 2 3 4
                        {
                                if (arr[x]>max)
                                {
                                        max=arr[x];                                        //每遍历一次数组中的元素都要循环做一次比较
                                }
                        }

                        return max;                                //错误忘了加分号
                }

// 方法2(定义角标)   运行方法2的时候需要把int max = getMax(arr);改成int max = getMax2(arr);

                        public static int getMax2(int[] arr)
                        {   
                        int maxIndex=0;                //初始化定义一个角标也可以,因为角标对应着元素               
                                                                                       
                        for (int x=0;x<arr.length;x++)                //x定义的是脚标 0 1 2 3 4
                        {
                                if (arr[x]>arr[maxIndex])                //元素跟角标对应的元素作对比
                                {
                                        maxIndex=x;                                        //
                                }
                        }

                        return arr[maxIndex];                                //错误忘了加分号
                        }
        }*/

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马