• Practical Java (一)关于reference


    Practice 1, 4, 7, 8

    1.

    参数传递:by value or by reference

    变量型别:reference 和 primitive

    Java中的变量分为两种:reference type和primitive type(built-in type)

    只有少数最常用的变量是primitive type,这些primitive type又会有对应的外覆类(wrapper class)

    primitive types wrapper class
    boolean Boolean
    char Character
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double

    我们平时看到的class变量,本身存储的都是指针(地址)

    所以在函数调用传递参数的时候,如果遇到reference type传递的都是指针

    如果遇到的是primitive type,传递的就是实际的值

    2.

    array 和 Vector

    2.1 array

    新建array

    int[] a = new int[N];

    对比C++中的动态数组,array有额外功能。一旦index超出数组范围就会在运行期产生ArrayIndexOutOfBoundsException异常。

    array之内不同型别的元素的缺省值

    type default
    boolean false
    char 'u0000'
    byte 0
    short 0
    int 0
    long 0
    float 0.0
    double 0.0
    object reference null

    对比array,当更多元素被加入vector并且超出容量时,其体积会动态增长;在某个元素被删除之后,后面的元素会依次前移。

    vector运用了[以java.lang.Object为元素型别]的array作为其底部结构,所以vector只能容纳object references,不能容纳primitive type

    3.

    释放内存

    Java垃圾回收机制(garbage collection)负责回收不再被使用的内存。程序员不需要显式释放内存。但是可以将不再使用的reference设为null,以协助垃圾回收器取回内存。

    需要时也可以显示调用垃圾回收器,system.gc();

    最后是自己想的一部分

    关于wrapper class和别的类是不太一样的

    它具有一些primitive type的属性

    比如传参的时候,Integer x = 10,传入x,然后修改 x = 0; 函数调用完后,输出x还是10;

    即使修改时用x = new Integer(0);调用后的输出还是不变,为10

    其他还有一些特殊性,见http://blog.csdn.net/apei830/article/details/4533828

  • 相关阅读:
    All about Python
    All about TestComplete
    All about Ranorex
    围观大神们的博客
    CRP实施方法论(转)
    启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)(转)
    soapUI学习笔记---断言的小使用(转)
    soapUI学习笔记--用例字段参数化(转)
    常用功能测试点汇总(转)
    记一次性能测试实践1
  • 原文地址:https://www.cnblogs.com/Gryffin/p/5063244.html
Copyright © 2020-2023  润新知