方法参数(值调用,引用调用)

Java程序设计语言总是采用按值调用。也就是说,方法得到的总是所有参数的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。

double percent = 10;
harry.raiseSalary(percent);
//方法调用之后,percent的值还是10

然而,方法参数共有两种类型:

1.基本数据类型(数字、布尔值)

2.对象引用

方法得到的是对象引用的拷贝对象引用及其它的拷贝同时引用同一个对象。

public static void swap(Employee x, Employee y){
  Employee temp = x;
  x = y;
  y = temp;
}

a不会变成引用Bob,b也不会变成引用Alice

Employee a = new Employee("Alice",....);
Employee b = new Employee("Bob",....);
wamp(a,b);

总结Java中方法参数的使用情况:

1.一个方法不能修改一个基本数据类型的参数(既数值型或布尔型)

2.一个方法可以改变一个对象参数的状态

3.一个方法不能让对象参数引用一个新的对象

原文地址:https://www.cnblogs.com/chenzida/p/9286271.html

时间: 2024-08-05 00:30:04

方法参数(值调用,引用调用)的相关文章

【解惑】Java方法参数是引用调用还是值调用?

最近找实习,在笔试时候做了下面这道题:求下面代码的输出结果. public class MyClass { static void aMethod(StringBuffer sf1,StringBuffer sf2){ sf1.append(sf2); sf2=sf1; } public static void main(String[] args){ StringBuffer sf1=new StringBuffer("A"); StringBuffer sf2=new String

java 方法参数-值调用,引用调用问题

(博客内容来自于core java卷一) 1. xx调用:程序设计语言中方法参数的传递方式: 引用调用(call by reference):表示方法接收的是调用者提供的变量地址. 值调用(call by value):表示方法接收的是调用者提供的值. 命名调用(call by name):已经成为历史. 2. Java使用值调用,而且只有值调用.也就是说方法得到的是参数值的一个拷贝,并不是参数值本身,所以,方法不能修改传递给它的的任何参数变量本身. 看下面代码: public class te

第三周 7.17LJY关于方法参数的一些理解

在java中采用的是按值调用.也就是得到的是变量的一个拷贝 class Text22 { static int i = 1; public static void main(String[] args) { System.out.println(triple(i)); System.out.println(i); } public static int triple(int x) { int result = x * 3; return result; } } 其输出结果为3, 1;所以方法参数

方法参数的调用是值调用而不是引用调用

方法参数的调用是值调用而不是引用调用 package com.ray.object; /** * 方法参数的调用是值调用,而不是引用调用 * * @author ray * @since 2015-04-22 * @version 1.0 * */ public class Person { private static void swap(Person a, Person b) { Person temp = a; a = b; System.out.println("a:" + a

c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)

 一.方法参数的类型----值类型和引用类型 当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中即实参和形参中的数据相同但存放在内存的不同位置.所以,在目标方法中对形参所做的更改不会对调用者的初始变量产生任何影响. 当方法传递的参数是引用类型是,只是将变量的引用复制到目标参数中,实参和形参的引用指向内存中的同一位置.所以,在目标方法中对形参所做的更改会影响调用者的初始变量. 二.一些特殊的方法参数 1.引用参数---ref (使值类型的变量做方法参数时也可以传引用) 一些数据类型(

C#方法参数--值参数,引用参数,输出参数

值参数: 使用值参数,通过复制实参的值到形参的方式,把数据传递到方法,方法被调用的时候,系统做如下操作: 在栈中为形参分配空间: 复制实参到形参. 注意:一个值参数的实参不一定是变量,它可以是任何能够计算成相应数据类型的表达式. 在把变量用作实参之前,变量必须被赋值(除非是输出参数,这个稍后介绍),对于引用类型,变量可以设置成实际引用或者Null. 引用参数: 使用引用参数时,必须在方法的申明和调用中都使用关键字ref修饰符. 实参必须是变量,在用作实参前必须被赋值.如果是引用类型的变量,可以赋

Java调用方法参数究竟是传值还是传址?

之前阅读<Head First Java>的时候,记得里面有提到过,Java在调用方法,传递参数的时候,采用的是pass-by-copy的方法,传递一份内容的拷贝,即传值.举一个最简单的例子: 1 public class Test { 2 public static void main(String[] args) { 3 int numberA = 1; 4 int numberB = 2; 5 swap(numberA, numberB); 6 System.out.println(nu

辨析Java方法参数中的值传递和引用传递

小方法大门道 小瓜瓜作为一个Java初学者,今天跟我说她想通过一个Java方法,将外部变量通过参数传递到方法中去,进行逻辑处理,方法执行完毕之后,再对修改过的变量进行判断处理,代码如下所示. public class MethodParamsPassValue { public static void doErrorHandle() { boolean a = false; int b = 5; passBaseValue(a, b); if (a == true || b == 10) { S

C++学习日记--关于值调用和引用调用

如果希望函数能够改变某变量的值,那么相应的形参一定要是引用调用参数.因此必须在参数类型后面加上“&”符号.传值调用形参只是一个局部变量.当一组数据需要多个函数处理时候,也要用引用调用. 到目前为止我们一直使用传值调用形参,函数调用里的相应的形参可以是一个变量,但函数只使用该变量的值,而且不能以任何方式改变这个变量.使用传值调用时,替代形参的只有实参的值.     对于一个输入函数,我们希望用变量(而不是变量值)来替代形参.---引用调用机制正是用来解决这类问题的.   借助引用调用形参,函数调用