⑴ 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()));
}
}
}
⑵ java中的方法代码存在了哪里
类的实例方法在内存中是只有一份,不过肯定不会是第一个对象中,如果是第一个对象的话,那么当第一个对象被销毁的时候,那么后面的对象就永远无法调用了...
类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。
而静态的又不一样了,静态的东西存在静态区,他们和类是一个等级的,就是说只要类被装载,它们就可以直接用.(用类名来调用).他们不依赖与任何对象,所以也不能输出任何对象的成员属性.(除非成员属性也是静态的).
而你最后的一句话也是错的,"类的所有数据在内存中只有静态的才又空间".
当然不是,每个对象在new的时候都会在堆区中开辟内存,用来保存对象的属性和方法.(实际上方法保存的只是方法区的引用,如果保存的是方法本身,那么试想一下,有多少个对象就得有多少个方法,那么又和第一点中"实例方法在内存中只有一份拷贝"相矛盾了)
好了,事实上内存图很复杂和麻烦,算比较深的东西了,很多用JAVA多年的人也不太了解其原理,因为开发也不要用..
更多的问题可以去远标培训去问技术老师。
⑶ JAVA中类中的方法存储在什么地方
类加载时 方法信息保存在一块称为方法区的内存中, 并不随你创建对象而随对象保存于堆中。可参考《深入java虚拟机》前几章。
另参考(他人文章):
如果instance method也随着instance增加而增加的话,那内存消耗也太大了,为了做到共用一小段内存,Java 是根据this关键字做到的,比如:instance1.instanceMethod(); instance2.instanceMethod(); 在传递给对象参数的时候,Java 编译器自动先加上了一个this参数,它表示传递的是这个对象引用,虽然他们两个对象共用一个方法,但是他们的方法中所产生的数据是私有的,这是因为参数被传进来变成call stack内的entry,而各个对象都有不同call stack,所以不会混淆。其实调用每个非static方法时,Java 编译器都会自动的先加上当前调用此方法对象的参数,有时候在一个方法调用另一个方法,这时可以不用在前面加上this的,因为要传递的对象参数就是当前执行这个方法的对象。
⑷ Java中的成员变量的引用存放在栈的什么位置
Java中的成员变量的引用是放在类实例所在的堆内存,没有放在栈中
⑸ java中私有的成员都放在哪个区区域中
Java私有成员不是放到那个区域中,一般你定义的方法给了私有限制,在同类中可以调用,不同类和不同包下都无法调用
⑹ java中一个类的方法是怎么存储的
java内存分析:
都是将内存分为三块
第一块内存区域是:栈
第二块内存区域是:堆
第三块内存区域是:方法区
栈空间里装的都是局部变量
堆空间里装的都是new出来的东西,特殊的对象 (非static修饰的全局变量是特殊的对象,在堆内存区域内)
方法区里装的都是基本类型常量和字符串常量、static修饰的全局变量、代码
⑺ java 成员变量在内存中的什么位置
一个完整的Java程序运行过程会涉及以下内存区域:
寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。
栈:保存局部变量的值,包括:1.用来保存基本数据类型的值;2.保存类的实例,即堆区对象的引用(指针)。
⑻ JAVA的静态成员静态方法存储在哪儿
T.i,但是静态变量得有初始值,否则会报错吧,我记得是,静态变量可以类名打点直接调用
⑼ java 成员变量的值放在内存的哪里
对象在堆中,而对象的数据成员当然是在对象的空间之中,因而对象的数据成员当然是在堆中了.
属于类的数据成员当然是在类的内存空间中,而类是装载在代码方法区的那个内存空间中的,而这个内存空间也是堆中的一部分,因此:属于类的数据成员当然是在堆中了.