內容介紹
編輯推薦語言本身並不重要,解決問題的創新方法才是王道,學會像計算機科學家一樣思考。
程式設計思維和問題解決方案的能力,越來越受到重視。計算機科學思維方式、問題解決方法和算法經驗總結,對程式設計師讀者、計算機專業學生群體非常具有吸引力。
通過學習,你可以在JAVA方面達到初窺門徑的效果,同時對計算機編程這門技藝也會有一個全面而科學的認識。
內容推薦
《像計算機科學家一樣思考Java》作者基於自己在美國各所大學和學院講授計算機科學導論課程的經驗,開創了“像計算機科學家一樣思考(Howto Think Like a ComputerScientist)”的教學理念和方法。《像計算機科學家一樣思考Java》正是基於這樣的方法,用全新的角度、豐富的實例全面地講解了Java語言。
全書共15章。第1章介紹了編程的基本知識,即什麼是編程以及如何編程。第2章到第4章分別介紹了變數和類型、無返回值方法、條件語句和遞歸等基礎知識;第6章到第9章分別介紹了帶返回值的方法、疊代、循環、字元串和可變對象;第11章到第15章則分別介紹了對象、數組、面向對象編程等相對高級的話題。全書貫穿了一個GridWorld的程式示例,分三個部分逐步擴展,分別在第5章、第10章和第16章介紹,用以鞏固前面相應各章所介紹的知識和概念。附錄A介紹了Java圖形編程,附錄B介紹了Java中的輸入輸出,附錄C和D分別從程式開發和調試的角度給出了有用的建議。
《像計算機科學家一樣思考Java》適合Java的初學者和初級程式設計師閱讀,也可以作為相關專業或培訓的教程使用。通過學習《像計算機科學家一樣思考Java》,讀者不僅可以在Java方面達到初窺門徑的效果,同時對於如何掌握和套用計算機編程這門技藝也會有一個全面而科學的認識。
作者介紹
Allen B. Downey 是美國Olin工程學院的計算機科學副教授。他曾經在WellesleyCollege、Colby College和U.C.Berkeley教授計算機科學課程。他基於自己教授電腦程式設計課程的經驗,開創了“像計算機科學家一樣思考”(How to ThinkLike a Computer Scientist)的教學理念和方法,並由此編寫了幾本程式設計語言的圖書。 譯者簡介滕雲畢業於西北工業大學,現為ThoughtWorks公司軟體工程師,目前主要從事銀行、保險等領域的企業級軟體開發,感興趣的技術領域包括C/C++、Java、Ruby、Linux和自動化測試等。 周哲武碼農,躬耕於ThoughtWorks,不求聞達於諸侯,但求程式之樂。性喜靜、好宅、好酒,更好書。嘗以為不寫代碼即解決客戶問題為善之善者,乾淨優雅代碼解決問題次之。近年專注於企業級套用開發,擅長各種自動化測試策略,以及遺留系統代碼重構。作品目錄
第1章 程式之道1.1 什麼是程式語言
1.2 什麼是程式
1.3 什麼是調試
1.4 形式語言和自然語言
1.5 第一個程式
1.6 術語表
1.7 練習
第2章 變數和類型
2.1 更多列印
2.2 變數
2.3 賦值
2.4 列印變數
2.5 關鍵字
2.6 運算符
2.7 運算符優先權
2.8 字元串運算符
2.9 組合
2.10 術語表
2.11 練習
第3章 無返回值方法
3.1 浮點數
3.2 雙精度型轉整型
3.3 數學函式
3.4 組合
3.5 添加新方法
3.6 類和方法
3.7 為程式添加多個方法
3.8 形參和實參
3.9 棧幀圖
3.10 多參數方法
3.11 有返回值的方法
3.12 術語表
3.13 練習
第4章 條件語句和遞歸
4.1 模運算符
4.2 條件執行
4.3 選擇性執行
4.4 條件判斷鏈
4.5 嵌套條件
4.6 返回語句
4.7 類型轉換
4.8 遞歸
4.9 遞歸方法的棧幀圖
4.10 術語表
4.11 練習
第5章 GridWorld(第一部分)
5.1 入門
5.2 BugRunner
5.3 練習
第6章 有返回值方法
6.1 返回值
6.2 程式開發
6.3 組合
6.4 重載
6.5 布爾表達式
6.6 邏輯運算符
6.7 布爾方法
6.8 更多遞歸
6.9 飛躍的信心
6.10 另一個例子
6.11 術語表
6.12 練習
第7章 疊代和循環
7.1 多次賦值
7.2 疊代
7.3 while語句
7.4 表格
7.5 二維表格
7.6 封裝與泛化
7.7 方法
7.8 更多的封裝
7.9 局部變數
7.10 更多的泛化
7.11 術語表
7.12 練習
第8章 字元串
8.1 調用對象上的方法
8.2 字元串長度
8.3 遍歷
8.4 運行時錯誤
8.5 閱讀文檔
8.6 indexOf方法
8.7 循環和計數
8.8 自增和自減運算符
8.9 字元串是不可變的
8.10 字元串是不可比較的
8.11 術語表
8.12 練習
第9章 可變對象
9.1 Point對象和Rectangle對象
9.2 包
9.3 Point對象
9.4 實例變數
9.5 對象作為方法參數
9.6 Rectangle對象
9.7 對象作為返回類型
9.8 對象是可變的
9.9 別名
9.10 null
9.11 垃圾回收
9.12 對象類型和原始類型
9.13 術語表
9.14 練習
第10章 GridWorld(第二部分)
10.1 Termite類
10.2 Langton白蟻
10.3 練習
第11章 創建對象
11.1 類定義與對象類型
11.2 Time類
11.3 構造函式
11.4 更多構造函式
11.5 創建新對象
11.6 列印對象
11.7 操作對象
11.8 純函式
11.9 修改器
11.10 填值方法
11.11 漸進式開發
11.12 泛化
11.13 算法
11.14 術語表
11.15 練習
第12章 數組
12.1 訪問數組元素
12.2 拷貝數組
12.3 for循環
12.4 數組和對象
12.5 數組長度
12.6 隨機數
12.7 隨機數數組
12.8 計數
12.9 直方圖
12.10 單次遍歷
12.11 術語表
12.12 練習
第13章 對象數組
13.1 內容前瞻
13.2 Card對象
13.3 printCard方法
13.4 sameCard方法
13.5 compareCard方法
13.6 撲克牌數組
13.7 printDeck方法
13.8 查找
13.9 整體與部分
13.10 術語表
13.11 練習
第14章 數組對象
14.1 Deck類
14.2 洗牌
14.3 排序
14.4 子集
14.5 洗牌和發牌
14.6 合併排序法
14.7 類變數
14.8 術語表
14.9 練習
第15章 面向對象編程
15.1 程式語言和風格
15.2 對象方法和類方法
15.3 toString方法
15.4 equals方法
15.5 錯誤
15.6 繼承
15.7 類的層級結構
15.8 面向對象設計
15.9 術語表
15.10 練習
第16章 GridWorld(第三部分)
16.1 ArrayList
16.2 接口
16.3 public和private
16.4 生命遊戲
16.5 LifeRunner
16.6 LifeRock
16.7 同步更新
16.8 初始條件
16.9 練習
附錄A 圖形
A.1 Java二維圖形
A.2 Graphics方法
A.3 坐標
A.4 顏色
A.5 米老鼠
A.6 練習
附錄B Java中的輸入和輸出
B.1 System對象
B.2 鍵盤輸入
B.3 檔案輸入
B.4 捕獲異常
附錄C 程式開發
C.1 策略
C.2 失敗的開發模式
附錄D 調試
D.1 語法錯誤
D.2 運行時錯誤
D.3 邏輯錯誤