参数的传递方式,堆,栈etc的总结

1.java中的参数传递方式只有按值传递(都是创建一个参数的副本)。对象参数的传递也是按值传递,只不过传递的是对象的引用(A a = new A() ; 其中a即为类A的一个引用),引用存放的是对象的地址,所以在被调函数中改变对象中的属性,返回调用函数中,对象的属性也会被改变

 

 

2.java程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的.

   其中栈主要存放一些基本的数据类型(int, short, long, byte, float, double, boolean, char)和对象的句柄(即对象的引用)
   而栈中主要存放对象本身和数组等内容,以及‘字符串常量池’(很小的一块内存),用来存放特定的字符串对象。

 

3. String a = "xibala";

    String b = new String("xibala");

    String c = "xibala";

 

   System.out.println(c==b);  //true

  

首先jvm查找字符串常量池中有没有‘xibala’的字符串,如果没有则在堆(字符串常量池)中创建一个新的‘xibala’,

声明B时,再在堆(非字符串常量池)创建一个新的xibala

声明C时,直接在字符串常量池中查找到xibala,则直接将c指向池中的xibala

 

4.对象的副本是只新创建的一块内存区域,存放与之前的对象的相同属性和方法的一个新的对象

posted @ 2010-02-25 10:01  0707  阅读(222)  评论(0编辑  收藏  举报