zoukankan      html  css  js  c++  java
  • 4.2Java参数传值机制

    4.2Java参数传值机制

    在Java中,方法中所有参数都是"值传递",也就是"传递值的副本"

    我们得到的是"原参数的复印件,而不是原件"。复印件不会影响原件

    本章内容

    • 基本数据类型参数的传递

    • 引用类型参数的传递


    基本数据类型参数的传递

    传递的是值的副本,不会影响原件。

    引用类型参数的传值

    • 传递值得副本,引用类型指的是"对象的地址",副本和原参数都指向了同一个"地址"

    • 改变"副本指向地址对象的值意味着原参数指向对象的值也发生了改变"---无论原件还是复印件指向对象的地址发送改变都可以使对象属性发生改变

    实例:

    /**
    * 测试参数传值机制
    * @author Lucifer
    */
    public class UserNo4 {
       int id;
       String name;
       String pwd;

       //写一个方法
       public UserNo4(int id, String name){
           this.id = id;
           this.name = name;
           return;
      }

       //再写一个方法
       public void testParameterTransfer01(UserNo4 u){
           u.name = "JunkingBoy";
           return;
      }


       //再写一个测试方法
       //public void testParameterTransfer02(UserNo4 u){
           //u = new UserNo4(19,"Harden");
           //return;
       //}


       //main方法
       public static void main(String[] args) {
           UserNo4 u1 = new UserNo4(18,"Lucifer");
           u1.testParameterTransfer01(u1);
           System.out.println(u1.name);

           //u1.testParameterTransfer02(u1);
           //System.out.println(u1.name);
      }
    }

    解析视图:

    实例2:

    /**
    * 测试参数传值机制
    * @author Lucifer
    */
    public class UserNo4 {
       int id;
       String name;
       String pwd;

       //写一个方法
       public UserNo4(int id, String name){
           this.id = id;
           this.name = name;
           return;
      }

       //再写一个方法
       public void testParameterTransfer01(UserNo4 u){
           u.name = "JunkingBoy";
           return;
      }


       //再写一个测试方法
       public void testParameterTransfer02(UserNo4 u){
           u = new UserNo4(19,"Harden");
           return;
      }


       //main方法
       public static void main(String[] args) {
           UserNo4 u1 = new UserNo4(18,"Lucifer");
           u1.testParameterTransfer01(u1);
           System.out.println(u1.name);

           u1.testParameterTransfer02(u1);
           System.out.println(u1.name);
      }
    }

    解析视图2:

    特点概括

    特点:

    • 传递的是值、变量的地址而不是变量的本身。

    • 多个变量指向一个值是指通过上一题的创建对象传入u1开始两个对象的地址一致。

    • 方法完成后即关闭,回到内存分析一讲中。这时候在建新对象就会指向另一个对象的地址

    It's a lonely road!!!
  • 相关阅读:
    东芝线阵CCD芯片TCD1305DG驱动时序设计
    数字电路中应避免产生不必要的锁存器 Latch
    准双向口、开漏输出、推挽输出结构介绍
    边沿检测电路小结
    数字系统中的亚稳态及其解决办法
    launch edge 和 latch edge 延迟
    基于Verilog的偶数、奇数、半整数分频以及任意分频器设计
    找到了救命的东西 NVIDIA MPS (multi-process service)
    关于多个程序同时launch kernels on the same GPU
    java的System.currentTimeMillis()和System.nanoTime()
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14613111.html
Copyright © 2011-2022 走看看