Java 数组

数组

1.数组类型:

      保存一组其他类型的数据,元素类型(Element type)

        int[]       double[]

        int[] intArray

    和C语言兼容的方式: int intArray[]...   规则允许,规范不建议使用

2.数组的初始化(数组的长度固定)

        1>静态的方式    用到已知数组所有的元素

             Java:   int[] array={1,2,3,4,5};       int[] array=new int[]{1,2,3,4,5};(更多用在匿名数组)

            C++: int array[5]={1,2,3,4,5};   

        2>动态的方式

            JAVA: int[] array=new int[数组的长度];

            C++:     int*array=new int[5]{1,2,3,4,5};    int*array=new int[5]

        3>不初始化数组,制定一个null字面量

            int[] array=null;      null是空引用

 

3.数组的下标访问,用中括号[]指定具体的下标

        1>下标的类型一定是int

        2>下标的取值范围,数组的长度是N个,则[0,N-1]

                 和C语言的区别:如果越界,C语言在运行期间出错,JAVA将会抛异常

4.数组本质上其实也是对象(Object类的派生类)

        1>属性

                int[] array=...;

                array.length      数组的长度

        2>方法

    数组本质上是引用类型,是对象,和基本数据类型有很大区别

理解引用背后的内存模型:

        1.引用类型和基本数据类型的差别

                    基本类型:int  a=100

                     引用类型:int[] array={1,2,3,4}

                                                     

        2.Java粗略的吧内存分为栈(stack)和堆(heap)

                栈上:局部变量  形参

                堆上:对象(数组的对象)

                无论引用变量保存在堆上或者栈上,背后的数据(对象)一定是堆上

        3.方法调用过程中 ,无论是基本数据类型还是引用数据类型

                  实参到形参都是值传递(形参改变不影响实参),在栈里拷贝了一份

                    但引用传递,如果更改的是对象内部的值,则实参可以感受到变化

        4.调用栈的过程

                    注意:局部变量 形参 实参   生命周期  作用域

         5.int a=100

                =左边是空间

                =右边是值

 

数组常用的方法:

        import java.util.Arrays;//引用包

            Arrays需要util.Arrays包

            1.toString(数组)  打印

            2.copyOf(数组,数组长度)     复制一份数组

                                数组长度<=数组的长度    直接拷贝

                                数组长度>数组的长度    后面添加0

                int[] a={1,2}; int[] b=Arrays.copyOf(a)    此时a,b互不影响

                int[] a={1,2}; int[] b=a;   此时a,b互相影响

                System.arraycopy(原数组,开始下标,目标数组,开始下标)

                    目标数组需要先申请好空间

            3.copyOfRage(原数组,from,to)  [)

            4.sort | parallelSort      排序

            5.fill   填充

注意:N维数组

C,C++中:由一个个“n-1维数组”组成,并且此时长度一样长,并且内存连续

    JAVA:数组保存数组的数组,并且数组中每个元素“数组”的长度可以不一样

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值