日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

20182316胡泊 第2,3周学习总结

發布時間:2023/12/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20182316胡泊 第2,3周学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

20182316胡泊 2019-2020-1 《數據結構與面向對象程序設計》第2,3周學習總結

教材學習內容總結

第二章

  • 字符串
    • print與println區別:換行
    • 字符串連接:(字符串不能占用多行) +
    • 轉義字符:
  • 變量
    • 當未給出初值就使用變量,那么在編譯時會報錯
    • 而c語言則是會給一個隨機值,就看你能不能發現了(所以這一點還是java比較人性化)。
  • 賦值
    • 賦值只能在同數據類型之間進行。
      • 但是后面有賦值類型的數據類型轉換,應該算是一個特例吧。
  • 常量
    • 命名:常常字母大寫,中間用 _ 分隔
    • final int MAX_NUMBER = 435;
    • 常量在其存在期間始終保持一個值(類似于C語言的const常量吧)。
  • 數據類型
    • byte:8位,最大存儲數據量是255,存放的數據范圍是-128~127之間。
    • short:16位,最大數據存儲量是65536,數據范圍是-32768~32767之間。
    • int:32位,最大數據存儲容量是2的32次方減1,數據范圍是負的2的31次方到正的2的31次方減1。
    • long:64位,最大數據存儲容量是2的64次方減1,數據范圍為負的2的63次方到正的2的63次方減1。
    • float:32位,數據范圍在3.4e-45~1.4e38,直接賦值時必須在數字后加上f或F(七位有效數字)
    • double:64位,數據范圍在4.9e-324~1.8e308,賦值時可以加d或D也可以不加。(十五位有效數字)
    • boolean:只有true和false兩個取值。
    • char:16位,存儲Unicode碼,用單引號賦值。
  • count++ 與 ++count的區別
    • count++:先執行語句,再自增。
    • ++count:先自增,再執行語句。
    • 單獨寫時沒有區別,當放入語句中有區別。
  • 數據轉換
    • 賦值轉換:僅能實現加寬轉換,(自動)。
    • 提升:整形除以浮點型,整形自動轉化為浮點型,再進行運算。
    • 強制類型轉換:result=(float) total/count;
      • 強轉的優先級比除法高。
    • 布爾值不能轉換為其他任意一種數據類型,反之亦然。
  • Scanner類
    • import java.util.Scanner;:在類定義之前,告訴系統要使用Scanner類。
    • Scanner scan =new Scanner(System.in);:聲明創建了一個變量scan,代表一個Scanner對象。
    • message=scan.nextLine; :將下一行輸入的一行文本作為字符串變量保存。

第三章

  • String +變量:變量表示的不是對象,而是對象的地址。所以可以把變量看作是一個指針。
  • 別名:兩個變量同時指向同一個對象,則這兩個變量互稱為該對象的別名。
  • 下標(index):(類似于C語言中字符串的下標 a[0]。)
  • String類
    • .concat(""); 連接。
    • .toUpperCase();小寫轉為大寫。
    • .replace('old','new');轉換。
    • .substring(a,b);截取從第a位到第b位的字符串,返回。
  • 類庫:每個類庫都屬于一個包,類庫用包來組織
  • import聲明:如果想使用類庫中的類,要通過 import java.包名.類名 或者import.java.包名.*(在要用到多個類時)。
  • Random類:屬于java.util包,偽隨機數生成。

    import java.util.Random; ` ` Random generator = new Random(); ` ` int num1; num1=generator.nextInt(10);//在0~9之間產生一個隨機數。 num1=generator.nextInt(20)+5;//在5~24之間產生一個隨機數。 num2=generator.nextFloat();//在0~1之間產生隨機數。
  • printf方法
    • 為了在將已有C語言程序移植到java平臺時更方便。
    • System.out.printf("ID:%5d,name:%s",id,name);
  • 枚舉類型(類型安全的)
    • enum grade(類型名){A,B,C,D,E}
    • grade stu1(變量名)=grade.A;

