用句柄操纵对象
虽说万物皆对象,但你操作的实际是指向对象的句柄。试着将对象想象成电视,句柄想象成句柄。只要你手中拿着遥控器(句柄Handle),你就能控制电视机(对象),想“换台”或“调声音的时候”,只要控制遥控器(句柄)就能控制电视(对象)了。
当然,遥控器可以在没有电视机的情况下,独立存在;也就是说,句柄并不一定要连接一,每当创建一个句柄的时候都要进行初始化:
String s=”asdf”;
上例中,String可以用文本初始化
必须创建所有的对象
关键字new的意思是”使我成为一个新的对象”(“Make me a new one of these objects”)。在Java编程中,创建新类型是基本操作。
作用域
在Java中,作用域是由花括号的位置决定的
{
int x = 12;
/* only x available */
{
int q = 96;
/* both x & q available */
}
/* only x available */
/* q “out of scope” */
}
在作用域中定义的变量,只能在当前作用域中使用,该作用域结束后则不能使用
对象的作用域
Java对象与主类型的存在时间不同。用new创建的Java对象可以超出作用域的范围之外。
如下例:
{
String s = new String("a string");
} /* 作用域的终点 */
那么句柄s会在作用域的终点处消失。然而,s指向的String对象依然占据着内存空间。在该例中,我们没有办法访问该对象,因为指向其的唯一一个句柄已超出了作用域的边界。