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!!!
  • 相关阅读:
    优雅解决Windows版Emacs的home路径的问题
    不容忽视的警告:默认库msvcrt.lib与其他库的使用冲突,请使用/NODEFAULTLIB:library
    搜狗浏览器也可以直接安装Chrome插件,太棒了
    给phpMyAdmin修改root密码后出现访问被拒绝的问题的解决办法
    给Eclipse替换镜像
    centos7 添加系统盘作为本地yum源
    python的学习内容
    列表
    Oracle-创建用户和表空间
    linux下oracle的启动和停止
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14613111.html
Copyright © 2011-2022 走看看