教材學習中的問題和解決過程

  • 問題1:由int/long到float的轉換明明是加寬轉換,為什么會造成數據丟失?
  • 問題1解決方案:雖然由int、long到float是加寬轉換,但那是因為float有小數位,而float的有效位數為7位,int與long都要遠遠超過這個范圍,因此會有數據丟失的問題。

  • 問題2:語句:println("you entered: ?""+ message + " ?"");
  • 問題2解決方案:
    • "you entered: ?"" :?"表示左邊的雙引號,兩邊的“表示打印字符串。
    • +message+ :表示打印message。
    • " ?"" :表示打印右邊的雙引號
  • 問題3:compareTo(String str)的返回值如何計算。
  • 解決方案:compareTo從第一位開始比較, 如果遇到不同的字符,則馬上返回這兩個字符的ascii值差值.返回值是int類型
    • 1.當兩個比較的字符串是英文且長度不等時,
      • 1)長度短的與長度長的字符一樣,則返回的結果是兩個長度相減的值
      • 2)長度不一樣且前幾個字符也不一樣,從第一位開始找,當找到不一樣的字符時,則返回的值是這兩個字符比較的值
    • 2.當兩個比較的字符串是英文且長度相等時
      • 1)多個字符,第一個字符不同則直接比較第一個字符
      • 2) 多個字符,第一個字符相同則直接比較第二個字符,以此類推

代碼調試中的問題和解決過程

  • 問題1:在進行有輸入的程序單步調試時,直接調試會出現無法識別命令。
  • 問題1解決方案:仔細閱讀了課代表的總結的教程,建立了一個監聽的窗口,通過另一個窗口鍵入數值。
    方法鏈接

  • 問題2:在運行書上的程序3.1時,輸入了.substring(3,30)語句時,程序報錯。
  • 問題2解決方案:substring是返回字符串中從第a個開始一直到第b-1個結束的字符串,而我編的程序輸入的字符串沒有30位所以運行時報錯。

  • 問題3:縮窄轉換
  • 問題3解決方案:將變量定義為double,同時輸入時用scan.nextDouble.

  • 問題4:問題2:吃回車問題(可能是吧,反正C語言是的)
  • 問題4解決方案:當要輸入字符或字符串時,如果前面不是字符或字符串類型的輸入,那么就會出現吃回車問題,此時就多打一個op=scan.nextLine();將前者留在鍵盤緩沖區的回車吃掉,以便進行下一步的輸入。

  • 問題5:return只能返回一種類型的數據。
  • 問題5解決方法:我使用的是double來返回數據,而在程序中為了其實用性,增加了糾錯,比如“can not divide 0","unrecognizeable demand"等等,針對這個問題,有兩種解決方法:
    • 將返回的double型浮點數轉化為字符串
    • 將報錯語句換成-1,-2等數字,作為返回值返回。
  • 問題6:在將整形轉換為字符串時查到了String.valueof()和Integer.toString()兩個方法,有區別嗎?
  • 解釋:
    • Integer.toString()方法
      • 作用:該方法返回指定整數的有符號位的String對象,以10進制字符串形式返回,就好像將該整數值作為參數賦予 toString(int) 方法一樣。
      • 此外,Integer.toString(a,b) :將十進制的a轉換為b進制。
    • valueof()與Integer的不同:
      • 1、valueof()當輸入的為null即空指針時,會返回字符串“null”,而Integer.toString則會報錯。
      • 2、vlaueof()有多重用法,可以將int、float、double、boolean等等形式轉化為String。

代碼托管

(statistics.sh腳本的運行結果截圖)

上周考試錯題總結

1、 Of the following types, which one cannot store a numeric value? (在下列數據類型中,哪一個不能存儲一個數值型數據?)

