zoukankan      html  css  js  c++  java
  • 深入了解java值传递

    深入了解java值传递

    参考:

    https://www.jb51.net/article/117083.htm

    https://blog.csdn.net/qq_26542493/article/details/103898866

     

     

    Java只有值传递

    值传递-传递的是基本数据类型值(区分下午引用传递,称“值”传递)

    指在调用函数时,将实际参数复制一份传递给函数,这样在函数中修改参数时,不会影响到实际参数。值传递是针对与基本数据类型来说的,一般的基本数据类型的变量和值是存在虚拟机栈中的,在传参的时候将栈中存储的值复制一份传递到形参中。

    值传递-传递对象类型的引用地址(又叫引用传递)

    引用传递是针对与对象类型来说的,其实引用类型也是值传递,只不过传递的内容是一个引用地址。

    注意我们口头上常说的值传递是指白话文里的:传递给形参的内容是个值。上面的“值”转递有点差别,和引用传递都是值传递,做区分也只是针对值的数据类型做的区分,本质上它们都是传递值。

    public class ObjectTrans { 
        
      public static void main(String[] args) { 
        String name = "123"; 
        SChange(name);  // String是对象,传递的值是引用地址
        System.out.println(name); 
      } 
          
      public static void SChange (String str) {   
        str = "234"; // String值不可变,所以重新开辟空间,str指向新的空间
      }  
        
    }

    str赋值前:

     

    str赋值后:

     

    如果使用字符串变量,不会开辟新的空间,name和str指向的还是同一块空间。

    public class ObjectTrans { 
        
      public static void main(String[] args) { 
        StringBuilder name = new StringBuilder("123"); 
        SChange(name); 
        System.out.println(name); 
      } 
          
      public static void SChange (StringBuilder str) {   
        //str = "234"; 
        str.append("234"); 
      }  
        
    }

     

    前进时,请别遗忘了身后的脚印。
  • 相关阅读:
    最大的错误就是没有把自己的软件开发事业当 作一桩生意来看待
    python:open/文件操作
    Python 之ConfigParser
    Python 之ConfigParser
    Python 之ConfigParser
    python的time模块使用
    python的time模块使用
    python的time模块使用
    国外、国内各大OJ
    国外、国内各大OJ
  • 原文地址:https://www.cnblogs.com/liudaihuablogs/p/13462691.html
Copyright © 2011-2022 走看看