java常见面试考点(八):成员变量与局部变量

java常见面试考点

往期文章推荐:
  java常见面试考点(三):类初始化与实例初始化
  java常见面试考点(四):方法的参数传递机制
  java常见面试考点(五):基本类型和包装类型的区别
  java常见面试考点(六):深入理解String类型
  java常见面试考点(七):递归与迭代


【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权);

本博客的内容来自于:java常见面试考点(八):成员变量与局部变量

学习、合作与交流联系q384660495;

本博客的内容仅供学习与参考,并非营利;


一、考题如下

public class Test{
	static int s;
	int i;
	int j;
	{
		int i=1;
		i++;
		j++;
		s++;
	}
	public void test(int j){
		j++;
		i++;
		s++;
	}
	public static void main(String[] args) {
	    Test t1= new Test();
	    Test t2 = new Test();
	    t1.test(10);
	    t1.test(20);
	    t2.test(30);
	    System.out.println(t1.i+","+t1.j+","+t1.s);
	    System.out.println(t2.i+","+t2.j+","+t2.s);
	}
}

猜猜看结果如何?

二、成员变量与局部变量

  1. 声明的位置
    局部变量:方法体{}中,形参,代码块{}中;
    成员变量:类中方法外;
    类变量:有static修饰;
    实例变量:没有static修饰;
  2. 修饰符
    局部变量:final;
    成员变量:public、protected、private、final、static、volatile、transient;
  3. 值存储的位置
    局部变量:栈 ;
    实例变量:堆;
    类变量:方法区;
  4. 作用域
    局部变量:从声明处开始,到所属的}结束;
    实例变量:在当前类中“this.”(有时this.可以缺省),在其他类中“对象 名.”访问;
    类变量:在当前类中“类名.”(有时类名.可以省略),在其他类中“类名.” 或“对象名.”访问;
  5. 生命周期
    局部变量:每一个线程,每一次调用执行都是新的生命周期;
    实例变量:随着对象的创建而初始化,随着对象的被回收而消亡,每一个对象 的实例变量是独立的;
    类变量:随着类的初始化而初始化,随着类的卸载而消亡,该类的所有对 象的类变量是共享的;

1 局部变量与实例变量重名 ,在实例变量前面加“this.”。
2 局部变量与类变量重名 , 在类变量前面加“类名.”。

三、实验结果

2,1,5
1,1,5

最终结果如下,你做对了吗。

四、总结

  这类型的题目需要仔细分析堆栈内存情况,记住每种变量的作用域范围,就近原则

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天的爱人是绿色

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值