A .int
B .byte
C .float
D .char 正確
E .all of these can store numeric values (以上所有類型都可以存儲數值型數據)
解析:char類型可以存儲數字,但數字是字符型的。

2、Given the following assignment statement, which of the following answers is true regarding the order that the operators will be applied based on operator precedence?
a = (b + c) * d / e - f; (下面給定的賦值語句中,基于運算符優先級,對于將被執行操作的順序,哪一個答案是正確的?)

A ., /, +, -
B ., +, /, -
C .+, , /, - 正確
D .+, /, , -
E .+, -, *, /
解析:沒有審題,以為是普通的優先級,結果是要看運算式子的。

3、What value will z have if we execute the following assignment statement?

int z = 50 / 10.00; (如果我們執行下面的賦值語句,z將得到什么值?)
A .5
B .5.0
C .50
D .10
E .none of the above, a run-time error arises because z is an int and 50 / 10.00 is not (以上皆錯,因z是一個整型數而50 / 10.00不是,會產生運行時錯誤) 正確
解析:z是一個整型數而50 / 10.00不是,會產生運行時錯誤,由float轉為int型時,會由于縮窄轉換而報錯。

4、A variable of type boolean will store either a 0 or a 1. (Boolean類型的變量將被存儲為0或1)

A .true
B .false 正確
解析:在java中,boolean存儲為true和false,而不是0和1。

5、As in the other members of the C family of languages (C, C++, C#), Java interprets a zero value as false and a non-zero value as true.

A .true
B .false
解析:雖然C族確實以這種方式解釋了零和非零值,但是Java要求使用保留常量true和false,或者使用關系和/或邏輯運算符進行邏輯計算。

結對及互評

  • 博客中值得學習的或問題:
    • 對上周的錯題進行了仔細的更正和課后復習,我對上周考試題的復習較為草率。
    • 博客撰寫詳細,有理有據。
    • 在撰寫博客的過程中可以加入更多自己的理解。
  • 代碼中值得學習的或問題:
    • 代碼風格良好,便于閱讀。
  • 基于評分標準,我給本博客打分:13分。得分情況如下:
  • 正確使用Markdown語法(加1分):

  • 模板中的要素齊全(加1分)

  • 教材學習中的問題和解決過程(3分)

  • 代碼調試中的問題和解決過程(3分)

  • 本周有效代碼超過300分行的(加1分)

  • 其他加分:
    • 周五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 進度條中記錄學習時間與改進情況的加1分
    • 有動手寫新代碼的加1分
    • 錯題學習深入的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習情況真實可信的加1分
  • 點評過的同學博客和代碼

    • 本周結對學習情況
      • 結對同學學號1
    • 學習內容
      • Scanner類讀輸入數據
      • Random類,String類,Math類中方法的使用
      • 格式化輸出
      • 自定義類

    其他(感悟、思考等,可選)

    • 感覺最近打代碼,比之前好了很多,對代碼和文件有了更加深層的理解,能夠稍微理解linux以及java的尿性了,將其與Windows上的各種操作分離開來。
    • 程序的錯誤有時就是很細小,當編譯出現錯誤時,我可能通過一種或一些奇怪的方法誤打誤撞編譯成功,甚至運行成功了,但是這些小小的問題背后可能有很多深層的知識,如果不想辦法解決,就只能一知半解,所以要有探索精神。
    • 本來以為java學習基本上步入正軌,但編寫類有給了我當頭一棒,太難了。

      學習進度條

    代碼行數(新增/累積)博客量(新增/累積)學習時間(新增/累積)重要成長
    目標10000行
    第一周93/933/320/20
    第三周880/8004/440/40
    • 計劃學習時間:50小時

    • 實際學習時間:40小時

    參考資料

    • 《Java程序設計與數據結構教程(第二版)》

    轉載于:https://www.cnblogs.com/hp12138/p/11544635.html

    總結

    以上是生活随笔為你收集整理的20182316胡泊 第2,3周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。