1:基本类型的参数传值

对于基本数据类型,修改这个值并不会影响作为参数传进来的那个变量,因为你修改的是方法的局部变量,是一个副本。实参的精度级别应等于或低于形参的精度级别,否则报错。

class JB{
void f(int x, int y){
x=x+;
y=y+;
System.out.printf("参数x和y的值分别是:%d, %d\n", x, y);
}
}
public class CS {
public static void main(String[] arg){
int x=;
int y=;
JB jb=new JB();
jb.f(x, y);
System.out.printf("main方法中x和y的值分别是:%d, %d\n", x, y);
}
}
结果:
参数x和y的值分别是:11, 13
main方法中x和y的值分别是:10, 12

2:引用类型的参数传值

引用类型包括类、数组以及后面将要学习的接口。当形参是引用类型时,实参传给形参的值是对象的引用。如果修改形参引用的对象,那么实参引用的对象也会发生同样的变化。因为实参的引用拷贝给了形参,所以实参和形参引用同一个对象,对形参引用对象的修改就相当于对实参引用对象的修改。

如果修改的不是形参引用的对象而是形参值本身,也就是让形参指向其它对象,则实参值和实参引用的对象都不改变。

class A{
int N;
A(int n){
N = n;
}
void setN(int n){
N = n;
}
int getN(){
return N;
}
}
class A2 extends A{ A2(int n) {
super(n);
}
}
class B{
void f(A a){
a.setN(12);
// a = new A2(111);
System.out.println("在执行方法f时, 形参a修改了自己的N值");
System.out.println("当前形参mouse的N值: " + a.getN());
}
} main B b = new B();
A a = new A(2);
System.out.println("在调用方法f之前,实参a的N值: "+ a.getN());
b.f(a);
System.out.println("在调用方法f之后, 实参a的N值: " + a.getN());
结果:

在调用方法f之前,实参a的N值: 2
在执行方法f时, 形参a修改了自己的N值
当前形参a的N值: 12
在调用方法f之后, 实参a的N值: 12

注意:形参指向其它对象这句话的理解,a = new A2(111);让mouse又指向了另一个对象,所以他所修改后的值和实参没有关系,实参的值和引用都不会改变。在代码中新加入的A2就是继承了A,通过方法传入的是A(a)的对象的引用,把a = new A2(111);那么之后改变是A2的内容,和A就无关了,所以A(实参)的引用对象和值都不变。

结果:

在执行方法f时, 形参a修改了自己的N值
当前形参a的N值: 111
在调用方法f之后, 实参a的N值: 2

最新文章

  1. 多版本Python管理及Python连接MySQL
  2. GitLab 的 Developer 角色没有权限提交问题
  3. Java 上传文件到 SFTP 抛异常 java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 的解决办法
  4. 图的强连通分量-Kosaraju算法
  5. textbox不支持Ctrl+A
  6. SVN server 安装 并创建用户访问
  7. Intellij IDEA快速编写代码经验总结
  8. C++ 实现网络爬虫
  9. .NET面试题系列[17] - 多线程概念(2)
  10. ZooKeeper之(二)数据模型
  11. err:安装程序试图挂载映像 1(缺少ISO 9660图像)
  12. hadoop分布式搭建
  13. Windows 支持 OpenSSH 了!
  14. 基于OpenCV做“三维重建”(1)--找到并绘制棋盘
  15. 关于rtsp的时间戳问题
  16. SQL之GROUP BY 语句
  17. caffe安装编译问题-ImportError: libopencv_core.so.3.4: cannot open shared object file: No such file or directory
  18. 887. Super Egg Drop
  19. ASP.NET MVC BundleConfig介绍和使用
  20. 2009年3月新浪PHP面试题及答案(二)

热门文章

  1. Shiro源码解析-登录篇
  2. 面经问题总结——django相关
  3. C#几种常用的加密方式
  4. (转)CentOS分区操作详解
  5. WCF系列教程之WCF消息交换模式之单项模式
  6. CSS禁止滚动条
  7. spring线程池ThreadPoolTaskExecutor与阻塞队列BlockingQueue
  8. Django 入门项目案例开发(中)
  9. cesium运行环境搭建
  10. 系统对象的使用——Cookie,ViewState,Session,Application