當前位置:首頁 » 編程語言 » java的stack

java的stack

發布時間: 2022-09-03 09:37:28

『壹』 java棧stack和堆heap的工作原理,用途和區別

java堆和棧的區別

Java中內存分成兩種:一種是棧stack,一種是堆heap。

函數中的一些基本類型的變數(int, float)和對象的引用變數(reference)都在函數的棧中,馬克-to-win,(工作於編譯階段, 生成class文件之前)分配。存取速度快,稍遜於寄存器, 比堆快,

函數執行完後,Java會自動釋放掉為函數里變數開辟的棧內存空間,該內存空間可以立即被另作他用。

堆heap內存用來存放由new創建的對象和數組。堆內存,負責運行時(runtime, 執行生成的class文件時)數據,由JVM的自動管理。缺點是,存取速度較慢。

棧中的引用變數指向堆中的對象或數組。


中有共享池的概念,比如下面例子中,sz="hello";在棧中創建一個String對象引用變數sz,然後看看棧中有沒有"hello",如果沒有,
則將"hello"存放進棧,並令sz指向」hello」,如果已經有」hello」 則直接令sz指向「hello」。對於int, float
類型的變數也是一樣的有這種共享池的概念,注意上述的工作是在compile(編譯)的階段完成的,而不是runtime運行時完成的。


於下面程序中:ss0 = new String( "hello"
);是用new()來新建對象的,存於堆中。每調用一次就會創建一個新的對象。當然從節省空間的角度來講,肯定不如str="hello",有童鞋一定
問,那要它有什麼用?當時設計編譯器時,為什麼要設計它?馬克-to-win,那我請問你,如果在你編程序時,你還不知道字元串內容怎麼辦?這時就用到
new String,所以,什麼都有什麼的用處。

public class Test
{
public static void main(String args[]) {
String str, str1, ss0, ss1, ss2, ss3, ss4;
str = "hello";
。。。。。。。。。。。。。。。。詳情網上找「馬克-to-win」,參考他的網站或他的網路空間:java第2章的內容

『貳』 JAVA中運用Stack類實現十進制轉換成八進制

直接在分割的時候就執行壓棧操作,出棧時移位相加,一個棧就能解決,不過毫無意義,在開發中並沒有什麼卵用。

有問題歡迎提問,滿意請採納,謝謝!

『叄』 java stack 遍歷 清空

for(Integer i:stack)遍歷棧時不會清空堆棧的數據,這里用的是Stack的父類Vector的方法。

要想遍歷並清空堆棧,可這樣寫:

while(stack.isEmpty())){
System.out.println(stack.pop());//將數據彈出堆棧
}

『肆』 java Stack 的size方法

因為你在列印方法中執行了s.pop(),所以size是在變化的,執行一次裡面的元素少一個,所以你用size()做判斷是錯誤的。

『伍』 Java如何實現堆棧

//這是JDK提供的棧

import java.util.Stack;

public class UsingStack {
public static void main(String[] args) {
//構造棧對象,使用類型限制,只能存儲Integer數據
Stack<Integer> s = new Stack<Integer>();

//1、2、3依次入棧
s.push(1);
s.push(2);
s.push(3);

//3、2、1依次出棧
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}

//這是我寫的順序結構的棧
import java.util.EmptyStackException;
import java.util.Vector;

public class UsingStack{
public static void main(String[] args){
//構造棧對象,使用類型限制,只能存儲Integer數據
MyStack<Integer> s = new MyStack<Integer>();

//1、2、3依次入棧
s.push(1);
s.push(2);
s.push(3);

//3、2、1依次出棧
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}

/**
* 棧類
* @author developer_05
* @param <T>
*/
class MyStack<T> extends Vector<T>{
/**
* 構造方法
*/
public MyStack(){
}

/**
* 入棧方法
* @param item 待入棧的元素
* @return 返回入棧的元素
*/
public T push(T item) {
addElement(item);

return item;
}

/**
* 出棧方法(同步處理)
* @return 返回出棧元素
*/
public synchronized T pop() {
T obj;
int len = size();

if (len == 0)
throw new EmptyStackException();
obj = elementAt(len - 1);

removeElementAt(len - 1);

return obj;
}

/**
* 判斷棧是否為空的方法
* @return 返回true(棧空)或false(棧非空)
*/
public boolean empty() {
return size() == 0;
}

private static final long serialVersionUID = 1L;
}

『陸』 java的棧stack 怎麼查看所有的元素

java.util.Stack 類的構造方法創建對象
這個類裡面有這個方法
public peek() 查看棧頂對象而不移除它。。

採納我 喲

『柒』 java中的「堆棧」是什麼意思

堆棧是計算機為程序分配的內存空間,用來存儲數據的。

熱點內容
伺服器可以變電腦使用嗎 發布:2025-01-15 19:40:29 瀏覽:200
傳奇手游免費腳本 發布:2025-01-15 19:30:21 瀏覽:300
我國當前資源配置存在哪些問題 發布:2025-01-15 19:25:03 瀏覽:513
存儲在哪裡呀 發布:2025-01-15 19:11:39 瀏覽:450
pythonuniquelist 發布:2025-01-15 19:10:41 瀏覽:477
怎麼升安卓系統下載 發布:2025-01-15 19:04:27 瀏覽:894
mcrypt擴展php 發布:2025-01-15 19:01:12 瀏覽:436
html源碼解析 發布:2025-01-15 19:01:10 瀏覽:223
網路硬碟錄像機存儲 發布:2025-01-15 18:48:20 瀏覽:894
大學生java課程培訓 發布:2025-01-15 18:45:53 瀏覽:487