java的内存主要的部分就是堆和栈(当然还有方法区,程序计数器,本地方法栈)。java 的数据类型又分有基本基本数据类型和引用数据类型。这两种有什么存储的区别呢
java基本数据类型:java是在栈中进行值存储
java引用数据类型:在栈中是存储的对象的引用,实际对象是在堆中存储
为什么java对基本数据类型在栈中存储值呢,这是因为基本数据类型的内存大小是固定的(如 int 4个字节);
再说一下 :java方法调用时的参数传递
1.基本数据类型进行的是值copy 2.引用数据类型进行的是引用copy 总之就是把栈中存储的内容进行了copy,而方法的每个参数都是一份新的copy,在栈中有一份新的空间
public class Test {
public static void intTest(int i){
i = 10;
System.out.println(i);
}
public static void personTest(Person p){
p.setName("test");
System.out.println(p.getName());
p = new Person();
p.setName("test1");
System.out.println(p.getName());
}
public static void main(String[] args) {
int i = 100;
intTest(i);
System.out.println(i);
Person p = new Person();
personTest(p);
System.out.println(p.getName());
}
}
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
运行结果:
10
100
test
test1
test
浙公网安备 33010602011771号