zoukankan      html  css  js  c++  java
  • 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. 例题

    这里写图片描述

    这里写图片描述

  • 相关阅读:
    Ext.form.TextField组件
    provider: SQL Network Interfaces, error: 26 Error Locating Server/Instance Specified解决办法
    SQL Server访问远程数据库和Linked Server
    C#程序实现动态调用DLL的研究
    把DLL文件打包进EXE的技巧
    C#读取媒体信息
    C# 集合类
    Server Application Unavailable 【Failed to execute request because the AppDomain could not be created.】的解决办法
    比较全的字符串验证类
    如何用VS2005制作Web安装程序
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185222.html
Copyright © 2011-2022 走看看