20155325 2016-2017-2 《Java程序設計》第3周學習總結

教材學習內容總結

  • 別用==直接比較浮點數運算結果。
  • Integer默認值-128到127,若超出,須要修改系統屬性,因此最好經過equals()比較。
  • 系統錯誤提示:若超出數組範圍,則顯示ArrayIndexOutOfBoundsException錯誤。
    若是沒法剖析傳入的String事例,則會拋出NumberFormatException的錯誤。
  • 設初始值
import java.util.Arrays;
Arrays.fill(數組名,初始值);
  • 比較
String.name1 = 「lalala」;
String.name2 = 「lalala」;
System.out.println(name1==name2);

結果:truehtml

String.name3 = new String(「lalala」);
String.name4 = new String(「lalala」);
System.out.println(name3.equals(name4));

結果:truejava

  • 在類中定義方法,若是不用返回值,方法名稱前能夠聲明void。
  • private關鍵字可以使用戶沒法直接存取私有數據,只能按照定義的流程進行修改。取值方法的名稱形式是固定的,也就是以get開頭,以後加上首字母大寫的單詞。

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

  • 問題1:書上P88ClassObject DecimalDemo.java中對subtract的好奇。
  • 問題1解決方案:搜索資料。結果以下:

BigDecimal result = o1.subtract(o2);
這句話的意思是o1-o2 。linux

BigInteger類是針對大整數的處理類,而BigDecimal類則是針對大小數的處理類。
java.math.BigDecimal類,它支持任何精度的定點數。git

Java中float和double只能用來作科學計算或者是工程計算,在商業計算中咱們要用java.math.BigDecimal(我以爲這也算是咱們會用到的運算)數組

拓展:ide

BigDecimal使用事例:函數

public class Arith {
 2     /**
 3      * 提供精確加法計算的add方法
 4      * @param value1 被加數
 5      * @param value2 加數
 6      * @return 兩個參數的和
 7      */
 8     public static double add(double value1,double value2){
 9         BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
10         BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
11         return b1.add(b2).doubleValue();
12     }
BigDecimal類 做用
b1.add(b2).doubleValue(); 加法
被減數.subtract(b減數).doubleValue(); 減法
b1.multiply(b2).doubleValue(); 乘法
除數.divide(被除數, 精確範圍).doubleValue(); 除法
BigInterger類經常使用方法 做用
abs() 返回其值是此BigInteger的絕對值的BigInteger
add(BigInteger val) 返回其值爲(this+val)的BigInteger
subtract(BigInteger val) 返回其值爲(this-val)的BigInteger
multiply(BigInteger val) 返回其值爲(this*val)的BigInteger
divide(BigInteger val) 返回其值爲(this/val)的BigInteger
remainder(BigInteger val) 返回其值爲(this%val)的BigInteger
compareTo(BigInteger val) 將此BigInteger與指定的BigInteger進行比較。返回值一、0、-1分別表示大於、等於、小於
pow(int exponent) 返回當前大數的exponent次冪
toString() 返回此BigInteger的十進制字符串表示形式
toString(int radix) 返回此BigInteger的給定基數(radix進制)的字符串表示形式

注:abs():返回某數字的絕對值.參數能夠是float、double、long或int。若是是byte或short類型,那麼它們會被強制轉換成int類型。學習

參考資料:字體

java.math.BigDecimal類的用法考使用BigDecimal進行精確運算(實現加減乘除運算)JAVA Math類的數學計算函數this

  • 問題2:不明白如下代碼的含義
Scanner scanner=new Scanner(System.in);
int s=scanner.nextInt();
  • 問題2解決方案:查百度。結論:此時從鍵盤輸入值爲s的值。

拓展:

++當經過new Scanner(System.in)建立一個Scanner,控制檯會一直等待輸入,直到敲回車鍵結束,把所輸入的內容傳給Scanner,做爲掃描對象。若是要獲取輸入的內容,則只須要調用Scanner的nextLine()方法便可。++

舉例:

import java.util.Scanner;
/**
 * Created by DELL on 2017/3/12.
 */
public class ShuRuTest {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("YES or NO?");
        while (true) {
            String line = s.nextLine();
            if (line.equals("NO")) break;
            System.out.println(">>>" + line);
        }
    }
}

結果:

參考資料:
java 中的Scanner(很是詳細不看後悔)

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

  • 問題1:調整idea字體大小
  • 問題1解決方案:Intellij IDEA 設置字體的大小
  • 問題2:純屬平常做死,原有代碼成功後,嘗試輸入別的東西,有些連編譯都通不過就不放了。

原本是應該這樣的:

而後我輸入不一樣字符

而後對應'b','o','x'輸出的是不明白原因的數字。

  • 問題2解決方案:
    類比C語言,我去查詢了相關的ASCII碼,果真輸出的是對應的ASCII碼 。 ASCII編碼轉換

若想要輸出字母的話,改變輸出格式爲%c,以下圖:

拓展:

Java 數組基礎
經過這個博客能夠更輕鬆瞭解數組的使用方法,已然很簡潔。

  • 問題3 P105數組複製,手抖抄錯,一時沒檢查出來。

換成書上的名稱編輯後依然

出現不對勁的地方,而後在cmd裏重輸,發現同樣,因此排除了是idea錯誤。

但其實!!!我次日才發現我輸出輸反了倆字符……

對於%和d之間的數字引發了好奇,通過實驗 我發現,當無數字時僅僅將數字輸完,當輸入位數少於數字位數,則從左邊開始空格佔位。

  • 問題3:運行結果出乎意料「NaN"。

代碼託管

  • 代碼提交過程截圖:

  • 代碼量截圖:

(上週的截圖是185行,可是此次我把IDEA裏上週的代碼拷進了一個新建的week2包裏,總代碼量535-這周488=47,結果算下來上週的只有47行代碼了。)

上週考試錯題總結

  • ~0b1011的十進制值是(-12)

解決:(計算機存八位)->1011->00001011->(「~」意爲「取反)->11110100->存補碼且符號位爲1->除符號位其他取反再+1->10001100->結果爲-12.

  • Linux Bash中,查找當前目錄中前天建立的Java文件的命令是(find . –name *.java -ctime 2)

解決:-ctime:建立時間;linux系統中‘find’的詳細用法;當前目錄爲:「.」;昨天用1,前天用2。

  • System.out.printf("%b", 11)的輸出結果是0b1011 (X)

解決:

  • 0x10%9 的結果是( 7 )0x10&9 的結果是(0)

解決:「0x」的意思是:數據是十六進制的

其餘

1.以前對軟件和模板不熟悉,加上本身的不仔細,做業不規範,本次做業特地反覆檢查。
2.關於考試題,但願之前的卷子可以被髮回來糾錯,或者作完後本身能用手機拍一下。
3.之後會更加註重對平時時間的規劃,合理利用散碎時間學習。
4.前兩週被安軟件折磨得夠嗆,這周終於能夠作一個安靜敲代碼的美狗子了……

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 16篇 400小時
第一週 9/9 1/1 19/19 熟練下載安裝技能,鍛鍊解決問題能力
第二週 185/194 1/2 16/35 下載並熟悉IDEA,練習使用碼雲、git的技能。
第三週 488/535 1/3 18/53 花了更少時間磨合軟件,學習更順利

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

參考資料

相關文章
相關標籤/搜索