JavaEE程序猿之传值还是传址(18)

    xiaoxiao2025-07-26  6

    在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
    最新回复(0)