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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 失少 中级黑马   /  2018-10-6 20:55  /  808 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组:
概念:是一种容器。可以同时存放多个数据值
        特点
1.        数组是一种引用数据类型
2.        数组当中的多个数据,类型必须统一
3.        数组的长度在程序运行期间不可改变

数组的初始化:在内存中创建一个数组,并且向其中赋予一些默认值

两个常见的初始化方式:
1.        动态初始化(指定长度);
2.        静态初始化(指定内容);


A.动态初始化数组的格式:
        含义:在创建数组的时候,直接指定数组当中的数据元素个数;
数据类型[ ] 数组名称 =new 数据类型[数组长度];

解析含义:
左侧数据类型:也就是数组当中报错的数据,全都是统一的什么类型;
左侧的中括号:代表我是一个数组;
左侧数组名称:数组的名字;
右侧的new:代表创建数组的动作;
右侧的数据类型:必须和左侧的数据类型保持一致;
右侧中括号中的长度:也就是数组当中,到底可以保存多少个数据,是一个int数字;

B.静态初始化数组的格式:
含义:在创建数组的时候,不直接指定数据个数的多少,而是直接将具体的数据内容进行制定
格式:
数据类型[] 数组名称 =new 数据类型[]{元素1,元素2,元素3,……元素x};


C.省略的静态初始化格式:
格式:
数据类型[] 数组名称={元素1,元素2,元素3,……元素x};
注意事项:
1.        虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,可以自动推算出来;
2.        静态初始化标准格式可以拆分成为两个步骤;
例如:
        int[] arrayB;
        arrayB = new int[]{11,22,33};

3.        动态初始化也可以拆分为两个步骤;
4.        静态初始化一旦使用省略格式,就不能拆分成为两个步骤

使用建议:
        如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体内容,就要静态初始化;

D.数组元素的访问:
        注意:直接打印数组的名称,会得到数组对应的:内存地址哈希值;
        访问数组元素的格式: 数组名称[索引值];(索引值可以被称为下标)
       
        【注意】索引值从0开始,并且直到”数组的长度-1”为止;
       
E. Java中的内存划分
        Java的内存需要划分成为5个部分;
        栈内存(Stack):存放的都是方法中的局部变量,方法的运行一定要在栈内存中运行.
                局部变量:方法的参数,或者是方法{}内部的变量
                作用域:一旦超出作用域,立刻从栈内存中消失.
        堆内存(Heap):凡是new出来的东西,都在堆内存中.
                堆内存中的东西都有一个地址值:16进制
                堆内存的数据都有默认值.规则如下:
                                如果是整数:默认为0;
                                如果是浮点数:默认为0.0
                                如果是字符:默认为’\u000’
                                如果是boolean:默认为false
                                如果是引用类型:默认为null

        方法区(Method Area):存储.class相关信息,包含方法的信息.
        本地方法栈(Native Method Stack):与操作系统相关
        寄存器(pc Register):与CPU相关;
F.数组报错:
        1.数组索引越界异常(ArrayIndexOutOfBoundsException)
        如果访问数组元素的时候,索引编号并不存在.那么将会发生数组索引越界异常;
        2.空指针异常(NullPointerException)
                所有的引用类型变量都可以赋值为null值,但是代表其中什么都没有;
数组必须进行new初始化才能使用其中的元素,如果没有赋值,那么使用时会出现空指针异常
       
        G.数组对应的操作:
                1.获取数组的长度:
                        数组名称.length
                        例如:
                        int[] arrayA = {10,12,13};
                        int x = arrayA.length;
                注意:数组一旦创建,程序运行期间,长度不可改变;
        强引用(变量名存储了一个地址值);若是堆内存的空间没有指向,那么GC(垃圾回收器)会进行内存释放回收
2.数组的遍历;
定义:对数组当中的每个元素进行逐一、挨个处理,默认的处理方式就是打印输出;
例如:
for{int i =0;i<arr.length;i++}{
                Syso(arr[i]);
}

(array.fori)idea的快捷键(数组的名称.fori)

3.数组元素反转
定义:数组元素反转就是对称位置的元素交换
4.数组可以作为方法的参数,调用方法的时候,向方法的小括号中传参的时候传递进去的就是数组的地址值;

一个方法只能有0或者1个返回值,如果有多个返回值,那就可以使用一个数组作为返回值;返回的其实也是数组的地址值;
               
               
最后,所有大部分的题目在我的想法中,都可以分为下面几个步骤解决,1.分析、2.举证、3.获得一条思路并去实施,寻找规律;跟我一样的很多初学者都害怕去动手解决问题,但是初学者如果不解决自己的问题后面只会越来越难走,因此,动手去做,去解决问题才是王道,当你靠自己的能力解决了一个问题的时候,你获得的成就感是不言而喻的。

2 个回复

倒序浏览
兄弟,没毛病,加油哦!!!
回复 使用道具 举报
观棋忘语 发表于 2018-10-7 07:06
兄弟,没毛病,加油哦!!!

谢谢老哥,你也是,一起加油!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马