Java与C++语言在作用域上的差异浅析

Java与C++的编程思想虽然有一定的共同性,但是在很多方面仍然存在着不同 。如两者在作用域上仍然存在着很大的差异。下面笔者就分析一下这两门语言在 作用域上的差异,这里所提到的作用域包括变量作用域和对象作用域。

差异一:变量作用域的不同

如下面这段程序代码是符合C++语言的语法要求的。其可以在C语言下正常运 行。但是其在Java语言平台下编译的时候,就会被告知有错误。其格式、关键字 上面都没有错误。那么错误到底是这么呢?这就关系到变量的作用域。

{
     float y=3.15

     {

     float y=3.15

    }

}

作用域就决定了其定义的变量名的可见性与生命周期。在C++语言(包括其衍 生出来的其他语言)与Java语言中,都是用一定花括号来代表一个作用域的。如 上面的代码,就表示有两个作用域。外面一对花括号代表一级作用域;里面一对 花括号代表二级作用域,依次类推。通常情况下,一级作用域中定义的变量,对 其下级作用率都是有效的。也就是说,其下级作用域可以直接引用上级作用域中 定义的变量。但是在二级作用域中,可以更改一级作用率中设置的变量值,不过 这个更改只在二级作用域内部有效。如上面这个代码,在二级作用域中可以再定 义一个y变量,重新赋值。注意,其实在二级作用域中定义的变量与一级作用域 中定义的变量,虽然名字相同,但是他们不是同一个变量。如果此时在一级作用 域外,有其他代码引用这个y变量的话,则其的值仍然是3.14,而不会是3.15。 也就是说,在二级作用域中定义的变量,只在其内部有效。对于上级作用域是没 有丝毫影响的。也就是说,在作用域中定义的变量只在其作用域内有效。出了其 作用域外,其内部设置的变量就全部无效了。

这个作用域的设置其实Java语言与C++语言是类似的。但是在细节上Java语言 又多了一条限制。如上表的代码所示,虽然在上面的代码中变量y在两个不同的 作用域中定义,照理来说是两者是互不干涉,可以共存。但是在Java编译器中, 是不允许有这种情况存在的。把上面这个代码在Java编译器中编译的话,编译器 会通知程序开发人员,说这个变量y已经定义过。然后编译会以错误告终。虽然 在C++语言中在不同级别的作用域中定义名字相同的变量是允许的,而在Java语 言中则不行,这并不代表在变量的作用域上有所不同。其实从本质上来说,两者 变量的作用域是相同的。只是对于Java语言来说,其又多加了一条限制。在Java 语言中,即使作用域不同,其定义的变量名字也不能够相同。这主要是为了提高 Java代码的可读性,防止混淆才定义了这条规则。

时间: 2024-11-01 17:58:40

Java与C++语言在作用域上的差异浅析的相关文章

脚本语言 java vbs-各位大神,请问如何用脚本语言在word上进行连线操作

问题描述 各位大神,请问如何用脚本语言在word上进行连线操作 解决方案 用word录一个宏,看看宏代码

《Java学习指南》—— 1.3 Java与其他语言的比较

1.3 Java与其他语言的比较 Java虽是一种新语言,但是在其特性选择中,还汲取了其他语言多年以来的编程经验.花点时间来在较高的层面比较Java和其他语言是值得的,不管你是具有其他编程经验,还是需要搞清楚状况的新手,这都是有好处的.在本书中,我们不要求你具备任何特定编程语言的知识,并且当我们通过比较而提及其他语言的时候,我们希望这些说明是简单而直白的.如今一种通用语言至少要支持以下3点:可移植性.速度和安全性.图1-2显示了Java与其他几种流行语言的比较情况. "Java非常类似于C或C+

探讨Java与Ruby语言迁移时的安全性

在这篇文章中,我们将要探讨Java与Ruby语言迁移时风险预测方面的问题. 通常来说,"使用Ruby具有风险"是一种普遍的看法,这存在一定的原因.因为使用新的语言天生是有风险的.随着Ruby on Rails逐步进入到主流的开发领域中,这样的风险将会随时间逐渐降低,因为有逐步增长的开发者群.组件(或称作gems和plug-ins)相关的书籍.以及业务合作伙伴与你沟通交流.但同时你也可以听到主流的观点指出"使用Java是安全的".对于这种的观点,我持有强烈的反对意见.

【网络编程6】Java与C语言套接字Socket通信的例子

继上一篇博客<Java与Python套接字Socket通信的例子>,今晚又完成了Java与C语言套接字通信过程,经过一些调试,最后成功了.Github根链接是:https://github.com/1040003585/javanettextbook/tree/master/Java_C --惠州学院13网络工程 吴成兵 20160625 目录 目录 一 特别说明 1 C语言写客户端特别说明 2 Java服务器端特别说明 21 接收数据特别说明 22 发送数据特别说明 二 操作运行 1 操作步

java中的变量的作用域问题

问题描述 java中的变量的作用域问题 新人初学java,在变量的作用域这里卡了下 我知道全局变量和局部变量,但是如果我在main的开头就申明了一个变量,那这个变量应该是全局变量吧,下面所有的方法都可以调用这些变量,但是如果我在main函数中间申明了一个变量,那这个变量算什么?还算是全局变量吗?是不是只有后面的方法才能使用它,而在他之前的就不能用? 还有一个问题: File tmp; while(!list.isempty()){ tmp = (File)list.removeFirst ...

Groovy一种新兴的Java 2平台语言1.7.6发布

Groovy是一种新兴的 Java 2 平台语言.Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.Groovy 在 12月16日发布了两个版本,Groovy 1.7.6 是一个 bug 修复版本,而 1.8 Beta3 则包含一些新功能: ● extended command expressions can be used on the right-hand side of assignments ● the @Log AST transformation is cus

groovy v1.7.8发布 一种新兴的Java 2平台语言

Groovy是一种新兴的 Java 2 平台语言.Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用. Groovy 是 JVM 的一个替代语言 - 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同. Groovy界面 ● 是一个基于 Java虚拟机的敏捷 动态语言. ● 构建在

Groovy v1.7.10和1.8-rc-3发布 新兴的Java 2平台语言

Groovy是一种新兴的 Java 2 平台语言.Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用. Groovy界面 特点: ● 是一个基于 Java虚拟机的敏捷 动态语言. ● 构建在强大的Java语言之上 并 添加了从Python,http://www.aliyun.com/zixun/aggregation/13430.html">

Groovy v1.8发布 新兴的Java 2平台语言

Groovy是一种新兴的 Java 2 平台语言.Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用. Groovy 1.8发行说明如下: The 1.8 release of Groovy comes with many new features that greatly enhance ·the dynamic expressiveness o