前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解Java 中的参数传递是传值还是传引用?

图解Java 中的参数传递是传值还是传引用?

作者头像
九转成圣
发布2024-04-10 16:57:27
730
发布2024-04-10 16:57:27
举报
文章被收录于专栏:csdncsdn

Java 中的参数传递是传值呢?还是传引用?

java中只有值传递,没有引用传递

形参:方法列表中的参数

实参:调用方法时实际传入到方法列表的参数(实参在传递之前必须初始化)

值传递:传递的是实参的副本(更准确的说是实参引用的副本,因为形参接受的是对象的引用)

引用传递:传递的是内存地址

代码语言:javascript
复制
public static void main(String[] args) {
    // 实参
    int num = 1;
     // num 没有被改变 基本类型存储在栈里面,main方法栈里有一个num = 1,foo方法栈里存了一个副本num = 1;后来foo栈里面的改成了100,不会影响main方法中的
    foo(num);

    String str = "ABC";
    foo(str); // str 也没有被改变

    StringBuilder sb1 = new StringBuilder("iphone");
    foo1(sb1); // sb 被改变了,变成了"iphone4"。

    /*
     * main方法栈有有个sb2 指向堆中的StringBuilder("iphone")对象
     * 将main栈中的sb2的副本传递给foo2中的形参builder,builder指向堆中的StringBuilder("iphone")对象(与main是同一个对象)
     * foo2栈中的builder指向StringBuilder("ipad")对象
     * main栈中的sb2不会受影响
     * 如果是引用传递main中的sb2会收到影响
     */
    StringBuilder sb2 = new StringBuilder("iphone");
    foo2(sb2); // sb 没有被改变,还是 "iphone"


    System.out.println("num:" + num);//num:1
    System.out.println("str:" + str);//str:ABC
    System.out.println("sb1:" + sb1.toString());//sb1:iphone4
    System.out.println("sb2:" + sb2.toString());//sb2:iphone
}

//第一个例子:基本类型 value为形参
static void foo(int value) {
    value = 100;
}

//第二个例子:没有提供改变自身方法的引用类型
static void foo(String text) {
    text = "windows";
}

/*
 * 是否说明java支持引用传递呢? 不支持
 * StringBuilder builder传递的仅仅是builder本身的值(即实参引用的副本)
 */
static void foo1(StringBuilder builder) {
    builder.append("4");
}

//第四个例子:提供了改变自身方法的引用类型,但是不使用,而是使用赋值运算符。
static void foo2(StringBuilder builder) {
    builder = new StringBuilder("ipad");
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java 中的参数传递是传值呢?还是传引用?
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档