學會編程,而不是學會Java
作者:劉欣
由於《我是一個線程》這篇文章的廣泛傳播, 很多加了我的QQ和微信,交流編程學習的問題。
但是我發現其中很多初學者,尤其是半路出家的遇到了一個很普遍的情況: 那就是只學會了Java 的語法, 而沒有學會編程。
我拿一個例子來說一下, 下面是一個SimpleList 的類, 模仿java 的ArrayList, 已經定義好了介面,需要實現具體的業務:
/**
* 自定義的一個模仿ArrayList的類, 你需要實現其中的add, get, remove , 等方法
* @author 劉欣
*/
public class SimpleList{
private Object[] elementData;
private int size=0;
public intsize() {
return -1;
}
public SimpleList(){
}
public booleanisEmpty() {
return false;
}
public booleanadd(T e) {
return false;
}
public booleanremove(Object o) {
return false;
}
public Tget(int index) {
return null;
}
}
然後我拿這個類給幾個人測試, 我發現很少人能夠順利的把這幾個方法給實現了, 哪怕是非常粗糙的實現也沒有。
感興趣的同學也可以用你擅長的語言嘗試一下。
這個題目不要求實現複雜的演算法, 也不需要進行面向對象的設計,也不需要考慮多線程下的線程安全, 況且已經給了提示:
用一個Object數組來實現。
如果說有一點語法層面的難度, 那就是使用了一點泛型。
其實如果我把泛型去掉, 估計他們還是實現不了, 因為這個類的核心邏輯不是泛型。
這個SimpleList 要求的就是能對一個數組進行操作,核心就兩點:
1. 能往數組添加數據, 記錄size ,如果數組空間不夠了, 需要增大空間
2. 能刪除數組指定位置的數據,並且把之後的數據往前挪動。
難嗎?這其實是編程序的基本素養, 編程的本質,和用什麼語言實現沒有關係。
如果不是Java , 學的是C#, 或者Python, 我估計結果也差不多。
我想可能是不少人都缺乏最最基本的數據結構和演算法的訓練, 還沒有養成面向計算機的邏輯思考的方式。
解決的辦法其實也很簡單:就是多實踐,多編碼, 我推薦多做數據機構和演算法的習題, 這也是我個人的經驗, 大學時把數據結構的習題都做一遍,後來工作中只要不是設計演算法, 基本上沒要難住我的。
如果以後想選擇碼農作為職業, 這種編程能力是必不可少的, 所以在校的同學, 不妨從現在就開始, 把缺失的能力不上。
本文編號2307,以後想閱讀這篇文章直接輸入2307即可。
輸入m可以獲取到文章目錄
本文內容的相關公眾號推薦
Java編程
程序員的那點事
更多推薦《15個技術類公眾微信》
涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。
※程序猿技能表:Java、C/C+、Android、iOS、PHP、前端……
※試試Linux下的ip命令,ifconfig已經過時了
※這本演算法書寫了七年
※HTTPS的中那些加密演算法
※看破了一個網路詐騙犯,並向他隨手丟了一個木馬病毒……
TAG:程序猿 |
※一步學會Python高級編程
※學會思考,而不只是編程
※無需編程,僅用攝像頭,Google最新項目讓你3分鐘學會機器學習
※無需編程,僅用攝像頭,Google最新項目讓你3分鐘學會機器學習
※一步步學會Python高級編程
※學習Java編程語言難不難
※學習java編程沒有想像的那麼難
※Java編程初學者如何做到透徹
※Cplusplus,學習多態總結,編程學習
※自學Java編程的幾大技巧總結
※沒有Java編程基礎,學習困難很大嗎?
※Java程序員會選擇Java編程語言究竟是什麼原因呢
※編程零基礎如何學好Java開發?
※學慣用 Python 編程時要避免的 3 個錯誤
※Python vs R,誰才是機器學習編程語言的首選?
※學習Java編程去培訓機構有用嗎?
※自學java編程的學習路徑和框架結構,這裡有都有!簡潔明了!
※Java Socket編程
※學Java編程技術順應時代潮流