Fork me on GitHub

关于类型转换的一些疑问

今天在看Java基础的时候遇到这样一句话:


于是产生了以下两个疑问:

1、定义一个变量的时候,是不是这个变量就分配了内存空间?

2、当我定义了一个int类型的变量a,但是后来我将a强转成string类型,a的内存空间会不会发生改变?

① 关于第一个疑问可能真的是我智障的,通过百度,给变量分配内存其实是在编译的时候进行的。

②第二个百度知道里面解释的答案是



但是在csdn上面貌似找到了一个更为详细的解释:地址如下,可以去参考参考:http://blog.csdn.net/sjm19901003/article/details/44743801
个人暂时理解是:由于不同类型的存储空间不一样,所以在发生类型转换的时候会改变变量的内存空间,换句话说,当一个变量的类型发生转换的时候,其实相当于开辟出一个新的内存空间,将原有的变量存储到新的内存空间里面。

但是此时有产生一个问题,旧的变量存储到新开辟的内存空间,那么旧变量所在的内存空间会不会被回收呢?