为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA 关于局部变量引用局部变量的问题?

JAVA 关于局部变量引用局部变量的问题?

sonyqqq 2017-04-29 23:24:21
这是方法名{        int a=1;         int b=a;              b=2;  }问:1、b引用a时,b是分配空间把a的内容复制到b 还是b只是一个地址 跳转到a2、当b修改成2时,a会跟着被修改2吗?3、对象引用对象 和 变量引用变量 有区别吗?  如果有, 区别在哪?新手自学遇到这些问题,望解答 谢谢
查看完整描述

3 回答

已采纳
?
风中打伞的小孩

TA贡献73条经验 获得超20个赞

int是基本数据类型,

编译器处理int a = 1;首先它会在栈中创建一个变量为a的引用(int类型),然后查找有没有字面值为1的地址,没找到,就开辟一个存放1这个字面值的空间,然后将a指向1的所在空间地址。

int b=a; a的引用所指向的字面值为1的地址,赋值给变量b的引用,即:a,b指向同一个字面值为1的地址

b修改为2后,b会重新查找,然后指向字符值为2的地址,a不会修改

基本数据类型和引用数据类型的变量,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于对象类型来说,这块区域包含的是指向真正内容的指针。

---------------------------------------------------------------------------------------------------------------仅个人理解


查看完整回答
1 反对 回复 2017-04-30
  • 风中打伞的小孩
    风中打伞的小孩
    我解释不清楚,但是我感觉静态变量是和实例变量是在一起比较的,它们都是相对于类而言的 不过,可以这样试一下,然后记住结果!
?
风中打伞的小孩

TA贡献73条经验 获得超20个赞

public class imook{
	static int a=3;
	static Integer ab=new Integer(a);
	
    public static void main(String[] args){
    	int b=3;
    	Integer ba=new Integer(b);
    	if(a==b){
    		System.out.println("123");
    	}
    	if(ab.equals(ba)){
    		System.out.println("321");
    	}
	}
}


查看完整回答
反对 回复 2017-05-01
  • sonyqqq
    sonyqqq
    谢谢你。又查了一些资料,感觉似懂非懂。也许再学多一段时间就能理解了,自学没人带就是难。
?
慕哥7619466

TA贡献13条经验 获得超0个赞

如下。

查看完整回答
反对 回复 2017-04-30
  • 3 回答
  • 0 关注
  • 2459 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信