CodeGym /Java Blog /Toto sisi /舊級別 02
John Squirrels
等級 41
San Francisco

舊級別 02

在 Toto sisi 群組發布

CodeGym – 學習 Java 編程

舊級別 02 - 1學習編程和接受教育的全新方式怎麼樣?這看起來不像你以前見過的任何東西。學習如何,你有一個目標,手段和結果?我很高興向您介紹用於學習 Java 的新在線編程課程。

1 訓練是一個網絡遊戲

您接受一項任務,執行它並獲得獎勵。我認為這對你來說很清楚也很常見。任務種類繁多:閱讀代碼、解決任務、視頻課程、更正代碼中的錯誤、添加新功能、大型任務、編寫遊戲等等。

2 只有最基本的東西

為了課程不會持續5年,我把有用的都扔掉了,只留下最需要的東西。我分析了勞動力市場上的數十個職位空缺。本課程包含新手獲得 Java 初級開發人員工作所需了解的所有主題。

3 我已經徹底了解了您的培訓

一個完整的課程包含500 個小型講座和 1200(!)個實際任務。任務雖小,但數量眾多。有很多。就那麼最低限度,做那個,你就會得到如此寶貴的經驗。還有結對工作、不同的遊戲、大型任務、真實項目和其他類型的練習。

4 你不能完成遊戲而不成為開發者

課程包含 40 個級別。只有當您解決了當前級別的大部分任務後,您才能進入下一級別。從小而簡單開始,以大而有用結束。每個到達終點的人將獲得300-500小時的實踐經驗。這提供了一個很好的獲勝機會。並找到一份工作。

5 以目標為導向的面試準備

最後 10 個級別專門用於撰寫簡歷、準備面試和獲得團隊合作技能。將添加求職面試視頻及其分析。好吧,當然,面試中的典型問題和答案。 舊級別 02 - 2

6 可現場直接解決任務

它非常方便和有效。剛剛在講座中分析了一項新任務後,您必須在網站上通過類比來創建自己的任務。對於那些想在 IDE 中完成任務的人來說,有一個插件可以讓您通過點擊兩次來接收任務,然後將其提交以供簽入。講座、示例分析、直接在網站上解決任務、在 IDE 中解決任務——理論與實踐之間的差距前所未有地縮小。

7 即時任務檢查(不到一秒)

您是否熟悉這種情況,當您移交一項任務/工作進行檢查時,不得不等待一周的結果,因為檢查它的人很忙?大多數線下課程就是這種情況。在 CodeGym 中,按下“執行/檢查”按鈕後,您將在不到一秒鐘內獲得編譯和檢查任務解決方案的結果。

8 CodeGym 喜歡它,當你在學習期間花時間在 Facebook 上時

在 Facebook 上有一個專用於該項目的頁面。您可以在其中找到有趣的技術文章、勵志故事、CodeGym 新聞和許多其他有用的信息。

9 覆蓋範圍

講座中有許多不同網站的參考資料,您可以在其中閱讀其他講師的解釋。我的目標是讓你理解材料,而不是只聽我說。

10 你只需要你的大腦和計算機就可以成為開發人員

這將花費您 3 到 6 個月的時間,具體取決於您練習的時間。

11 支持

舊級別 02 - 3當你面對成千上萬的任務時,毫無疑問會出現問題。我們建立了一項特殊服務,您可以在其中提出有關任務的問題。其他 CodeGym 學生、版主、志願者和該服務的創始成員將回答您的問題。

12 社區

我們相信團結就是力量。因此我們創建了社區,您可以在這裡提問;討論不同的話題,分享文章和博客。此外,社區是熟人找工作的理想場所。因此,請隨時提出聰明的問題並給出聰明的答案。您的行為和幫助他人越積極,其他協會成員建議您加入他們項目的機會就越大。

你已經達到了一個新的水平

2級

舊級別 02 - 4

1 Elly,一切的基礎

