[心得] 又再次入門了 Java
網頁好讀版本
https://qrtt1.medium.com/learning-java-basic-again-88391fd4e14e
https://imgur.com/a/qa5DlyH
(基本概念圖片支援)
近期搭著 ITHOME 鐵人賽 與 JCConf 2023 宣傳期的氣氛弄了個簡單的
Java 教學。 雖然自己已經離「初學」時期有一點久遠,但持續累積了
不少引導的經驗後,現在回頭看學習材料會驚覺,原來我習慣的表達方
式或學習策略,在經歷了多年後已經跟書上有著明顯的不同。
特別是基礎的「資料型別」的部分。
儘管現在較新的語言已經不太區分原生型別 primitive type 與其他自
訂型別,以 Java 來說就是 reference type 也就是類別。無論是何種
情況,入門用的書籍或是影音教材都會有教到這個單元。
我發現我自己傾向在介紹或是「傳遞知識」的時候,往往喜歡把它們一
起揉起來傳授。
原生型別 → 可以使用簡單運算子的型別在算式 (expression) 之內
+ - * / > < ==
https://openhome.cc/zh-tw/java/syntax-abc/operator/
在不考慮特殊的情況下,像是多數語言對 String 型別有特別的優待,
他即可以做 method call 也可以有基本的加法運算。這類的特例先不
納入討論的情況,當學習者拿到一個變數,心中的思考模式只要簡單
地判斷:
1. 它是一個原生型別嗎?
2. 如果它是一個原生型別,那我可以對它用的就是基本運算子。
3. 如果他不是一個原生到別,那我可以對它用「非原生型別的運算子」
那麼,麼是非原生型別的運算子呢?也就是我們有哪些選項可以對待它?
以 Java 來舉例,那就是 property access 或 method invoaction。
所謂的 access 就是 read 或 write。
例如,我們可以「讀取」foobar 變數的 field1 屬性:
foobar.field1
「寫入」與讀取的語言相近,只是多了「賦值」的動作:
foobar.field1 = "富爸";
除了 access 之外,就是呼叫方法 (method invocation):
foobar.method1();
呼叫方法跟 read 相似,但多了一對的小括弧 (),
而這小括弧內可以再放新的參數進去,這參數又是「原生型別」或
「非原生到別」的組合。
基於上述簡單的判斷策略,後來我在引導新手入門,
或引導自己入門新的語言,我大概都先去弄清楚這個基本的規則。
至於那些一個資料型別佔多少空間或合理的值域是什麼?
這些查表就有的事不太需要花費心力。
運用這些簡單的思路,自己體感減少了許多學習新的程式語言時的心理負擔。
有哪些東西也是大家在「經歷了多年後」反思過,
覺得用它來教別人會更有效率的思路呢?
相關連結
* ITHOME 鐵人賽觀賽看版 https://bit.ly/46dVxPZ
* Java 幼幼班播放清單 https://bit.ly/3Z98CHL
--
看完覺得java好囉嗦 有人寫程式真的會思考是不是原生型別
的問題嗎
java suck
只要我看好java好找工作,開發速度不差嗎?跟其他靜態
語言相比的話
只要typo,只有
就Java設計爛
Java真的是滿滿古早味XD
給你錢叫你寫什麼就什麼
其實重點不是在原生型別本身, 而是先區分出哪些型態可以直接參與 expression 的運作呦。 因為初學者常常接到了一個值不知道如何是好,這是一個簡單的判斷思路。 在新的語言儘管沒等別弄出原生型別,但能參與基礎運作的部分熟悉了, 後續的應對方式都會相對簡單,可以迅速地減少認知負擔呦。
※ 編輯: qrtt1 (118.167.161.193 臺灣), 09/28/2023 19:29:42 ※ 編輯: qrtt1 (118.167.161.193 臺灣), 09/28/2023 19:35:54可以用kotlin (誤
有Kotlin還寫什麼Java
推推
從入門到放棄
推個分享文
java suck, kotlin 比他好一百倍,考慮轉 go 了
一樓程度這樣就不要說出來給人笑好嗎....
我覺得GO比較難搞..
35
[心得] C#基礎名詞解釋會發這篇文主要是面試被洗臉 我都會做啊 但我就不會解釋啊 雖然是寫給自己看的 但就分享出來吧22
[問卦] Python是怎麼突然爆紅的?在2015年左右以前 程式語言的霸主要嘛以偏底層可以控制記憶體的C/C++為主 要嘛是物件導向能力強大的Java、C# 或者是網頁在使用的html、php、JavaScript 即使是資料科學分析也有R 工程科學也有matlab 結果就是Python在這幾年迅速竄起 直追Java和C的龍頭寶座18
[討論] 請大家聊聊靜態語言的缺點繼上個系列串 我想問問大家認為靜態型別的缺點是什麼呢? 本人寫Java也寫JS,最近也在碰Python 我自己寫Java,一開始覺得宣告比較麻煩,需要思考這個變數是什麼型別 (其實說實在,Java的變數最常使用也就幾個,我正常刷Leetcode除非特殊情況否則很少會想不出要用什麼型別的變數)12
Re: [討論] 寫三元判斷式code review被打槍從 C++ 的角度來說 三元運算子有機會改變 l-value/r-value 的性質,進而破壞最佳化 舉個簡單例子 可以看到用三元運算子的時候,回傳區域變數竟然要 copy 而不是 move 雖然說 Java 沒有這些1
Re: [討論] 請大家聊聊 JavaScript的缺陷小弟介紹自己語言的圖譜。 1.寫 Java 三年(沒在寫了)。 2.被公司逼寫 Nodejs 寫了五年(現在還在寫)轉換成本半年。 3.被公司逼 TS 四年(現在還在寫)轉換成本一個月。 4.被公司逼 GO 兩年(現在還在寫)轉換成本兩周。X
Re: [討論] 請大家聊聊靜態語言的缺點這個問題實在是匪夷所思 以認知科學的觀點看,當然是靜態型別優於動態型別呀! 就像offer文在討論薪水,在那邊 N 來 N 去 在許多重要性質不確定的情況下,很多東西是很難精確的下判斷的 不過如果貴圈的專注層次不在這裡,不在乎,那也就無所謂5
Re: [問卦] 自學python 會很難嗎?文章很長有2千個字,或更多。 自學python 會很難嗎?這個問題沒有一個簡單的答案,因為學習程式語言的難易 度取決於許多因素,例如個人的興趣、動機、基礎知識、學習資源、學習方法等。 一般來說,python 是一種相對容易上手的程式語言,它有著簡潔明確的語法、豐富 的函式庫和社群支援,適合初學者入門。但是,要達到精通的程度,還需要不斷地3
Re: [請益] 比物件導向更先進的程式設計思想?幾個迷思 很多人會講C沒有OOP 實際上C有 OOP是一種paradigm 本質上還是工程師的抽象化能力 有OOP思想的人去寫C 就會有OOP的味道 腦袋裝義大利麵的寫C++還是Java C# Swift 出來都是義大利麵3
Re: [討論] 請大家聊聊靜態語言的缺點借題發揮一下:static typed for the win 不過還是先切題回答「靜態語言的缺點」: 在大部分常用的靜態語言中,的確可能出現 valid program 不好標注 type 的情況 不過到底有多難標注就完全看是哪個語言跟哪個版本了 -----1
Re: [請益] 多型用在哪你這個例子來講 measure()的引數就是Cup型別 所以宣告變數c的型別必須是Cup 至於為什麼measure()不放在Cup裡面 是因為如果所有Cup的使用者都把他們要的method