zoukankan      html  css  js  c++  java
  • Java——值传递与引用传递

    1.基本类型和引用类型在内存中的保存

    (1)基本类型的变量保存原始值,即它代表的值就是数值本身;

        基本类型在声明变量时就为它分配了空间;

        基本类型在参数传递过程中属于值传递,也就是复制一份数据到参数中。

     

    (2)引用类型的变量保存引用值

       ("引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。)

        引用类型在参数传递过程中数据引用传递,也就是将内存地址传过去。

     

    2.引用传递和值传递

    (1)值传递:

    方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法

    中的操作都是对形参这个值的修改,不影响实际参数的值。

     

      (2)引用传递:

     

        也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;

     

        在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。

     

     1 public class Test {
     2  public static void main(String[] args) {
     3      Test t = new Test();
     4      int score = 59;//这里传递的参数score就是按值传递
     5           
     6      Numbertest nt = new Numbertest();
     7      nt.num = 59;//这里传递的参数num就是引用传递
     8      
     9      t.addNum(score);
    10      System.out.println("3:"+score);
    11      
    12      t.addNum(nt);
    13      System.out.println("4:"+nt.num);
    14      
    15          
    16  }
    17  
    18  public void addNum(int score) {
    19        score++;            //1:60
    20 //     score=score++;      //1:59
    21 //     score=score+1;
    22      System.out.println("1:"+score);
    23  }
    24  
    25  public void addNum(Numbertest nt) {
    26      nt.num++;
    27      System.out.println("2:"+nt.num);
    28  }
    29  
    30 }
    31 
    32 
    33 
    34 public class Numbertest {
    35     
    36     public int num;
    37 
    38 }

    运行结果:
    1:60
    3:59
    2:60
    4:60

    此代码运行的结果就是最好的一个例子;

    在传递中也许还有更多的影响因素,随着学习的深入就会发现。

     

  • 相关阅读:
    数据库的逻辑结构与物理结构
    HTTP笔记整理(1)
    当我看懂这张图的时候很痛苦~~~
    软件测试面试分享(转)
    达梦(DM)数据库Linux部署安装
    进阶的小小测试~软件测试不得不知的基础知识
    软件测试分类
    浅说软件需求分析
    浅说《测试用例》----给测试新手的
    软件测试人员两极分化
  • 原文地址:https://www.cnblogs.com/ne709/p/9471426.html
Copyright © 2011-2022 走看看