导航:首页 > 安装方法 > 方法里的变量存在哪里

方法里的变量存在哪里

发布时间:2022-01-07 08:06:23

‘壹’ java中的方法代码存在了哪里

类的实例方法在内存中是只有一份,不过肯定不会是第一个对象中,如果是第一个对象的话,那么当第一个对象被销毁的时候,那么后面的对象就永远无法调用了...
类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。

而静态的又不一样了,静态的东西存在静态区,他们和类是一个等级的,就是说只要类被装载,它们就可以直接用.(用类名来调用).他们不依赖与任何对象,所以也不能输出任何对象的成员属性.(除非成员属性也是静态的).

而你最后的一句话也是错的,"类的所有数据在内存中只有静态的才又空间".
当然不是,每个对象在new的时候都会在堆区中开辟内存,用来保存对象的属性和方法.(实际上方法保存的只是方法区的引用,如果保存的是方法本身,那么试想一下,有多少个对象就得有多少个方法,那么又和第一点中"实例方法在内存中只有一份拷贝"相矛盾了)

好了,事实上内存图很复杂和麻烦,算比较深的东西了,很多用JAVA多年的人也不太了解其原理,因为开发也不要用..

更多的问题可以去远标培训去问技术老师。

‘贰’ 在java里一个方法内部定义的变量比如说方法的参数还有方法体内定义的变量是不是放在栈内存中

是的,在栈中。如果是类成员变量放在堆中

‘叁’ c语言中的函数体存储在哪和变量的处理方式一样吗

现代计算机都是存储程序的冯-诺伊曼计算机,所有的程序,数据等都一视同仁,全部以相同的方式存储在计算机里,需要的时候再读入,所以函数体跟变量存储的方式是一样的,在内存中都是二进制代码,并不区分所谓的函数题还是变量,只是在你编译的时候,编译器会主动帮你区分函数体和变量,就是这样~~希望对你有帮助哦~~

‘肆’ JAVA中类中的方法存储在什么地方

类加载时 方法信息保存在一块称为方法区的内存中, 并不随你创建对象而随对象保存于堆中。可参考《深入java虚拟机》前几章。
另参考(他人文章):
如果instance method也随着instance增加而增加的话,那内存消耗也太大了,为了做到共用一小段内存,Java 是根据this关键字做到的,比如:instance1.instanceMethod(); instance2.instanceMethod(); 在传递给对象参数的时候,Java 编译器自动先加上了一个this参数,它表示传递的是这个对象引用,虽然他们两个对象共用一个方法,但是他们的方法中所产生的数据是私有的,这是因为参数被传进来变成call stack内的entry,而各个对象都有不同call stack,所以不会混淆。其实调用每个非static方法时,Java 编译器都会自动的先加上当前调用此方法对象的参数,有时候在一个方法调用另一个方法,这时可以不用在前面加上this的,因为要传递的对象参数就是当前执行这个方法的对象。

‘伍’ java中 static变量和方法到底是存在内存什么区域

JVM内存总体一共分为了
4个部分(stack segment、heap segment、code segment、data segment)
当我们在程序中,申明一个局部变量的时候,此变量就存放在了 stack segment(栈)当中;
当new 一个对象的时候,此对象放在了heap segment(堆)当中;
而static 的变量或者字符串常量 则存在在 data segment(数据区)中;
那么类中方法的话,是存在在 code segment(代码区)中了。

‘陆’ java虚拟机将方法中的局部变量包括类类型的局部变量存放在什么区啊

基本类型是存在栈中
非通过new创建的字符串对象是存在jvm的字符池中
其余的都存放在堆中

‘柒’ java非静态成员变量中的基本变量到底存在哪里

其实我觉得书上就想说:基本数据类型创建的值存在栈内存中,引用数据类型的值存在堆内存中,

配合上图详解:基本数据类型 int i=3;就是在栈内存中开个房子给 i,名字叫 i , 里面住着 3 。而 引用数据类型 String str="abc" 就是栈内存给它开后院,叫 str 去 堆内存地址为 0x2253的地方去住,所以引用类型的值存在 堆内存中,而栈内存中存的是它住的房号,也就是值所在的堆内存地址。

这样说不知道你能不能理解。但我想说:图自己画的,文字自己敲的,如果有错,请尊重回答者。

‘捌’ 函数局部变量到底存在什么位置

存在于它具体的函数参数中,定义于第一个具体的x或y的具体值。总的来说就是局部变量是函数内部定义的变量,其作用域是所在的函数。如果函数外还有一个跟局部变量名字一样的变量,
程序会认为它们两个是完全不同的两个变量。当退出函数的时候,其中的局部变量就同时被清除。如果你问的电脑的话上可以跳过,那是电析几何学的,电脑的话 局部变量是放在栈里面的,但是访问局部变量并不需要出栈,局部变量是通过栈偏移量直接访问的,函数返回时该函数的整个栈空间被回收。希望能帮到你。

‘玖’ java 变量名存储在哪里

首先声明一下一楼说的观点有误,对于栈和堆这里就不说了。
对于基本类型数据来说:
1) 局部变量
$范围:定义在一个方法内部的变量;
$作用域:其作用域为所在代码块,也称为临时变量、栈变量;
$生命周期:从创建开始到方法(函数)结束为止;
$特点:在使用之前必须要对其初始化;
$一律存放在栈中。
2) 实例变量
$范围:定义在一个类内部但不在方法中的变量;
$作用域:其作用域为整个类,能够被操作的范围是类的内部;
$生命周期:对象被创建的时候开始,对象被垃圾回收的时间结束;
$特点:如未定义其初值,系统会自动对实例变量进行默认初始化(默认值为null),使用之前必须创建类的实例;
$每一个对象的实例变量的值是相互独立的;
$一律存放在堆中。

对于复杂类型来说:
引用存放在栈中,而其所指向的值存放在堆中。

回答补充:我的以上陈述已经回答了你的问题,是你没有看懂而已,当然不用了!

‘拾’ java中成员变量放在哪

java中成员变量放在class类名下一行,如下位置:

packagecom.qiu.lin.he;

publicclassCeshi{
privatefinalinti=1;//成员变量的位置
privatefinalStringstr=null;

publicstaticvoidmain(String[]args){
char[]chars=newchar[1];
Stringstr="ABCDE1234";
chars[0]=str.charAt(0);
Stringtemp=newString(chars);
if(chars[0]>='A'&&chars[0]<='Z'){
System.out.println(str.replaceFirst(temp,temp.toLowerCase()));
}
}
}

阅读全文

与方法里的变量存在哪里相关的资料

热点内容
室外空翻训练方法 浏览:885
如何自制山楂酱的制作方法 浏览:857
凉皮和面的方法与步骤 浏览:538
快速拖延任务的方法 浏览:566
稿酬怎么计算方法 浏览:533
u型管窗帘安装方法 浏览:660
治疗湿气重采取什么方法 浏览:538
遮阳防雨网安装方法 浏览:604
颈椎畸形自我治疗方法 浏览:356
快速点屏方法 浏览:680
铁丝使用方法视频 浏览:639
弱电解决方法大全 浏览:543
香草的种类及食用方法 浏览:634
忐忑不安可用什么方法理解 浏览:29
从相册中选择手机墙纸方法 浏览:590
如何区分氯化钠和碳酸钠五种方法 浏览:945
蔬菜亚硝酸盐的检测方法 浏览:741
全新哈弗h6全包围脚垫安装方法 浏览:566
轨道接头怎么安装方法 浏览:727
弓形的鉴别方法 浏览:105