• Java参数传递,值传递


    问题:Java 中参数的传递是以什么方式传递的?

    回答:

    1. Java中参数类型传递都是值传递
    2. 基本数据类型的值传递采用先对值进行拷贝再传递
    3. 对象类型的值传递传递的是对象的地址
    4. String 虽然是对象类型,但是它的参数传递方式和基本数据类型相同

    1. 基本数据类型先对值进行拷贝再传递

    
    public class ParameterPassingTest {
        public void function1(int a){
            a = 10;
        }
        public void function2(Dog dog){
            dog.setName("paul");
        }
        public void function3(String str){
            str = "changed";
        }
    }

    调用 function1() 查看当为基本数据类型的引用赋值时的变化:

    System.out.println("++++++++++++++++++++");
    System.out.println("a:" + a);
    passing.function1(1);
    System.out.println("a:" + a);
    System.out.println("++++++++++++++++++++");
    
    ++++++++++++++++++++
    a:11
    a:11
    ++++++++++++++++++++

    a 的值不变,说明对基本类型的引用赋值不改变原来的值

    2. 对象类型传递对象的地址

    public class Dog {
        private String name;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

    调用 function2() 查看当为对象类型的引用赋值时的变化:

    System.out.println("++++++++++++++++++++");
    Dog dog = new Dog();
    dog.setName("Mike");
    System.out.println("Dog:" + dog.getName());
    passing.function2(dog);
    System.out.println("Dog:" + dog.getName());
    System.out.println("++++++++++++++++++++");
    ++++++++++++++++++++
    Dog:Mike
    Dog:paul
    ++++++++++++++++++++

    name 改变:说明引用拿到了对象的地址,并通过地址对其值直接进行修改

    3. String 类型是特例

    System.out.println("++++++++++++++++++++");
    String str = "abc";
    System.out.println("str:" + str);
    passing.function3(str);
    System.out.println("str:" + str);
    System.out.println("++++++++++++++++++++");
    

    “`
    ++++++++++++++++++++
    str:abc
    str:abc
    ++++++++++++++++++++
    ““
    String 虽然是对象类型,但是其值传递结果和基本数据类型一样。

    4. 例题

    这里写图片描述

    这里写图片描述

  • 相关阅读:
    VI服务器
    LabVIEW编程技巧:网络通信中如何获取计算机名称、IP地址等信息
    Labview 局部变量
    TL431的几种常用用法
    s8550引脚图与电路图汇总分析
    齐二TK6916/20/26/32系列数控落地铣镗床简介8
    VBA Format函数 自定义格式中 0/#的区别
    [Excel VBA] Shape.Type属性名称及对应值列表
    如何另存(保存)不含宏
    我想一次性选择(或复制)工作簿中的多张表到另一工作簿
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185222.html
Copyright © 2020-2023  润新知