java

什么是引用

  • java8种基本类型:byte/short/int/long/float/double/char/boolean

  • 不属于8种基本类型的所有类型都是引用类型(reference type),引用类型包括的主要实体有字符串、数组和文件流

  • 引用变量如下:

  • java不允许引用基本变量(基本变量即数据类型为8种基本类型的变量)

  • 引用变量只存储地址

对象和引用基础

  • 在Java中,对象是任何非基本类型的实例。
  • 基本类型的处理是按值的,即基本变量的假定值就存储在这些变量中,在赋值过程中,是从基本变量复制到基本变量。
  • 引用变量存储的是对变量的引用(变量存储的地址),实际对象存储在内存的某处,而引用变量存储对象的内存地址
  • 引用变量与基本变量的行为是不同的

点(.)运算符

点运算符用于选择用于对象的方法。

double theArea = theCircle.area()    //area是theCircle对象的一个方法,用于计算面积,并将存储在double类型的theArea变量中

注:theCircle可能存储着null引用(即所存地址不指向任何对象的地址),这种情况下,应用点运算符将会产生NullPointerException错误,导致异常终止

对象的声明

当声明引用变量时,只是提供一个名称,名称用来引用存储在内存中的对象

Button b;  //声明一个Button类型的引用变量b,此时存储在b中的值为null
b.setLable("NO");  //error,此行代码在试图改变不存在的对象 

分配对象唯一的常用方式是new

Button b;  //b是一个Button类型的引用对象,Button对象可以通过b引用
b = new Button();   //创建新对象,b引用已分配的对象
b.setLable("NO");  //将b的标签设为"NO"

也可以将声明和创建对象结合在一起

Button b = new Button();

垃圾回收(garbage collection)

  • 在java中,当创建的对象不再被任何对象变量引用时,会自动回收这些对象占用的内存
  • java虚拟机保证,一旦通过引用链无法访问一些对象,而运行时系统(java虚拟机)判断可用内存不足,那么会回收这些对象的内存

=的含义

a = b;
  • 若ab为基本变量:将b的值复制到a里,随后对a或b进行操作对彼此都没有影响
  • 若ab为引用变量:将b里存储的地址复制给a(即ab指向相同的对象),随后对a或b的操作对彼此都有影响

例子

假设需要两个Button对象,通过创建noButton得到第一个对象,然后修改noButton来创建yesButton

Button noButton = new Button("NO");
Button yesButton = noButton; //yesButton只是上一行创建对象的另一个名称
yesButton.setLable("YES");  //将拥有两个名称(yesButton/noButton)的对象标签值改为YES

注:对于对象来说,=是引用赋值不是对象复制,对象复制是要clone方法

数组

声明、赋值和方法

数组的声明

int [] array; 
array = new int [100];
for(int i=0;i<array.length;i++){
    array[i] = new Button();
}

   转载规则


《java》 fightingtree 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录