java 参数传递_Java之参数传递

在正文开始之前,我们先讲讲一个有趣的现象。

public static void main(String[] args) {

int a = 256;

byte b = (byte) a;

System.out.println("a="+a);

System.out.println("b="+b);

}

以上这段代码输出结果是a = 256;b = 0;这是为什么呢?原来byte的存储字节只有8 bit,而int有32 bit,这就导致byte b装不下int a,可是你又让机器强行转型装下。那么机器就只好按下面的方法变通一下了。

比如说int 256,机器就转为二进制000.....100000000,存储,那么强制用byte存储,机器就自动只存储后8位,抛弃掉了前面的位数,于是就只存储了00000000,当然b转为10进制就只有0了。

好了,讲完这个故事,我们就开始了正题——Java的参数传递。参数传递想必大家都不陌生,也都使用过,对于构造方法传参和set方法传参也都知道是怎么回事,那么大家知道我们传参传过去的是什么吗?究竟是一个地址还是确切的值呢?

二者的区别还是蛮大的。如果传的是值,那么在其他地方这个值发生了改变,它本身就不会有任何变化。而如果传的是地址,那么在其他地方发生 了改变,那么这个值就随之变了。

.......................................看图..................................A存的是地址,a是值

举个例子:我们在绘制画图板时,Graphics g传来传去,到处画东西,窗口都发生了变化,说明我们在传Graphics时,传递的是地址。

那么哪些参数是传的数值,哪些又是传的地址呢?

很简单,我们都知道Java的数据类型有,基本类型和引用类型两种。其中基本类型传参使传的是数值,引用类型。其中所有的基本类型传递的都是确切的值,比如说int ,short ,byte, char 等等,而引用类型(除String外)传递的则是地址。之所以除String外呢,是因为String传递的是值。为什么?查看String的源码,发现String的实现靠的其实还是基本类型char,这就能理解为什么String传递的是值了。

这样我们就能理解为什么用“==”比较字符串时偶尔会被坑了。

最后的最后,依然是欢迎不可能来看文章的大佬来拍砖。在下微信号1395349613.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值