每个变量都代表一个存储值的内存位置。声明一个变量时,就是在告诉编译器这个变量可以存放在什么类型的值。
对基本类型变量来说,对应内存所存储的值是基本类型值。
对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址。
将一个变量赋值给另一个变量时,另一个变量就被赋了同样的值。
对基本类型变量而言,就是将一个变量的实际值付给另一个变量。
对引用类型变量而言,就是将一个变量的引用赋给另一个变量。
我觉得基本引用类型和对象引用类型的区别在于内存的不同
内存地址分四个区: 栈区 堆区 静态区 代码区 给大家解释下 前两个后两个我也不会
栈区 存放函数的参数值,局部变量的值等,在超过这个变量的作用域时就会被系统自动释放掉存于java内存的资源
优点: 存取速度比堆快
缺点: 存在栈中的数据大小与生存期必须要确定 无灵活性
实例:
for( int i=0;i<40;i++){
system.out.println(i);
此代码会显示
}
system.out.prntln(i); 此代码不会被显示
堆区 存放new创建的对象和数组 ,java不定时会查看这个对象,如果没有引用指向这个对象就回收;
优点: 可以动态分配java内存
缺点: 要在运行时分配java内存 速度慢
实例:
Scanner in=new Scanner(System.in);
总结:
基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。
而引用类型值则是指那些保存在堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。