• 数组知识点


    1. 数组变量是一种引用类型的变量数组变量并不是数组本身,它只是指向堆内存中的数组对象。

        因此,可以改变一个数组变量所引用的数组,这样可以造成数组长度可变的假象。
     
    2. 数组一定要进行初始化。(不要搅混数组变量跟数组对象!-->看第三条)
        不过可以换一个方式来初始化数组,或者说,数组无需初始化。
         就是,先初始化一个A数组,然后再把此数组赋值给另一个B数组变量,那么B数组变量就等于有了数组。也就跳过了数组初始化,例子:
          String[] A=new String[2];//静态初始化了一个长度为2 的字符串数组
          String[] B=null;//定义了一个数组变量B
          B=A;
          System.out.println(B.length);
          结果: 2
          其实本质上还是初始化了数组。只是让B变量直接指向了一个已经执行初始化的数组。
     
    3. 数组变量跟数组对象,不要被搞混了。
        数组变量只是一个引用变量(有点类似于C语言里的指针);
        而数组对象就是保存在堆内存中的连续内存空间。
        对数组执行初始化,其实并不是对数组变量执行初始化,而是在堆内存中创建数组对象——也就是为该数组对象分配一块连续的内存空间,这块连续的内存空间的长度就是数组的长度。
        对于数组变量来说,它并不需要进行所谓的初始化,只要让数组变量指向一个有效的数组对象,程序即可正常使用该数组变量。
     
    4. 不管是数组还是其它类型的变量,如果是为局部变量的话,必须由程序员自己赋初始值,即使将它赋为null也行。
     
    5. java数组的初始化方式有两种:静态初始化、动态初始化
       例子:
      动态初始化:  String[] A=new String[2];//初始化时程序员只指定数组长度,由系统为数组元素分配初始值
      静态初始化:  String[] A=new String[]{"1","2"};//初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。
     
    6. 数组变量何时只是数组变量,何时代表数组对象本身?
        当数组变量引用数组对象的属性、方法的时候,就代表数组对象。
        没有引用就是数组变量。
        例子:
                   String A=new String[2];
                   System.out.println(A);//此时没有引用数组对象的属性方法,所以A是数组变量
                   System.out.println(A.length);//此时调用了数组对象的属性,所以A是数组对象
        结果:
                   [Ljava.lang.String;@533ded59   //为引用数组对象的地址
                   2                          //数组对象的长度
     
    7. 基本类型数组的初始化
        对于基本类型数组而言,数组元素的值直接存储在对应的数组元素中,因此基本类型数组的初始化比较简单:
        程序直接为数组分配内存空间,再将数组元素的值存入对应的内存里。
     
    8. 引用类型数组的初始化
        引用类型数组的数组元素依然是引用类型的,因此数组元素里存储的还是引用,它指向另一块内存,这块内存里存储了该引用变量所引用的对象(包括数组和java对象)。
     
    9. 基本类型变量的值存储在栈内存中,其实这句话是完全错误的。
       应该说:
                    所有局部变量都是放在栈内存里保存的,不管其是基本类型的变量还是引用类型的变量,都是存储在各自的方法栈区中;但引用类型变量所引用的对象(包括数组、普通java对象)则总是存储在堆内存中。
  • 相关阅读:
    USACO 3.3 A Game
    USACO 3.3 Camelot
    USACO 3.3 Shopping Offers
    USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
    USACO 3.3 Riding the Fences
    USACO 3.2 Magic Squares
    USACO 3.2 Stringsobits
    USACO 3.2 Factorials
    USACO 3.2 Contact
    USACO 3.1 Humble Numbers
  • 原文地址:https://www.cnblogs.com/JamKong/p/4447188.html
Copyright © 2020-2023  润新知