weixin_38393017 2017-07-27 18:28 采纳率: 0%
浏览 1094
已采纳

java栈的数组实现问题

public class Test2 {
public static void main(String args[])
{
FixedCapacityStackOfStrings s;
s=new FixedCapacityStackOfStrings(100);
while(!StdIn.isEmpty())
{
String item=StdIn.readString();
if(!item.equals("-"))
s.push(item);
else if(!s.isEmpty())
System.out.println(s.pop()+" ");
}
--------------------------------------------------------------
class FixedCapacityStackOfStrings {
private String[] a;
private int N;
public FixedCapacityStackOfStrings(int cap)
{
a=new String[cap];

}
public boolean isEmpty(){
return N==0;
}
public int size()
{
return N;
}
public void push(String item)
{
a[N++]=item;
}
public String pop()

{
return a[--N];
}
private void resize(int max)
{//将大小为N<=max的栈移动到一个新的大小为max的数组中
Item[] temp=(Item[]) new Object [max];
for(int i=0;i<N;i++)

temp[i]=a[i];

a=temp;
//这里为什么第一个要用到for来实现而下面可以直接a=temp?
temp数组比a大不是可以直接temp=a吗?
而且a比temp小为什么可以a=temp?不会出现越界的异常吗
  • 写回答

2条回答 默认 最新

  • 关注

    第一个是数组中的元素temp[i]=a[i],如果a的长度比temp小,那就只是替换前a长度的数组元素
    下面a=temp是将a的地址指向temp数组所在的位置。想知道详细的搜一下java内存管理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?