引用传递与值传递超经典!转载

第一个例子:基本类型
void foo(int value) {
    value = 100;
}
foo(num); // num 没有被改变

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

第三个例子:提供了改变自身方法的引用类型
StringBuilder sb = new StringBuilder("iphone");
void foo(StringBuilder builder) {
    builder.append("4");
}
foo(sb); // sb 被改变了,变成了"iphone4"。

第四个例子:提供了改变自身方法的引用类型,但是不使用,而是使用赋值运算符。
StringBuilder sb = new StringBuilder("iphone");
void foo(StringBuilder builder) {
    builder = new StringBuilder("ipad");
}
foo(sb); // sb 没有被改变,还是 "iphone"。

 

重点理解为什么,第三个例子和第四个例子结果不同?

下面是第三个例子的图解:

d8b82e07ea21375ca6b300f9162aa95f_hd.jpg

builder.append("4")之后

ff2ede9c6c55568d42425561f25a0fd7_hd.jpg

下面是第四个例子的图解:

d8b82e07ea21375ca6b300f9162aa95f_hd.jpg

 

builder = new StringBuilder("ipad"); 之后

46fa5f10cc135a3ca087dae35a5211bd_hd.jpg
 作者: Intopass
链接:https://www.zhihu.com/question/31203609/answer/50992895
来自知乎
 
再如一道经典例题
public class foo {

    public static void main(String sgf[]) {

    StringBuffer a=new StringBuffer(“A”);

    StringBuffer b=new StringBuffer(“B”);

    operate(a,b);
    System.out.println(a+”.”+b);
    }

    static void operate(StringBuffer x,StringBuffer y) {
    x.append(y);
    y=x;
    }
} 

输出“AB.B”

 

转载于:https://www.cnblogs.com/52circle/p/9005218.html

可以使用window.location.href进行页面跳转并传递参数。例如,可以使用以下代码将参数传递给新页面: window.location.href = "./punch/clock_frm.html?modFlag=" + modFlag + "&role=" + role; 在新页面接收参数并将其转换为可用的JSON格式,可以使用以下方法: var url = location.search; //获取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") ! -1) { var str = url.substr(1); var strs = str.split("&"); for (var i = 0; i < strs.length; i++) { theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]); } console.log(theRequest); //此时的theRequest就是我们需要的参数 } 如果在传递参数时遇到中文乱码问题,可以使用encodeURI对中文进行编码,如下所示: window.location.href = 'aaa.html?Unit=' + encodeURI(encodeURI(中文内容)); 在接收页面接收参数时,可以使用decodeURI解码回来,如下所示: var param = decodeURI(window.location.href);<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [转载--window.location.href传参/传值汇总](https://blog.csdn.net/weixin_47382065/article/details/120264692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [window.open 以post方式传递参数示例代码](https://download.csdn.net/download/weixin_38655011/13621948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值