zoukankan      html  css  js  c++  java
  • Java方法里参数的传递机制

    java方法里参数的传递分为基本数据类型和一用数据类型,首先说明一下基本数据类型和引用数据类型在方法里面参数的

    传递机制全部都是值传递机制

    值传递:将实参的数值(或者引用)赋值给形参,但是实参和形参完全是两个不相干的变量。

    接下来我们分别讲述基本数据类型和引用数据类型:

    基本数据类型的方法参数传递不会改变实参的值:

     1 package com.heima.work.demo;
     2 
     3 public class Methods {
     4     public static void main(String[] args) {
     5         int a = 3;
     6         int b = 7;
     7         jiaohuanzhi(a, b);
     8         System.out.println("a是" + a + "............" + "b是" + b);
     9         System.out.println("=====================");
    10         ceshi cs = new ceshi();
    11         jiaohuanyinyong(cs);
    12         System.out.println("实参a是" + cs.a + "     " + "实参b是" + cs.b);
    13 
    14     }
    15 
    16     private static void jiaohuanyinyong(ceshi cs) {
    17         int tamp;
    18         tamp = cs.a;
    19         cs.a = cs.b;
    20         cs.b = tamp;
    21         System.out.println("方法交换之后引用的a是" + cs.a + "b是" + cs.b);
    22         cs = null;//这里将形参引用断开,但是不会影响实参
    23 
    24     }
    25 
    26     private static void jiaohuanzhi(int a, int b) {
    27 
    28         int tamp;
    29         tamp = a;
    30         a = b;
    31         b = tamp;
    32         System.out.println("方法里交换之后的a的值是:" + a + "..........." + "b的值是:" + b);
    33 
    34 
    35     }
    36 }
    37 
    38 class ceshi {
    39     int a = 1;
    40     int b = 6;
    41 
    42 
    43 }

    运行结果是:

    可以看出对于基本数据类型来说,形参数值的改变并不会影响实参数值。参考下面的示意图:

    但是我们看上面的代码,引用数据类型的数值在经过方法的交换之后,里面的值确实发生了给变呀,接下来我们就对引用数据

    的值交换进行讲解:

    引用数据类型值交换:

    引用数据类型的参数传递也是值交换原理,只不过基本数类型是将数据值赋值给形参,但是引用数据类型是将引用地址赋值给形参:

    基本数据类型根本就不涉及内存,形参和实参没有任何的联系,但是引用数据类型形参和实参指向的是同一块内存空间,两个指向同一对象的引用,通过

    一个引用对对象操作另一个引用访问也会发生改变,因为内存中的数据已经改变,但是他们不是同一个引用,形参引用最后赋值为null,实参引用一样可以访问

    内存就是很好的证明。

    迎风少年
  • 相关阅读:
    解决MySQL报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents .....
    不安装Oracle客户端,用plsql连接远程Oracle数据库(绝对解决你的问题)
    Java中的String,StringBuilder,StringBuffer三者的区别
    字符串截取的常用方法
    java 项目 导入成功后jsp页面报错处理方法
    PL/SQL Developer安装详解(32位客户端免安装版)
    oracle 11g如何完全卸载
    Struts2下载文件点取消出现的异常解决
    Web框架们
    Django【进阶篇 】
  • 原文地址:https://www.cnblogs.com/ZYH-coder0927/p/13588465.html
Copyright © 2011-2022 走看看