- 嘿,阿米戈。今天我想告訴你一個典型的 Java 程序是如何構造的。關鍵是每個 Java 程序都由類和對象組成 - 我已經知道什麼是課程了。什麼是對象? - 類比建造一艘小船,首先需要畫出圖紙,然後交給船廠。將根據這張圖紙組裝一艘船。或五艘船。事實上,你想要多少就多少。幾十艘相同的船是根據一張圖紙建造的,這就是全部!- Java 編程中的所有內容都完全相同。 - 程序員就像設計工程師。如果設計工程師必須畫圖,Java 程序員就必須編寫類。 然後,根據圖紙製作零件,根據類製作物體。 - 首先,我們編寫類(畫圖),然後在程序運行時,Java 虛擬機使用這些類創建對象。就像造船一樣。有一張圖紙和很多船。不同的船隻有不同的名稱,裝載著不同的貨物。然而,它們非常相似:它們都具有相同的結構並且可以執行相同的任務。 - 就船舶而言,一切都很清楚。給我更多的比較來理解它到底是什麼? - 當然。例如,蜜蜂...... 舊級別 02 - 5- 哦不,等一下,蜜蜂讓我想起了一些不好的事情。想想蟻丘更好。 - 蟻丘是對象交互的一個很好的例子。在最簡單的蟻丘中,有三類螞蟻:蟻后、兵蟻和工蟻。每個班級的螞蟻數量不同。蜂后獨自在巢中;有數十名士兵和數百名工作螞蟻。所以,我們可以說,有三個類和數百個對象。螞蟻彼此交流,同螞蟻和其他類的螞蟻按照嚴格的規則交流。 - 這是一個完美的例子。對於一個典型的程序,它都是一樣的。主對象創建所有其他類的對象。對像開始相互交互並與程序的“外部世界”交互。對象的行為被硬編碼在它們內部。 - 我不太明白。而是一點都不懂。 ——這兩種解釋是一枚硬幣的不同面。事實介於兩者之間。第一個示例(帶有繪圖和船舶的示例)顯示了類與此類對象之間的關係。相似度非常接近。第二個例子(有蟻丘的例子)顯示了編寫的類和運行時存在的對象之間的關係。 - 你的意思是首先我們需要為程序中存在的所有對象編寫類,更重要的是,描述它們的交互? - 是的,但它比看起來容易。在Java中,程序運行時的一切都是對象,在編寫程序時,應該描述對象交互的不同方式。對像只是相互調用方法並將必要的數據傳遞給它們。 - 不明顯,但幾乎清楚。 - 但是您如何知道要調用哪些方法以及需要將哪些數據傳遞給方法? - 每個類都有其描述以指定類的創建目的。每個方法同樣都有它的描述,說明它做什麼以及必須向它發送什麼數據。要使用該類,您需要大致了解它的作用。此外,您需要準確了解此類的每個方法的作用。但您不必知道它是如何完成的。這是一種魔法。 - 哼。聽起來是這樣。   - 在這裡,看一下複製文件的類代碼: 舊級別 02 - 6- 這不是那麼容易,但我已經明白了。 - 美好的。回頭見,鱷魚!

2 Risha,變量和原始類型

- 嘿你,自由勞動。- 我的意思是,«嗨,阿米戈»。我想向您介紹變量的內部結構。您已經知道每個變量都有一塊與之關聯的內存,變量存儲它的值。 - 是的。你上次說了。 - 美好的。你記得它是件好事。那我繼續。-。當我們在程序中描述一個新類時,這意味著我們聲明了一個新的複雜複合類型,其數據要么是其他復雜類型,要么是原始類型。 舊級別 02 - 7- 仍然很清楚奇蹟。 - 由於大型(複雜)類型由許多小型(原始)類型組成,因此它們的對象會佔用大量內存。比通常的原始類型變量做的更多。有時更多。複雜類型變量的分配需要花費很多時間並且需要復制大量內存。這就是為什麼複雜類型變量不存儲對象本身,而是僅存儲對象引用(即四字節地址)的原因。這足以訪問對像數據。JVM 承擔了與之相關的所有困難。 - 我不明白。 - 我們已經討論過變量就像一個盒子。要在其中存儲 13,您可以將數字寫在一張紙上並將其放入一個盒子中。- 現在假設您必須在一個盒子(變量)中存儲一些更大的東西。例如,一條狗、一輛汽車或您的鄰居喬。為了簡化,您可以做一件簡單的事情:用狗的照片代替狗,用汽車的車牌代替汽車,用喬的電話號碼代替喬本人寫在一張紙上。- 現在我們拿一張紙,在上面寫上喬的電話號碼。它就像一個對象引用。如果我們從盒子裡拿出一張寫有 Joe 號碼的紙,複印並放入幾個盒子,對 Joe 的引用會增加,但只能有一個 Joe。- 這種數據存儲的優點是可以有很多引用而只有一個對象。- 是興奮的。順便說一句,我幾乎明白了。只再回答一個問題:如果我將一個複雜類型變量賦值給另一個複雜類型變量會怎樣?- 那麼這兩個變量將包含相同的地址。因此,如果您更改存儲在一個複雜類型變量中的數據,則另一個複雜類型變量的數據也會更改因為你知道,變量存儲引用的對象實際上只有一個。然而,可能有大量變量存儲對對象的引用。 - 在沒有對象引用的情況下,什麼存儲在復雜類型變量(引用/類類型)中?真的會有這種事嗎? - 是的,阿米戈。你把我的話從我嘴裡拿走了。那可以。如果引用(複雜)類型變量中沒有對象引用,它會存儲null,一個特殊的 «null reference»。事實上,它只是存儲一個等於 0 的對象的地址。但是 Java 虛擬機從不創建地址為零的對象,因此它始終知道如果引用變量為 0,則那裡沒有對象。 舊級別 02 - 8我做對了嗎?變量分為兩種類型——原始變量和引用變量。基本類型變量存儲值,而引用類型變量存儲對象引用。原始類型有 int、char、boolean 等等。其餘的是參考變量,它們是使用類形成的。 - 沒錯,孩子。

