java变量 值的改变 问题
3个回答
展开全部
1.
变量名(a,b...)本身是一个地址,而变量的值是在内存中分配的实际的内存数据,比如int a=1,就是指a这个地址指向存放了字面量数据1的内存数据。
2.
变量值的改变是变量表示的地址的改变,差不多就是你说的意思
3.
不能说基本数据类型都存在于栈,这是不准确的,首先你要搞清楚线程这个概念,java运行中,每一个线程都维持一个线程栈(也可以说成方法栈,因为线程就是运行你的方法代码的),线程栈由一个个栈帧组成,每一个栈帧都表示一个方法的调用(处于栈顶的栈帧就是当前正在运行的方法),所以可以知道,方法中的变量都是存放在栈帧(栈)中的,如果变量引用的是对象,由于对象还是得在堆中分配,那么就会有一个栈中的变量指向堆中的一个对象。但是一个类本身可以有实例变量啊,如果这个变量是一个基本类型的话,那这个变量就存在于堆中了啊,也就是说基本数据类型也可以存放在堆中啊。
4.
对象的实体确实是存放在堆中没错啊
还有什么不懂可以继续问。
变量名(a,b...)本身是一个地址,而变量的值是在内存中分配的实际的内存数据,比如int a=1,就是指a这个地址指向存放了字面量数据1的内存数据。
2.
变量值的改变是变量表示的地址的改变,差不多就是你说的意思
3.
不能说基本数据类型都存在于栈,这是不准确的,首先你要搞清楚线程这个概念,java运行中,每一个线程都维持一个线程栈(也可以说成方法栈,因为线程就是运行你的方法代码的),线程栈由一个个栈帧组成,每一个栈帧都表示一个方法的调用(处于栈顶的栈帧就是当前正在运行的方法),所以可以知道,方法中的变量都是存放在栈帧(栈)中的,如果变量引用的是对象,由于对象还是得在堆中分配,那么就会有一个栈中的变量指向堆中的一个对象。但是一个类本身可以有实例变量啊,如果这个变量是一个基本类型的话,那这个变量就存在于堆中了啊,也就是说基本数据类型也可以存放在堆中啊。
4.
对象的实体确实是存放在堆中没错啊
还有什么不懂可以继续问。
展开全部
说的不对,比如基本类型,不是栈里是应用,堆里是值。而是把值直接保存在栈里。
比如:int
a
=
3,这里就直接在栈里保存了一个3。
1,那么变量分配的内存存放的就是一个引用地址?变量的值的改变是引用地址的改变?
对于对象类型,比如,Person
p
=
new
Person();,这里p=内存地址(32位),实际的Person存放在堆里。
对于原类型,直接把值存放在栈中。
2,还有基本数据类型都存放在栈?对象的实体不是存放在堆吗?
基本类型,也有存放在堆中的,不能一概而论,一般来说,一个方法内部用到的基本类型,肯定存放于栈中。
关于堆栈的文章,推荐你看一下:http://blog.csdn.net/houzhaoling/article/details/7291362
比如:int
a
=
3,这里就直接在栈里保存了一个3。
1,那么变量分配的内存存放的就是一个引用地址?变量的值的改变是引用地址的改变?
对于对象类型,比如,Person
p
=
new
Person();,这里p=内存地址(32位),实际的Person存放在堆里。
对于原类型,直接把值存放在栈中。
2,还有基本数据类型都存放在栈?对象的实体不是存放在堆吗?
基本类型,也有存放在堆中的,不能一概而论,一般来说,一个方法内部用到的基本类型,肯定存放于栈中。
关于堆栈的文章,推荐你看一下:http://blog.csdn.net/houzhaoling/article/details/7291362
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
所有对象都是在堆里
栈里是引用地址
基本数据类型
比如int
a=1;
a在堆里1在栈里
栈里是引用地址
基本数据类型
比如int
a=1;
a在堆里1在栈里
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询