关于引用传递和数据存储的分析
第一种情况 int 类型数据
其运行结果是 20 30
上面是数据内存分析
首先类中出现了属性值 10,储存在堆内存中,new新对象则栈内存新对象r1指向堆内存10;然后通过对象.属性 对属性赋新的数值20.则堆内存数据更改为20;然后是tell() 含参的方法tell出现一个新的对象r2,则此时r1/ r2指向20;然后通过r2对象对堆内存属性 temp数据进行更改,则此时r1 r2指向temp为30 回到主方法,程序运行到tell方法,此时r1指向30;所以结果为20 30
第二种类型 String数据
运行结果是 hello hello 而不是 hello jike
以上是数据储存分析
首先是栈内存str1 指向 堆内存 hello ,然后tell方法出现了 str2 此时二者同时指向hello,然后通过tell方法本来是应该将jike赋值给str1的,但是因为String类型数据不可改变的性质,使得
http://blog.csdn.net/zhangjg_blog/article/details/18319521 这个大神的博客解释了为什么String 类型数据是不可变的,解释了小白的问题
- 第三种类型String
又可以改变了 ,这不科学啊! 还是不懂啊!