引用类型与基本数据类型区别
引用类型:
类 接口 数组
简单来说 只要不是基本数据类型 都是引用数据类型
区别:
1.从概念方面来说
<1>基本数据类型:变量名指向具体的数值
<2>引用数据类型:变量名不是指向具体的数值,而是指向存数据的内存地 址,也及时hash值
2.从内存的构建方面来说(内存中,有堆内存和栈内存两者)
<1>基本数据类型:被创建时,在栈内存中会被划分出一定的内存,并将数 值存储在该内存中
<2>**引用数据类型:**被创建时,首先会在栈内存中分配一块空间,然后在堆 内存中也会分配一块具体的空间用来存储数据的具体信息,即hash值, 然后由栈中引用指向堆中的对象地址
举例
//基本数据类型作为方法参数被调用
public class Main{
public static void main(String[] args){
//基本数据类型
int i=1;
int j=1;
double d=1.2;
//引用数据类型
String str="Hello";
String str1="Hello";
}
}
3.从使用方面来说:
1.**基本数据类型:**判断数据是否相等,用==和!=判断
2.**引用数据类型:**判断数据是否相等,用equals()方法,==和!=是比较数值 的,而equals()方法是比较内存地址的
注:数据类型选择的原则:
- 如果要表示整数就使用int,表示小数就使用double;
- 如果要描述日期时间数字或表示文件(或内存)大小用long;
- 如果要实现内容传递或者编码转换使用byte;
- 如果要实现逻辑的控制,可以使用boolean;
- 如果要使用中文,使用char避免中文乱码;
- 如果按照保存范围:byte<int<long<double;