随笔(null和“”、值传递和引用传递、“==”和equals、String。。。)

随笔一下:(null、"")
1、null没有分配内存
2、“”已经分配内存,值为“”
注意:
c#中的int?代表可为空整形,所以可以为空。
java的基础类型int不可为空,但是其封装类型Interger作为引用类型,就可以为空了。

3、值传递和引用传递

当使用基本数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值。
当使用引用数据类型作为方法的形参时,在方法体中修改形参指向的数据内容,则会对实参变量的数值产生影响。因为形参变量和实参变量共享同一块堆区。
当使用引用数据类型作为方法的形参时,在方法体重修改形参变量的指向,则不会对实参变量的数值产生影响。因为形参变量和实参变量分别指向不同的堆区。

原文链接:https://blog.csdn.net/weixin_44864748/article/details/108236331

(c++ : 对形参的操作其实就是对实参的操作,在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。)
在这里插入图片描述

注意:
java中是不存在引用传递的,只存在值传递。(可以简单理解为这就是按值调用和引用调用的区别,而且必须明白即使java函数在传递引用数据类型时,也只是拷贝了引用的值罢了,之所以能修改引用数据是因为它们同时指向了一个对象,但这仍然是按值调用而不是引用调用。)
举两个例子做个对比,不知道恰当不恰当,一个是调了方法,一个没有调。
在这里插入图片描述
在这里插入图片描述

推荐看这篇文章写的很好。
https://www.cnblogs.com/efforts-will-be-lucky/p/7094650.html

4、""和equals
(ps:引号中间是等号,有格式,所以等号显不出来,以下是java中的)
” 判断值类型(基础类型)
equals 判断引用类型
注意:当引用类型使用“==”进行判断时,会判断引用地址,而不是引用地址指向的对象的值。
相反使用equals时会判断值。
注意:
集合list存的是对象还是对象的引用,是引用的地址
首先Java中,list只能存引用类型
再者:可以看这个例子:

在这三个值中,无论修改那个值最终都不会影响到其他两个。可以去试试,这里贴张图,可以看看
在这里插入图片描述
5、String、StringBuilder、StringBuffer
推荐这篇文章,写的很好。
https://blog.csdn.net/u011702479/article/details/82262823

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值