局部变量与对象的存储
在Java中空间:
JVM栈空间(局部变量)
Heap堆空间(对象、数组)
在JVM栈空间中存储局部变量
在Heap堆空间中存储对象
在JVM中也存放对象类型的变量名称,其装载的为一串地址通过引用找到Heap堆空间(地址的复制)
1.分析下列程序运行结果:
public class Test{
public static void main(String[] args){
int n = 10;
m1(n);
System.out.println(n);
}
public static void m1(int n){
n++;
}
}
因为局部变量n定义在主函数内部,在m1函数当中的++操作在主函数中无效。
2.分析下列程序运行结果:
public class Test{
public static void main(String[] args){
int n = 10;
int result = m2(n);
System.out.println(result);
}
public static void m1(int n){
n++;
}
public static int m2(int n){
return n++;//返回的为当前的值n,返回过后再++
}
}
返回的为当前的值n,返回过后再++
3.分析下列程序运行结果:
public class Test{
public static void main(String[] args){
int array = {11,22,33};//定义了一个数组array
m3(array);//调用m3()
System.out.println(array[0]);//此处输出的为array的第0个元素
}
public static void m1(int n){
n++;
}
public static int m2(int n){
return n++;//返回的为当前的值n,返回过后再++
}
public static void m3(int[] nums){
nums = java.util.Arrays.copyOf(nums,nums.length*2);//该过程得到的数组为nums,扩容的是形式参数(局部变量)
nums[0] = 88;
}
}
4.分析下列程序运行结果:
public class Test{
public static void main(String[] args){
int[] form = {1,2,3,4,5,6};
m4(form);
System.out.println(form[0]);
}
public static void m1(int n){
n++;
}
public static int m2(int n){
return n++;//返回的为当前的值n,返回过后再++
}
public static void m3(int[] nums){
nums = java.util.Arrays.copyOf(nums,nums.length*2);//该过程得到的数组为nums,扩容的是形式参数(局部变量)
nums[0] = 88;
}
public static void m4(int[] to){
to[0] = 888;
}
}