本文目錄一覽:
小弟跪求好的JAVA網站製作的菜鳥教程and書
哥們我這有很多網站,應該至少有一個適合你的
所屬論壇: JAVA論壇
正文內容:
java方面的:
it人資訊交流網
這個網站是我最近才發現的,雖然內容不多,但是提供的相關java工具挺齊全。還有就是裡面提供了java教學視頻錄象的免費下載,好像一兩周更換一段。個人覺得挺適合初學者的,尤其是那個classpath的設置,講的很透徹,大家有空可以看一看。
java官方站點(英文)
要想了解最新的java動態,下載最新的java相關,比如j2se、j2ee、j2se的最新jdk版本就來這裡吧。
java中文站
這個可能大家都知道,不用說了,他提供的java資源是最豐富的。註冊論壇是免費的,還送積分,用積分可以下載軟體和電子書等,如果積分用完了,就需要自己發表一些文章來賺新的積分。
中文java網站
跟上面站點類似的一個站,宗旨就是:為java愛好者服務。值得一看!
鋒網
綜合性的java網站,內含「下載中心」、「教程教學」等欄目。
java動力
網站的內容可以,但是最為出色的是它所運用的flash技術,我就不在這裡多說了,大家去看看就知道了,一個字「酷」!!!
vc方面的:
vc知識庫
這個網站就不用多說了,學習vc必去之地。網站專門提供了免費的ftp下載,好東東巨多!
vc之路
綜合軟體開發網站,以vc為主。「資源中心」有許多值得下載的東東。
visual c++/mfc開發指南
以講述windows開發為主的站點,提供了最新的源代碼,開發工具,開發資料,開發教程和對好的開發站點,開發工具,圖書做介紹,同時為從事開發的朋友提供發布自己開發的軟體,代碼和工具場所。
c維擁?
最近發現的vc好站,書籍、軟體、代碼下載一應具全!!!
遊戲開發:
風雲工作室
標點遊戲製作
未來開發者
綜合的:
中國軟體網
中國最大的開發者網路,他之所以著名就是因為他的論壇,大家有空可以去看看,能下到很多不錯的東東,另外也是交流學習的好地方。
電子書籍的:
最後公布一個巨好的,狂多的電子書下載
還有巨好的
新手java應該怎麼學?
零基礎小白學習JAVA要懂得一個道理,學習和掌握java相關技術也非一朝一夕之事,不可能一蹴而就,除了知識理論的學習,還需要後續更深入的學習和大量的實踐,所以需要你一個良好的學習規劃。
隨著社會信息的發展,Java技術已經無處不在,無論是手機軟體、手機Java遊戲還是電腦軟體等,只要你使用到電子產品就會碰到和Java有關的東西,更多的企業正採用Java語言開發網站,而在所有程序員中,Java開發工程師就佔據20%的比例,不可否認,Java語言有著廣泛的行業發展前景,它在行業中的影響力已是不可避免的。
那新手java應該怎麼學?學java無非就是自學和報班這兩種方式,至於java自學還是報班好,這個還是需要根據您自身的條件來判斷的。如果您自控能力、自學能力且有基礎那自學好。反之報班好。下面跟您說一下java自學與報java培訓班學的不同之處,供您參考。
Java自學:好的地方是省錢,不太好的就是學習時間不確定,學習周期很容易拉長,學習不夠系統,對於沒有基礎的或者自控力不強的人來說,也容易導致半途而廢。遇到不懂的問題沒有人解答,難以往下進行學習,而且容易學的半知半解。
Java培訓:學習時間相對較短,整體學習比較全面,學習內容也比較集中。專業老師按照大綱進行系統授課,在學習中遇到技術問題能夠快速得到解決,同時還有專項的練習相對於自學,學習氣氛更加濃厚,跟同期學員對問題的探討,對拓展思路有很大的幫助。並且像一些專業的培訓機構,培訓完後有相應的就業課程和就業指導,比起自學來說求職勝算更大。
如果您學Java是因為單純的興趣愛好,自學是一個很不錯的選擇。但如果您想通過學Java技術轉行的話,那麼最好是選擇參加Java培訓班。當然,可能現在的您感覺參加Java培訓班學費很貴,但是對於可以通過學習找到工作,還是比較值得的。
總之,決定了要學習Java技術就不要猶豫,要行動起來,時間可不等人。不管是自學也好還是參加Java培訓也罷,都要進行實際了解才行。
ArrayDeque
寫cs61b題目時驚嘆為什麼會有這種東西,於是搜索了一番,發現這容器還是很有意思的,於是搬運了一下。
參考: ArrayDeque – (jianshu.com)
Java ArrayDeque – Java教程 – 菜鳥教程 (cainiaojc.com)
在ArrayDeque類實現這兩個介面:Java Queue和Java Deque
使用了數組來存儲數據,同時用兩個int值 head 和 tail 來表示頭部和尾部。不過需要注意的是 tail 並不是尾部元素的索引,而是尾部元素的 下一位 ,即下一個將要被加入的元素的索引。
ArrayDeque 有三個構造函數來初始化,除了無參的構造函數使用了默認容量,其它兩個構造函數會通過 allocateElements 函數來計算初始容量
數組的大小很特殊,大小必為2的n次方(2^n)。下面我們看看 allocateElements 方法
(1)對於一個小於2^30的值,經過五次右移和位或操作後,可以得到一個 2^k – 1 的值。最後再將這個值 +1 ,得到 2^k 。通過這個方法,可以將一個任意的初始值轉化為2^n的值.
(2)不過有一點不足在於,如果本身傳進來的值就是 2^n 的值,那麼經過轉化會變成 2^(n+1) ,所以我們在不用刻意去傳入 2^n 的值。
(3)如果傳入的值大於等於 2^30 ,那麼經過轉化會變成負值,即 0,此時會把初始值設置為 2^30 ,即最大的容量只有 2^30
在ArrayDeque中,數組是作為環形來使用的,正常情況下在末尾添加元素後,tail=tail+1是要判斷是否越界,如果越界,會變為從索引0開始。參考如下圖片,當H添加到索引7後,tail值會+1,此時tail=8,但是越界了,所以應該將tail設置為0。
我們看看 tail = (tail + 1) (elements.length – 1) 的正確性:
所以當 tail+1 = length – 1 ,此時數組並沒有越界, (tail + 1) (elements.length – 1) 後得到的還是 tail+1 。如果 tail + 1 = length ,此時數組越界了, (tail + 1) (elements.length – 1) 後得到0。
所以通過 (tail + 1) (elements.length – 1) 可以跳過條件判斷在環形數組中獲取正確的索引值,然後再判斷新的 tail 是否等於 head ,如果結果為 true ,那麼數組已經滿了,需要擴容,即 doubleCapacity() 。
原理和addLast相同
無論是從頭部還是從尾部添加元素,都會判斷 tail==head ,如果兩個索引相遇,說明數組空間已滿,需要擴容操作.
ArrayDeque支持從頭尾兩端移除元素
在上文中,我們講了怎麼去實現一個ArrayDeque,但Java標準庫中已經為我們準備好了,我們只需按規則使用就行
add() – 將指定的元素插入ArrayDeque雙端隊列的 末尾
addFirst() -在ArrayDeque雙端隊列的 開頭 ,插入指定的元素
addLast() – 在ArrayDeque雙端隊列的 末尾 插入指定的內容(等效於 add() )
注意:如果ArrayDeque雙端隊列已滿,則所有這些方法 add() , addFirst() 和 addLast() 都會引發IllegalStateException
offer() – 將指定的元素插入ArrayDeque雙端隊列的 末尾
offerFirst() – 在ArrayDeque雙端隊列的 開始處 插入指定的元素
offerLast() – 將指定的元素插入ArrayDeque雙端隊列的 末尾
注意: offer(),offerFirst()並offerLast()返回true是否成功插入元素;否則,返回。如果ArrayDeque雙端隊列已滿,則這些方法返回false。
getFirst() – 返回ArrayDeque雙端隊列的 第一個元素
getLast() – 返回ArrayDeque雙端隊列的 最後一個元素
註:如果ArrayDeque雙端隊列為空,getFirst()和getLast()拋出NoSuchElementException。
peek() – 返回ArrayDeque雙端隊列的 第一個 元素
peekFirst() – 返回ArrayDeque雙端隊列的 第一個 元素(等效於 peek() )
peekLast() – 返回ArrayDeque雙端隊列的 最後一個 元素
註:如果ArrayDeque雙端隊列為空,peek(),peekFirst()和getLast()拋出 NoSuchElementException
remove() – 返回並從ArrayDeque雙端隊列的 第一個 元素中刪除一個元素
remove(element) – 返回並從ArrayDeque雙端隊列的 頭部 刪除指定的元素
removeFirst() – 返回並從ArrayDeque雙端隊列中刪除 第一個 元素(等效於remove())
removeLast() – 返回並從ArrayDeque雙端隊列中刪除 最後一個元素
注意:如果數組雙端隊列為空,則remove(),removeFirst()和removeLast()方法將引發異常。 另外,如果找不到元素,則remove(element)會引發異常。
poll() – 返回並刪除ArrayDeque雙端隊列的 第一個 元素
pollFirst() – 返回並刪除ArrayDeque雙端隊列的 第一個 元素(等效於poll())
pollLast() – 返回並刪除ArrayDeque雙端隊列的 最後一個 元素
注意:如果ArrayDeque雙端隊列為空,則如果找不到該元素,則poll(),pollFirst()和pollLast()返回null。
刪除所有元素
iterator() – 返回可用於遍歷ArrayDeque雙端隊列的 迭代器
descendingIterator() -返回一個迭代器,該迭代器可用於以 相反順序 遍歷ArrayDeque雙端隊列
註:為了使用這些方法,我們必須導入java.util.Iterator包。
使用迭代器的方法如下
element() -從ArrayDeque雙端隊列的頭部返回一個元素。
contains(element) -在ArrayDeque雙端隊列中搜索指定的元素。如果找到該元素,則返回true,否則返回false。
size() -返回ArrayDeque雙端隊列的長度。
toArray() -將ArrayDeque雙端隊列轉換為數組並返回。
clone() -創建ArrayDeque雙端隊列的副本並返回它。
push() – 在堆棧頂部添加一個元素
peek() – 從堆棧頂部返回一個元素
pop() – 返回並從堆棧頂部刪除元素
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197598.html