博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA基本数据类型、引用数据类型-参数传递详解
阅读量:4478 次
发布时间:2019-06-08

本文共 1560 字,大约阅读时间需要 5 分钟。

1:基本类型的参数传值

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

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

 

转载于:https://www.cnblogs.com/cmusketeer/p/10026050.html

你可能感兴趣的文章
2014-5-30 总结
查看>>
【H3 BPM工作流程管理产品小故事】第四篇 子表创建
查看>>
洛谷P1148 拱猪计分
查看>>
MySQL服务器的安装和配置,MySQL Workbench 8.0.12安装,MySQL的基本使用
查看>>
扑克序列
查看>>
java笔记--适配器模式的运用
查看>>
C#与数据结构--图的遍历
查看>>
ispy 编译笔记
查看>>
bzoj1067——SCOI2007降雨量(线段树,细节题)
查看>>
day 1
查看>>
洛谷P1282 多米诺骨牌【线性dp】
查看>>
数据类型的提升(promotion)
查看>>
Thead是不能返回值的,但是作为更高级的Task当然要弥补一下这个功能。
查看>>
Android呼叫转移跳转到拨号盘 “#”号显示不出来
查看>>
Python中的生成器与yield
查看>>
JQuery 的Bind()事件
查看>>
Maven 常用配置
查看>>
Objects源码解析
查看>>
video
查看>>
栈的c语言顺序实现(动态申请空间)
查看>>