在C和C++的世界里,会有指针的概念,也会有传值还是传址的概念;但是Java中没有指针,也没有传址的概念,但是跟传址很类似的是有引用的概念;竹迩经常说:不要纠结这些名词,直接来看看结果;
针对上篇讲的对象的内存模型,我们来看看下面两道例题:
PS:程序中有两个概念
实参:真正要传递的定义好的有值的变量;
形参:方法中定义的输入参数,在方法调用时才能够被使用
其实竹迩决定这两个概念实在没搞懂也可以先放下,先用起来才是王道;
OK,直接上案例:
案例1:
这道题的结果是:
Before:true
In:false
After:true
创建变量 test = true
将test赋值给方法test(boolean test)中,产生新的变量test = true
方法中的test变量值变为false,但是不影响出方法后的test依然为true
案例2:
这道题的结果是:
Before:hello
In:hello,hello world
After:hello,hello world
产生一个引用变量:string = “hello”
讲string变量值赋值给test(StringBuffer str)方法中的str
改变str的值
可以看到,案例1是基本类型变量,将test传入方法改变为false,但是出方法后依然是true;
案例2是引用类型变量,讲test传入方法改变为hello,hello world,出方法后test本身的值就变成了hello,hello world;
看似同样的过程,但是结果完全不一样就是因为变量的不同内存模型决定的;
转载请注明原文地址: https://ju.6miu.com/read-1301082.html