正在加载图片...
还未进行初始化就使用了这些内存(很常见的编程错误),那么很有可能会 发生一些无法预料的后果。 安全性是Java最看重的目标之一,因此许多困扰C和C++程序员的问 题在Java里面已经不复存在了。数组肯定会被初始化,而要想访问数组 以外的内存也已经不可能了。边界检查的代价就是,每个数组都会多占用 些内存,而且程序运行的时候也会有些开销。不过设计者们相信,与安 全性的增强和编程效率的提升相比,这点代价值。 当你创建对象数组的时候,实际上你是在创建 reference的数组。这些 reference会被自动地初始化为一个特殊的值:null。这是个关键词,意 思就是“没有”。Java一看到n山l就知道这个 reference没有指向任 何对象。使用 reference之前,你必须用对象对它进行赋值,如果你试 图用一个仍然是nu的 reference,那么程序运行的时候就会报错。由 此,Java防止了许多常见的数组错误。 你可以创建 primitive的数组。编译器也会进行初始化,因为它会把数组 的内存全部清零 以后章节会更详细的讲解数组。 你永远不需要清理对象 在绝大多数编程语言中,要弄清变量生命周期的概念都会耗费大量的精 力。变量要生存多长时间?如果要由你来进行清理,那么应该在什么时候 进行清理?在变量生命周期方面含糊其辞,会导致很多bug。这一章会告 诉你,Java是怎样通过接管所有的清理工作来大大简化这个问题的 作用域 绝大多数过程语言都有“作用域( scope)”的概念。它决定了在这个作用 域里定义的变量的可见性与生命周期。在C,C++和]ava中,作用域是 由花括号{}的位置决定。所以,假如 int x =12 // Only x available tq=96 / Both x &g available / Only x available // g" out of scope" 在作用域中定义的变量只能用到这个作用域的结尾。 第6页共26页shhgs@wgqqh.com ￾ 6 ✁ ✂ 26 ✁ ë%&f^çˆ, ̟{(Š· (á℅) YZŠmÝ;º ì03ÌÜ?(Å ˆc# Java b<(au3 æò0V C  C+ + âFQ(² F Java ˶ôõX6{F,OHOº¹f^ à%|±²OH E½(Ÿ{[ôõXÝ;,?(¸Í L×OHƺVˆ 3̟{ àâF†&(M[ºmÌX^ š"> „ˆ c#(áâØ·() >8 C¸ÍÕ ¡~¥OH(M ñ`J¡F~ reference (OH Ì reference º¹ý rf^™3×1\(Õnu l l ב³ ¹ ’͜mÏJava 3<g nu l l½t × reference œmZ‡ ¥çˆ reference u ¡'(ˆ¥¥A%&!Õ ÄÅ¡" #ˆ3×Û nu l l( reference YZâF†&(Mº$„, ò Java %+,0V· (OH„… ¡ÝE~ p ri m iti ve (OHáf[º%&f^ æ™AºPOH (Ÿ{c&' Eûߺ((©£OH  F)ÂVOáâƒ* %*&5ª0»¼@(Ö+ƺ,-ª(A ã5ª%0{VÊ4Ê ÄÅ%,¡Q%&&¢ YZvwFöZM %&&¢Ê F5ª0»¼@µ¶./§0 º1_ŠV b u g  3ûº# ¡ Java Õ¦^UÂDm(&¢y1QÂÂ]^ ײ(  )ÂVO^âƒÆmÍ1ˆ2 (scope)Ï(Ö+ANO,F ×1ˆ 2ËO3(5ª(Ý #„0»¼@F C C+ +  Java * 1ˆ2 ,/Œ{ }(§¨NODE 9Ä { int x = 12; // Only x available { int q = 96; // Both x & q available } // Only x available // q “out of scope” } F1ˆ2*O3(5ªó;ˆg ×1ˆ2(45
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有