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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

阳阳1996

初级黑马

  • 黑马币:15

  • 帖子:5

  • 精华:0

© 阳阳1996 初级黑马   /  2019-8-20 23:59  /  866 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下是我的学习成果(数组)1. 数组
        a 概念:存储多个同一类型数据的容器(内存空间)
        b 格式:数据类型[] 变量名;(不推荐:数据类型 变量名[])
         
       
        c 数组的初始化
        数据需要先初始化后使用(变量也是一样)
        初始化的工作:
                a). 开辟内存空间
                b). 为数组中元素赋值
       
        数组初始化方式:
                a) 动态初始化(指定数组长度)
                b) 静态初始化(不指定数组长度,)
               
        动态初始化就是只给定数组的长度,元素的初始化交给系统默认处理。
       
        动态初始化格式:
                数据类型[] 变量名 = new 数据类型[n];
                左边:
                        数据类型        存储在这个数组中元素的类型
                        []                        表示这是一个数组
                        变量名                数组的名字
                       
                右边:
                        new                        申请内存空间
                        数据类型        存储在这个数组中元素的类型
                        []                        表示这是一个数组
                        n                        数组长度,是一个int值
               
                       
                        int[] arr = new int[3];

        d 数组的使用:直接输出
       
        直接输出数组
        [I@1e643faf
                [        表示是数组
                [[        表示是二维数组
                I        数组中元素的类型
                1e643faf        通过地址等信息算出来的一个数值(十六进制hash值)
       
       
        [Ljava.lang.String;@6e8dacdf
                [        表示是数组
                [[        表示是二维数组       
                L        数组中元素的类型是引用数据类型
                java.lang.String;        数组中元素的类型(完整类名)
                6e8dacdf        通过地址等信息算出来的一个数值(十六进制hash值)
        特例:char[]                                   直接输出char[],结果与上面的不同,会输出一个字符串,字符串内容是字符数组中的内容拼接而成
       
        e 数组的使用:输出/获取数组中的每一个元素
                索引:索引就是一个整型的编号,用来获取数组中的每一个元素
                索引的使用方法/数组中元素的获取方法:
                        数组名[索引]
                索引特性:
                        1. 从0开始的整数
                        2. 连续
                        3. 索引每次递增1
       
                int数组中元素的默认值都是0
               
               
               
        f 内存图解1
       
        左面的内存区域是 栈内存       
        右面的内存区域是 堆内存
       

       
       
       
        局部变量
                写在一对大括号({},类除外)里面的变量,称为局部变量。
                int[] arr 写在main方法里面 就是局部变量
                局部变量存储在栈内存中
                在main方法结束以后,该局部变量会立即消失
               
        对象
                通过new出来的称之为对象
                对象存在堆内存中,使用完以后不会立即消失(被回收)
                等垃圾回收器空闲时在合适的时间回收。
                在堆里面的数据都有默认的初始化值
                整型                                        0
                浮点型                                        0.0
                布尔类型                                false
                字符                                        空字符
                引用类型(包括String)        null
        建立关系
                对象开辟内存空间并且初始化之后,会把自己空间的地址值给到指向自己的变量(该变量存储在栈内存中)
               
        直接使用数组变量
                如果直接输出arr(局部变量),输出的实际是arr指向的对象的地址值(该对象在堆里面的地址值)
               
        操作数组中的每个元素
                arr[i]
                首先找到栈里面的arr,arr指向的是堆内存中的某个地址。
                找到该地址以后,会根据索引[i]找到对应的元素,找到以后可以进行赋值/读取等操作。
       
        g 内存图解2
                两个不同的int数组类型的变量,指向了同一个int数组对象
                通过任意一个变量,均可操作数组对象内的元素。
       
               
               
               
               
2. 数组大厂面试题实战(百度)
        在一个数组中,某一个元素出现的次数>length/2,请用程序获取数组中的该数字。
        {1,2,6,1,5,1,3,1,1}
        1. 遍历数组,统计每个元素出现的次数,如果某个元素出现次数大于长度的一半。
       
        2. 排序
                从小到大排序 结果是 1 1 1 1 1 2 3 5 6    6 5 3 2 1 1 1 1 1

                1 1 1 1 1  3 5 6    6 5 3  1 1 1 1 1
               
                对数组进行排序,获取数组中索引为length/2的元素,即为该数字
               
               
        3. 火拼
               
                1 1 1 1 1  3 5 6
                {1,6,1,1,1,3,1,5}
               
                第一个元素上场前
                场上目前胜利的帮派/某个值winner = 0;
                场上有的人数/元素数量count = 0;
               
                第一元素1上场后
                winner = 1;
                count = 1;
               
                第二个元素6上场后
                winner = 0;
                count = 0;
               
                第三元素1上场后
                winner = 1;
                count = 1;
               
                第四个元素1上场后
                winner = 1;
                count = 2;
                ……
               
               
                上场 看count == 0
                        是 winer = 自己
                           count++
                          
                        否
                                看是不是自己人
                                        是winner==自己       
                                                count++
                                                //winer=自己
                                        否 count--

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马