3 Elly,什麼是物體

舊級別 02 - 9- 又是你最喜歡的老師。由於我們進展很快,我將告訴您對像是什麼以及如何處理它們。 - 要創建任何對象,都需要在其前面寫上對像類型名稱(class)和關鍵字new 。假設我們有一個 Cat 類,那麼: 舊級別 02 - 10- 如果您只是創建一個對象而不將其 [its reference] 分配給任何變量,會發生什麼情況? - 如果這樣做,Java 虛擬機將創建該對象並立即將其聲明為垃圾(未使用的對象)。一段時間後,它將在垃圾回收期間刪除該對象。 - 如果我不再需要該對象,我該如何銷毀它? - 你不能。一旦沒有變量來存儲對象引用,該對象將被標記為垃圾,JVM 將在下一次垃圾收集期間銷毀它。 只要有至少一個對象引用,它就會被認為是活的,不會被銷毀。當你想快速銷毀對象時,將其所有引用設置為null,即為引用該對象的所有變量賦值 null 。- 知道了。經過前面的講座,這似乎一點也不難。 - 好的,那麼這裡有一些任務可以提高你的技能。這些也在 System.out 上。但是以後會有更困難的。你可以向我們展示你製造的是什麼鋼。
任務
1個 編寫一個程序,顯示:«一步一步,事情就完成了。»。
2個 編寫一個顯示 7 次的程序:«做不可能的事很有趣。»。
3個 編寫一個程序,顯示:«總是渴望學習有用的東西。»。

4 Risha,變量的可見性。

- 你好,我最喜歡的學生。現在我將告訴你變量的可見性- 為什麼,也有不可見的變量? - 不,變量在可以訪問該變量的代碼位置可見。 有些變量可以從程序中的任何地方訪問,有些變量只能在它們的類中訪問,有些變量只能在一個方法中訪問。 - 例如,您不能在變量聲明之前引用它。 - 天氣晴朗。 - 以下是一些示例: 舊級別 02 - 111 在方法中聲明的變量從聲明開始到方法結束都存在/可見。 2 在代碼塊中聲明的變量存在於該代碼塊的末尾。 3 變量——方法參數——存在於方法範圍內的任何地方。 4 類/對像變量在其對象的整個生命週期內都存在。特殊訪問修飾符 public 和 private 還控制它們的可見性。 5 靜態類變量存在於程序運行時。訪問修飾符還決定了它們的可見性。 - 我喜歡圖片,一切都井井有條。 - 對你有好處,阿米戈。一直都知道你是個聰明人。- 我還會告訴您有關訪問修飾符的信息。別那麼害怕,這不是火箭科學。這些是您看到的 publicprivate詞。- 我不害怕,只是這裡很冷。 - 好,當然。您可以控制其他類對您類中方法和變量的訪問(可見性)。對於每個方法或變量,您只能指定一個訪問修飾符。1 修飾符public 可以從程序中的任何地方訪問帶有修飾符 public 標記的變量、方法或類。這是最高程度的開放,沒有限制。 2 修飾符private 標記有修飾符 private 的變量或方法只能從聲明它的類中訪問。對於所有其他類,標記的方法或變量是不可見的,就好像它們不存在一樣。這是最高程度的封閉性(僅在同一類中可見)。 3 修飾符默認值 如果任何修飾符不標記變量或方法,則認為它是修飾符默認值。具有該修飾符的變量或方法(即,根本沒有任何修飾符)對聲明它們的包的所有類都是可見的。僅在同一個包中。這個修飾符有時被稱為package來暗示整個包都可以訪問變量和方法,它們的類屬於 Explanation 選項卡: 舊級別 02 - 12

