作用域

171 阅读1分钟

作用域决定了变量名的可见性和生命周期。在Java中是由大括号{}的位置决定的。

//作用域起点
{
    int x = 12;
    // 仅 x 变量可用
    {
        int q = 96;
        // x 和 q 变量皆可用
    }
    // 仅 x 变量可用
    // 变量 q 不在作用域内
}
//作用域终点

Java的变量只在其作用域内才可用。

由于Java是一种自由格式的语言,空格,制表符和回车,并不会影响程序执行的结果。

在Java中不能重复定义变量

    int x = 12;
    {
        int x = 96; // Illegal
    }
}

对象的作用域

Java对象与基本类型有不同的生命周期,当我们使用new关键字创建对象时,它的生命周期将会超出作用域。

{
    String s= new String("str")
}

在上列中,引用s在作用域终点前就结束了,但是引用s指向的字符串对象还在占用内存。虽然这个对象依然占用内存,但是我们无法在作用域之后访问这个对象。因为对它唯一的引用s已经超出作用域范围。

new出来的对象会一直存在内存当中,直到Java垃圾收集器检查出该对象不再可用,才会释放那些被占用的内存,供其他新对象使用。