Java 基本数据类型 和引用数据类型
2018-05-08 本文已影响150人
silencefun
先从一个提问开始。soso 问问清理历史问题,

https://wenwen.sogou.com/z/q641503020.htm

很多时候由于 原理基础知识反而显得生疏。
动手敲了一遍。
发现确实是这样子,
想到了是基本数据类型 和引用数据类型的差异。java中数据类型分为基本数据类型和引用数据类型。
参考https://blog.csdn.net/zhzhao999/article/details/53449504的自己尝试做一下笔记:
基本数据类型
整型:byte,short,int,long
浮点型:float,double
字符型:char
布尔型:boolean
引用数据类型
数组
类
接口
在数据做为参数传递的时候,基本数据类型是值传递,引用数据类型是引用传递(地址传递)。
方法的参数分为实际参数,和形式参数。
形式参数:定义方法时写的参数。
实际参数:调用方法时写的具体数值。
需要注意的是:
String是一个类,类是引用数据类型,做为参数传递的时候,应该是引用传递。但是从结果看起来却是值传递。
原因:
String的API中有这么一句话:“their values cannot be changed after they are created”,
意思是:String的值在创建之后不能被更改。
API中还有一段:
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
也就是说:对String对象str的任何修改 等同于 重新创建一个对象,并将新的地址值赋值给str。
值传递的时候,将实参的值,copy一份给形参。
引用传递的时候,将实参的地址值,copy一份给形参。