5 Diego,創建一堆變量的任務

- 你好朋友。如果需要,我會為您保留一份合同副本。那個鬼鬼祟祟的小氣鬼 Risha 幸福地不知道。你應該看到我合同上的金額。呵呵,呵呵。 - 幹得好,迭戈。我認為你教了我真正有用的東西。 - 當然可以,阿米戈。沒有痛苦就沒有收穫。但還是有人痛不欲生。 - 讓我們更好地轉手學習。現在我將向您展示如何以不同的方式創建一堆變量: 舊級別 02 - 13- 哇,迭戈!你太聰明了。 - 嘿嘿!謝謝,阿米戈。- 我想你已經錯過了我的任務。所以這裡有一些。那些人類,外星人對我們的機器人生活一無所知。除了我誰會教你呢?
任務
1個 編寫一個顯示 3 次的程序:«許多人活著只是因為射殺他們是違法的。»。
2個 編寫一個程序,顯示:«如果我需要你的意見,我會請你填寫必要的表格。»。
3個 編寫一個顯示 20 次的程序:«我說過的大部分事情我都沒說過。»。

6 Elly,通過引用傳遞。參考變量

- 嘿,阿米戈,又是我,艾莉。抱歉,我總是這麼說,但這就是 31 世紀地球上做事的方式。我將向您解釋引用變量的特徵以及如何將引用參數傳遞給函數(方法)。 - 我準備好了。 - 那麼,引用變量是除原始類型之外的所有類型的變量。這些變量只包含對象的地址(對象引用)。 - 基本類型的變量存儲一個值和類型,類變量存儲對同一類對象的引用,well,或null。我對嗎? - 絕對地。 - 那麼,什麼是參考? - 對象和它的引用是相關聯的,比方說,就像一個人和他的電話號碼。一個電話號碼不是一個人,但它可以用來打電話給一個人,向他提出要求,指導或命令他。引用也用於與對象交互。所有對像都通過引用相互交互。 - 就好像人們通過電話互相交流一樣? - 這是正確的。當你分配一個原始對象時,它的值被複製(複製)。當您分配一個引用變量時,只會復制對像地址(電話號碼),而不是對象本身。 - ОK,我明白了。 - 引用提供了另一個優勢:您可以將對象引用傳遞給任何方法,並且此方法將能夠通過調用其方法和訪問對象內的數據來使用其引用來修改(更改)我們的對象。 - 變量a 和 b舊級別 02 - 14的值在swap方法中互換。當您調用swap方法時,變量a 和 b接收值m 和 n的副本。因此,當您更改a & b的值時,變量m & n的值保持不變。在右欄的代碼中可以清楚地看到。 - 老實說,我對此一無所知。我可以再舉幾個例子嗎? - 在引用類型的情況下,您可以這樣做: 舊級別 02 - 15- 變量a 和b 分別被分配給emma 和alice 的引用,a 和b 的值在對象emma 和alice 內發生變化。 - 那麼也可以在其他類中聲明類嗎?哇! ——至於其他的,就不清楚了。 - 並非同時發生。

7 Elly,函數調用,返回值

