java 赋值操作

首先,请看一段代码,然后思考输出结果
在这里插入图片描述
嗯哼!很简单吧在这里插入图片描述
那么,再来看这一段代码
在这里插入图片描述
结果是什么嘞?
在这里插入图片描述
为什么 b[0] 也做了+10的操作呢?

其实,在Java里有这么一项说明
除了基本数据类型以外的赋值都是引用的赋值
下面举个例子:

int a;
int b=10;
a=b;

对基本数据类型 int
a=b 操作:把 b 里的内容拷贝给 a

但如果a b 是对象的话
a=b 则意味着把 a 指向 b 所指向的东西,a 和 b 指向同一个东西,没有 “ 拷贝 ”
对其中一个修改,即是对他们两个进行修改

可能有朋友对于第二个例子会这么想,
你的b数组本来就没有空间当然是把 b 指向 a 啦!
且再看
在这里插入图片描述
即便 b 数组和 a 数组有同样大的空间,仍然没有所谓的“ 拷贝 ”操作
b=a 还是做了把 b 指向 a 的操作

顺带一提,对于对象也是如此哦!
因为对象也不是基本数据类型
在这里插入图片描述

顺带一提,这还容易存在一个误区

public static void main(String[] args) {
String II="fu";
		f(II);
}
public static void  f(String s) {
	s=s+"you";
}

执行结果:
fu

分析:
确实,传过去的参数是引用
使得 s 和 II 都指向了同一个——“fu”
但是,这并不意味着你改变s的指向,同时会改变II的指向

s+"you"

会产生一个新的String对象 “fuyou” ,然后s指向它

但是,II和这一丁点关系都没有,仍然指向 ——“fu”

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值