int A;
String B;
string是引用类型,那B应该会在堆中开辟一片空间出来 地址 假如B=20 那应该就会拿到20的地址 给B?
那A呢? 难道都不用在堆创建对象了? 例如A=40 那就直接拿40本身有的空间地址 直接给了A?
两个问题 希望各位牛人解惑一下
int A;
String B;
string是引用类型,那B应该会在堆中开辟一片空间出来 地址 假如B=20 那应该就会拿到20的地址 给B?
那A呢? 难道都不用在堆创建对象了? 例如A=40 那就直接拿40本身有的空间地址 直接给了A?
两个问题 希望各位牛人解惑一下
int A;存在栈
String B;存在栈或堆。
详解
int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。
String是一个特殊的包装类数据。可以用:
String str = new String("abc");
String str = "abc";
两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。
而第二种是先在栈中创建一个对 String类的对象引用变量str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,如果已经有”abc” 则直接令str指向“abc”。