指针
- 可以为空
- 定义时不需要马上赋值
- 跟指向对象是两个不同的内存地址
- 初始化后可以指向其他对象
引用
- 引用不可以为空
- 定义时必须给初始值
- 跟引用对象是同一个对象,即内存地址相同
- 初始化后不能再引用别的对象
区别
要想弄懂区别,那么就需要仔细琢磨定义
a. 作为形参:
- 如果我们方法内部,需要判断该值是否为空,那么需要使用指针
- 如果我们的方法内部,明确要求传参不能为空,那么传递引用是首选
b. 作为返回值:
- 如果想让返回值不可能为空,那么返回引用
- 否认使用指针
c. 变量分配:
指针是先申请一块内存,它里面的值为对象的地址
引用不会有内存申请,它就是源对象,只是在源代码级别的看起来像是另外一个变量
d. 当然它还会有其他区别,就不再一一列出,使用建议就是能用别名就用别名吧