【发布时间】:2014-10-06 18:53:09
【问题描述】:
我有一个类,我需要两个变量,一个是静态的,另一个是非静态的。我的问题是当我们声明两个变量时,我们可以用相同的名称声明它们吗?
为什么我问这个问题是静态变量和非静态变量存储在两个不同的区域(方法区域中的静态变量和堆区域中的非静态(实例)变量)。 那么,如果我用相同的名称声明它们会发生什么?如果错了,原因是什么?
【问题讨论】:
-
不,你不能在同一个类中声明两个同名的成员变量,不管一个是静态的,另一个不是。如果两个变量具有相同的名称,Java 无法知道您指的是哪个变量。
-
不能在同一个作用域(例如同一个类)中声明两个同名变量。问:为什么要尝试?就为了变态?
-
没有。变量名称在每个范围内必须是唯一的。类级别的静态与非静态没有不同的范围。
-
感谢您为我解惑
-
@FoggyDay:Java 允许您声明两个具有相同名称但参数列表不同的不同方法。为什么不是两个具有相同名称和不同存储类的不同变量?至少我能想到的一种编程语言(ruby)可以让你做到这一点。它在 ruby 中有效,因为引用类变量的语法与引用成员变量的语法不同。