下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Java语言中的C++数组和作用域

作者:课课家教育     来源: http://www.kokojia.com点击数:1018发布时间: 2016-02-01 14:08:58

标签: java入门java语言java编程

大神带你学编程,欢迎选课

  几乎所有程序设计语言都支持数组。在C和C++里使用数组是非常危险的,因为那些数组只是内存块。若程序访问自己内存块以外的数组,或者在初始化之前使用内存(属于常规编程错误),会产生不可预测的后果(注释②)。

Java语言中的C++数组和作用域_java入门_java语言_课课家

  ②:在C++里,应尽量不要使用数组,换用标准模板库(Standard TemplateLibrary)里更安全的容器。

  java的一项主要设计目标就是安全性。所以在C和C++里困扰程序员的许多问题都未在Java里重复。一个Java可以保证被初始化,而且不可在它的范围之外访问。由于系统自动进行范围检查,所以必然要付出一些代价:针对每个数组,以及在运行期间对索引的校验,都会造成少量的内存开销。但由此换回的是更高的安全性,以及更高的工作效率。为此付出少许代价是值得的。

  创建对象数组时,实际创建的是一个句柄数组。而且每个句柄都会自动初始化成一个特殊值,并带有自己的关键字:null(空)。一旦Java看到null,就知道该句柄并未指向一个对象。正式使用前,必须为每个句柄都分配一个对象。若试图使用依然为null的一个句柄,就会在运行期报告问题。因此,典型的数组错误在Java里就得到了避免。

  也可以创建主类型数组。同样地,编译器能够担保对它的初始化,因为会将那个数组的内存划分成零。

  数组问题将在以后的章节里详细讨论。

  大多数程序设计语言都提供了“作用域”(Scope)的概念。对于在作用域里定义的名字,作用域同时决定了它的“可见性”以及“存在时间”。在C,C++和Java里,作用域是由花括号的位置决定的。参考下面这个例子:

  {

  int x = 12;

  /* only x available */

  {

  int q = 96;

  /* both x & q available */

  }

  /* only x available */

  /* q “out of scope” */

  }

  作为在作用域里定义的一个变量,它只有在那个作用域结束之前才可使用。

  在上面的例子中,缩进排版使Java代码更易辨读。由于Java是一种形式自由的语言,所以额外的空格、制表位以及回车都不会对结果程序造成影响。

  注意尽管在C和C++里是合法的,但在Java里不能象下面这样书写代码:

  {

  int x = 12;

  {

  int x = 96; /* illegal */

  }

  }

  编译器会认为变量x已被定义。所以C和C++能将一个变量“隐藏”在一个更大的作用域里。但这种做法在Java里是不允许的,因为Java的设计者认为这样做使程序产生了混淆。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程