java 变量重名_关于java中变量的重名问题

在java语言中,变量的命名有很多规则和规范,但是有的地方可以使用相同的变量名,有的地方却不能使用,这是为什么呢?

下面是个人的一点见解,是从作用域和内存来分析的,目的是为了方便理解

大家可以看下面这段代码:

public class Test01 {

//static int a =1;//所有的对象都有这个,所有不能重名

int a=5;//单个对象的属性,在堆中存储

public static void main(String[] args) {

int a=10;//方法区存储

{

//int a =15;//这是个语句块,也在方法区存储,不能重名

}

}

}

上面一共写了四种变量,都同名,静态变量,成员变量,局部变量和块里的变量

一般来说,静态变量是存储在方法区或者叫数据共享区,作用范围是整个类,是从自己声明开始到这个类结束,所以之后的类中不能再出现和他相同名字的变量,不管是成员变量,还是局部变量

成员变量是在堆中存储,是对象的属性,作用域是当前对象,局部变量是在方法区存储的,作用域是从当前到这个方法最后,两者不影响,所以这两个是可以同名

然后是局部变量之间,他们都是在方法区内,作用域的范围是自身到所处大括号的结尾之间,这个范围内不能出现同名的变量

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值