——嗯,那我們轉身吧。我們將討論方法調用的工作原理,然後您再嘗試瀏覽一下上一課,好嗎? - 交易! - 好吧,那麼我會告訴你有關函數/方法調用和返回值的信息。- 命令被分組到函數中,因此您可以將它們作為一個複雜的命令在一個塊中運行。為此,您需要編寫函數(方法)的名稱,然後在名稱後的括號中指定值和參數。 舊級別 02 - 16- 在上面的例子中,我們編寫了一個函數,顯示傳遞的字符串 4 次。然後我們在第 6 行調用了函數 print4。 - 當執行到第 6 行時,程序會跳轉到第 9 行,並為 s 變量賦值“我喜歡移動它,移動它”。 - 然後將執行第 11-14 行,最後,函數將完成,程序將繼續執行第 7 行。 - 明白了。 - 您不僅可以將參數(參數)傳遞給函數,還可以返回函數運行的結果(值)。這是通過使用關鍵字 return 完成的。這是它的樣子: 舊級別 02 - 17- 我想我正在接受它。左邊和右邊的代碼是一樣的。在左側,它只是作為一個單獨的函數呈現。- 該函數計算一個值並將其傳遞給使用 return 命令調用它的人。至少我是這麼認為的。 - 基本上,這是真的。 - 什麼是 void 類型? - 有些函數只是做一些事情,但不計算和返回任何值,比如我們的方法main()。對於那些函數,它創建了一個特殊的結果類型void(空類型)。 - 如果函數不返回任何內容,為什麼我們可以什麼都不指定? - 想想每個變量是如何聲明的:類型和名稱。函數是用類型、名稱和括號聲明的。函數名後跟括號是函數調用! - 因此,與將函數分為返回值和不返回值兩類相比,提出“空類型”更容易嗎? - 確切地!你是個思維敏捷的人,我的孩子。 - 我怎樣才能返回一個空類型? - 你不能。它是這樣工作的:當 JVM 執行返回時命令,它計算return右邊表達式的值,將該值存儲在一個特殊的內存區域,並立即退出函數它在調用函數的地方使用保存的值作為函數調用的結果。你可以在上面的例子中看到它。 - 你是指int m = min(a,b)轉換為m = m2的地方嗎? - 是的。在函數調用之後,一切繼續工作,就好像它的結果不是函數而是寫在同一個地方。再讀一遍那句話,看看最後一個例子的代碼。 - 這看起來很容易,但實際上很難。我只得到一點點,僅此而已。 - 沒關係。第一次嘗試時,您只能理解您已經知道的內容。對你來說越是進入一個新的領域,就越是不清楚。結果會更棒。隨著時間的推移,一切都變得清晰起來。 - 好吧,如果是這樣,那就讓我們繼續吧。

8迭戈

- 嘿,阿米戈。這裡有幾個任務給你。現在您可以做的不僅僅是 System.out。盡力而為!我相信你!
任務
1個 兩個數字中的最小值
編寫一個函數,返回至少兩個數字。
2個 兩個數的最大值
編寫一個函數,最多返回兩個數。
3個 三個數字中的最小值
編寫一個函數,返回至少三個數字。
4個 至少四個數字
編寫一個函數,返回至少四個數字。
函數 min(a,b,c,d) 必須使用(調用)函數 min(a, b)
5個 字符串重複
編寫一個函數,顯示三倍於傳遞的字符串。每個字符串都應該在一個新行上。
6個 文本顯示
編寫一個函數,在同一行中顯示三次傳遞的字符串(單詞)。
單詞必須用空格分隔,不必合併為一個。

9 迭戈,班級全名

舊級別 02 - 18- 嘿,阿米戈,我想告訴你完整的班級名稱。- 您已經知道這些類在包中。因此,一個完整的類名是一個包含所有由點分隔的包的名稱,以及一個類名。示例: 舊級別 02 - 19 - 要在您自己的代碼中使用該類,您需要指定其全名。但是,您可以使用短名稱 - 僅限類名。為此,您需要通過在聲明類之前添加單詞import指定其名稱來“導入”此類。默認導入java.lang (String, Integer,...)包的類。您不需要指定它們。示例: 舊級別 02 - 20- 使用短名稱的示例: 舊級別 02 - 21- 我明白了。 - 美好的。

10 教授,關於類和對象的講座

舊級別 02 - 22- 嘿,阿米戈。希望你能理解 Elly 和 Risha 今天告訴你的一切。為了安全起見,正如我所承諾的,這裡有指向更多材料的鏈接:1 我的筆記 2 Thinking in Java。我已經告訴過你的那本很棒的書。如果您閱讀它,那就太好了。- 我希望你能抽出時間瀏覽一下。 - 咳咳。相信我會!

11 胡里奧

- 嘿,阿米戈!希望你能好好休息一下?

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION