Java方法参数

在程序设计语言中如何将参数传给方法(或函数):

按值调用:方法接受的是调用者提供的值

按引用调用:方法接受的是调用者提供的地址

Java程序设计语言总是采用按值调用(方法得到的是所有参数值的一个副本)

public static void main(String [] args)

{

int x1=6;

add(x1);

System.out.println(x1);

}

public static void add(int x)

{

x=x+x;

}

调用add()方法后,x1值还是6,并没有改变,具体流程:

x初始化为x1值的一个副本

x加上自己后为12,但是x1的并没有改变

方法结束后,参数变量x不再使用

如果传入的是对象引用,很容易改变x1的值

int x1=6;

public static void main(String [] args)

{

Test test=new Test();

test.add(test);

System.out.println(test.x1);

}

public void add(Test x)

{

x.x1=x.x1+x.x1;

}

具体步骤是:

x初始化test对象变量的一个副本,两个对象变量都指向同一类

add()利用x参数变量,调用x1参数完成操作

方法结束后,x不在使用,对象变量test继续引用那个对象

但是Java并不是按引用调用

int x1;

public static void main(String [] args)

{

Test test=new Test(0);

Test test1=new Test(1);

test.swap(test,test1);

System.out.println(test.x1);

System.out.println(test1.x1);

}

public Test( int x1)

{

this.x1=x1;

}

public void swap(Test x,Test y)

{

Test temp=x;

x=y;

y=x;

}

我们发现输出还是0,1,对象并没有发生交换,因为x,y分别是对象变量test,test1的副本,方法执行时只完成x,y副本的交换,方法执行结束后,x,y变量不再使用,test,test1还是指向对象并没有改变。

Java对象引用其实是按值传递。

总结:

方法不能修改基本数据类型的参数(即数值型或布尔型)

方法可以改变对象参数的状态

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

在c++中可以用&实现按引用调用,&符号相当于取地址的意思。例void swap(Test &x,Test&y)

java方法的参数_Java方法参数相关推荐

  1. java中方法的命名_Java方法中的参数太多,第5部分:方法命名

    java中方法的命名 在上一篇文章 (有关处理Java方法中过多参数的系列文章的 第4部分 )中,我将方法重载视为一种向客户提供需要较少参数的版本的方法或构造函数的方法. 我描述了该方法的一些缺点,并 ...

  2. java 构建者模式_Java方法中的参数太多,第3部分:构建器模式

    java 构建者模式 在我的前两篇文章中,我研究了如何通过自定义类型和参数对象减少构造函数或方法调用所需的参数数量. 在本文中,我将讨论如何使用构建器模式来减少构造器所需的参数数量,并讨论该模式如何甚 ...

  3. java方法传对象参数_Java方法中的参数太多,第2部分:参数对象

    java方法传对象参数 在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题. 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性. 这种方法使方法或构造函数 ...

  4. java 方法重载调用_Java方法的定义以及调用、方法重载、可变参数以及递归

    何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 System.out.println();/ ...

  5. java 方法体 out 参数_Java方法详解

    方法详解 1.方法的定义 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合,包含于类或对象中:在程序中被创建,在其它地方被引用 设计方法的原则:要遵守原子性,即一个 ...

  6. java方法可选参数_Java可选参数

    java方法可选参数 在Java类中设计方法时,某些参数对于其执行而言可能是可选的. 无论是在DTO,胖模型域对象还是简单的无状态服务类中,可选方法参数都是常见的. 从本文中, 您将学习如何在Java ...

  7. java 输出参数_Java方法输出参数

    在写Java代码的时候,自定义方法的时候,都会牵扯到参数问题,方法参数包括输出参数和输入参数. 下面主要说说输出参数: 1.没有输出参数的时候就直接把输出参数写成void就可以. 2.当输出参数只有一 ...

  8. Java主方法引用传递_java方法中的参数传递是值传递还是引用传递(转)

    1.当参数变量为基本数据类型或者字符串时: ... ... //定义了一个改变参数值的函数 public static void changeValue(int x) { x = x *2; } .. ...

  9. java方法调用机制_Java方法调用机制 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...

    最近在编程时,修改方法传入对象的对象引用,并没有将修改反映到调用方法中.奇怪为什么结果没有变化,原因是遗忘了Java对象引用和内存分配机制.本文介绍3个点: ① 该问题举例说明 ② 简要阐述Java内 ...

最新文章

  1. 在linux下给grep命令添加颜色
  2. AttributeError: module ‘tensorflow‘ has no attribute ‘placeholder‘
  3. sys.argv[] 的使用详解
  4. if-else运用及技巧(C# 参考)
  5. 电话光端机的电话业务不通问题,该怎么去检查?
  6. Spring+Hibernate+Atomikos集成构建JTA的分布式事务--解决多数据源跨库事务
  7. 04.卷积神经网络 W4.特殊应用:人脸识别和神经风格转换
  8. python画图代码-Python实战小程序利用matplotlib模块画图代码分享
  9. BMC AR 配置AREA LDAP
  10. linux终端使用python的matplotlib模块画图出现“could not open display”问题解决
  11. TI FMCW毫米波雷达基础(2)——测速原理
  12. 异常:HRESULT: 0x80070057 (E_INVALIDARG) 的处理
  13. 软考__BS家族_WBS_OBS_RBS
  14. s20赛季服务器维护,王者荣耀S20赛季什么时候结束 S20赛季具体结束日期
  15. 大学生没有项目经验该怎么拿测开岗位的office?来看话梅怎么说
  16. Python写ROS话题
  17. 《Tableau数据可视化从入门到精通》之Tableau系列软件概况
  18. 使用 * 打印等腰三角形
  19. python 比较三个数的最大值,不考虑相等的情况
  20. matlab z反变换长除法,[例2-6] 试用长除法求 z反变换。.ppt

热门文章

  1. 快速理解平衡二叉树、B-tree、B+tree、B*tree
  2. 从自动贩卖机找零看Python中的动态规划问题
  3. 双边滤波算法的原理、流程、实现及效果
  4. 光纤交换机如何划分zone
  5. BGP建立邻居的详细过程
  6. oracle数据库可以存图片吗,如何往数据库(Oracle)里存储图片和文件
  7. c 语言要记多少函数,学C语言要熟记那些基本语句?
  8. 启动jar包并生成日志的linux脚本
  9. dataset__getitem___一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
  10. 在Linux下怎样让top命令启动之后就按内存使用排序(或CPU使用排序)?