堆和栈的区别,有一个64k的字符串,是放到堆上,还是放到栈上,为什么?

来源:互联网 发布:matlab复共轭矩阵 编辑:程序博客网 时间:2024/04/28 18:45
堆和栈的区别,有一个64k的字符串,是放到堆上,还是放到栈上,为什么?
答:只有引用及基本数据类型是直接存在栈上。对象类型可能是在堆、方法区、常量池中。


如二楼所说,放到堆中还是放到栈中,jvm会根据你的数据类型决定。
一般在栈中存放了编译期可知的各种基本数据类型,对象引用和returnAddress类型。
在堆中存放对象实例

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

1:堆栈都是内存的可用区域,但是 堆的速度慢容量大,栈的速度快容量小。一个64K的字符串,自然放在堆。栈的内存是很宝贵的。
2:接口和抽象类都是面向对象编程的特点,都是可继承(实现)为明确的类。一般:所描述的事物(事件)属于很抽象的,则先使用接口表达这个事物,然后使用抽象类实现划分出各种分类事物。例如:List 接口下有抽象类:AbstractSequentialList<E> AbstractList<E>等,然后才有LinkedList ArrayList
3:有一个100万的数组,里边有两个是重复的,如何设计算法找到:
int i=0;
Set<Integer> set=new HashSet<Integer>();
for(;i<array.length;i++)
if(set.add(array[i])) break;

array[i];//就是了

0 0
原创粉丝点击