第1个回答 2009-08-07
关于指针 daodiba3 已经说得很清楚了
关于这两条:
1:int a=1;
2:string b="1";
1 中a是个基本类型,a和它的值‘1’都是放在栈中的
2 对于String类型,如你所写的话 变量名b和值也都是和基本类型一样在栈中的, 它的执行过程是这样的,在栈中创建一个变量b 然后再栈中寻找是否有"1"这个串 如果有 直接将b的引用指向"1",没有的创建一个"1"值,然后引用。
但是如果把string b="1"; 变成String b = new String("1");的话,这里的"1"就是在堆中的具体一块内存了。
所以准确的说 String 这个类型即不属于基本类型,又不属于引用类型
第2个回答 2009-08-07
int a=1;
String b="1";
a b 都是个对象
下面 你用 String c=b
c并没有指向b的地址
String b="1";也就是 String b=new String("1");
而是指向b这个对象变量,不是指向了对象b的内存中的地址
也就是说你操作c, b的值不会变
而如果 c是指向b的内存地址 那么 c b 只要改变一个 他们的值都会变
我是这么理解的
第3个回答 2009-08-07
int a=1;
a并不是对象,只是一个变量名而已。他的值就是1
而string才是对象,是字符串对象。
第4个回答 2009-08-07
首先有个问题你没搞清楚 java所谓的没有指针 是没有语法给你用 没有关键字等 而实际上是 java到处都是指针 对象等都是指针.他依然保存指针的概念,但是他不提供指针给你用.希望你能清楚这一点.
第5个回答 2009-08-07
首先堆栈和堆是两个不同的概念,对象一般是保存在堆中的,
int 是基本数据类型例如int i =1;变量i直接指向1这个值
不是基本数据类型的对象例如Sting i ="1";这里的i 只是对象“1”的一个引用,通过这个引用来操作对象