目錄html
第5章核心類
5.1java.lang.Object
1.java.lang.Object類表示一個Java對象。實際上,全部的類都直接或間接地派生自這個類。
5.2java.lang.String
1.java.lang.String是最常使用的一個類,而且絕對也是最重要的類之一。一個String對象是常量,一旦建立了,不能修改其值。
2.一般將一個字符串字面值賦值給一個String引用變量,而非用關鍵字構建一個String引用變量。
5.2.1比較兩個字符串
1.使用==操做符比較兩個String對象s1和s2。若相同,(s1==s2)計算爲true;若不一樣,(s1==s2)計算爲false。
5.2.2字符串的字面值
1.可使用加號把兩個字符串字面值鏈接起來:「」+「」;也能夠將一個String和一個基本數據類型或其餘的對象鏈接起來:「」+3
5.2.6String類的方法
1.valueOf方法將一個基本類型、一個字符數組或Object的一個實例轉換爲一個字符串表示。例如,以下的代碼返回字符串「23」:String.valueOf(23)。
2.Format方法容許你傳遞任意數目的參數。要指定一個參數,使用%s表示法,表示數組中的下一個參數。例如,以下是對printf方法的一次方法調用:java
String firstName=「John」; String Lastname=「Adams」; System.out.format(「First name: %s. Last name: %s」, firstName,lastName);
5.3 java.lang.StringBuffer和java.lang.StringBuilder
1.String對象是不可變的。最好使用java.lang.StringBuffer和java.lang.StringBuilder類。一旦完成了對字符串的操做,能夠將一個StringBuffer或StringBuilder對象轉換爲一個String對象。StringBuffer類是爲了可變的字符串而單獨使用的,方法同步,適合在多線程環境中使用。StringBuilder是StringBuffer的異步版本。
5.5java.lang.Class
1.代碼清單5.1 ClassDemo類android
package app05; public class ClassDemo{ public static void main(String[] args){ String country="Fiji"; Class myClass=country.getClass(); System.out.println(myClass.getName()); Class klass=null; try{ klass=Class.forName("app05.Test"); }catch(ClassNotFoundException e){ } if(klass!=null){ try{ Test test=(Test) klass.newInstance(); test.print(); }catch (IllegalAccessException e){ }catch (InstantiationException e){ } } } }
5.6 java.lang.System
1.System類的三個字段是out、in和err:
out字段表示標準的輸出流;
err字段也表示一個PrintStream對象,默認狀況下,輸出也會從當前調用Java程序的地方通向控制檯。其目的是顯示那些應該當即引發用戶注意的錯誤消息;
in字段表示輸入標準流。
2.代碼清單5.2 InputDemo類git
public class Employee{ public int age; public double salary; public Employee(){ } public Employee(int ageValue, double salaryValue){ age=ageValue; salary=salaryValue; } }
5.7 java.util.Scanner
1.可使用Scanner來獲取鍵盤輸入,在實例上調用next方法。next方法會緩存用戶從鍵盤或其餘設備輸入的字符。
2.代碼清單5.3 使用Scanner來接受用戶輸入數據庫
package app05; import java.util.Scanner; public class ScannerDemo{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); while(true){ System.out.print("What's your name?"); String input=scanner.nextLine(); if(input.isEmpty()){ break; } System.out.println("Your name is"+input+"."); } scanner.close(); System.out.println("Good bye"); } }
第6章 數組
6.1 概覽
1.每次建立一個數組,在後臺,編譯器都要建立一個對象以容許:
(1)經過length字段來獲取數組中的元素的數目。
(2)經過指定一個索引來訪問每個元素。
一個數組是一個Java對象。
6.5 查找一個數組
1.代碼清單6.1 一個二分查找的示例vim
package app06; import java.util.Arrays; public class BinarySearchDemo{ public static void main(String[] args){ int[] primes={2,3,5,7,11,13,17,19}; int index=Arrays.binarySearch(primes,13); System.out.println(index); index=Arrays.binarySearch(primes,4); System.out.println(index); } }
代碼清單6.1中的BinarySearchDemo類使用了一個int類型的數組,它包含了前8個素數。傳入13做爲查找鍵,將會返回5,由於13是該數組中的第6個元素,其索引爲5.傳入4做爲查找鍵,將會找不到匹配,該方法返回-3.這是-2減去1的結果。若是要將該鍵插入到數組中的話,它本應該插入到索引2的位置。
6.6 給main方法傳入一個字符串數組
1.代碼清單6.2 訪問main方法的參數數組
package app06; public class MainMethodTest{ public static void main(String[] args){ for (String arg:args){ System.out.println(arg); } } }
6.7 多維數組
1.代碼清單6.3 一個多維數組緩存
package app06; import java.util.Arrays; public class MultidimensionalDemo{ public static void main(String[] args){ int[][] matrix=new int[2][3]; for(int i=0;i<2;i++){ for(int j=0;j<3;j++){ matrix[i][j]=j+i; } } for(int i=0;i<2;i++){ System.out.println(Arrays.toString(matrix[i])); } } }
第8章錯誤處理
8.1 捕獲異常
1.try一般和catch和finally使用。錯誤處理的步驟能夠歸納以下:
(1)將可能致使一個錯誤的代碼隔離到一個try語句塊中。
(2)對於每個單個的catch語句塊,編寫出若是try語句塊中發生特定類型的一個異常,將要執行的代碼。
(3)在finally語句塊中,編寫出不論是否發生錯誤都將運行的代碼。
2.代碼清單8.1 NumberDoubler類多線程
package app08; import java.util.Scanner; public class NumberDoubler{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String input=scanner.next(); try{ double number=Double.parseDouble(input); System.out.printf("Result:%s",number); }catch(NumberFormatException e){ System.out.println("Invalid input."); } scanner.close(); } }
[](https://img2018.cnblogs.com/blog/1607929/201903/1607929-20190316113255047-589450971.pngapp
第9章 操做數字
9.1 裝箱和拆箱
1.將一個基本類型轉換爲一個包裝類對象,稱爲裝箱(boxing);從一個包裝類對象轉換爲基本類型,稱爲拆箱(unboxing)。
裝箱——
Integer number=3;//assign an int to Integer
拆箱——
Integer number=new Integer(100); int simpleNumber=number;
9.2 數字解析
1.數字解析的目的是將一個字符串轉換爲一個數字基本類型。若是解析失敗,例如,因爲字符串不是一個數字或者是一個超出了指定範圍的數字,程序將會拋出一個異常。
2.代碼清單9.1 解析數字(NumberTest.java)
package app09; import java.util.Scanner; public class NumberTest{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String userInput=scanner.next(); try{ int i=Integer.parseInt(userInput); System.out.println("The number entered:"+i); }catch(NumberFormatException e){ System.out.println("Invalid user input"); } } }
9.3 數字格式化
1.代碼清單9.2 NumberFormatTest類
package app09; import java.text.NumberFormat; import java.util.Locale; public class NumberFormatTest{ public static void main(String[] args){ NumberFormat nf=NumberFormat.getInstance(Locale.US); System.out.println(nf.getClass().getName()); System.out.println(nf.format(123445)); } }
9.6 計算貨幣
1.float和double都不適合於計算貨幣。
2.代碼清單9.3 使用BigDecimal
package app09; import java.math.BigDecimal; public class BigDecimalDemo{ public static void main (String[] args){ double balance=9.99; balance-=0.10F; System.out.println(balance); BigDecimal balance2=BigDecimal.valueOf(9.99); BigDecimal accountFee=BigDecimal.valueOf(.1); BigDecimal r=balance2.subtract(accountFee); System.out.println(r.doubleValue()); } }
9.7 生成隨機數
1.代碼清單9.4 隨機數生成器
package app09; public class RandomNumberGenerator{ public int generate(){ double random=Math.random(); return(int)(random*10); } public static void main(String[] args){ RandomNumberGenerator generator= new RandomNumberGenerator(); for(int i=0;i<10;i++){ System.out.println(generator.generate()); } } }
從圖中能夠看出全部異常類型都是內置類Throwable的子類,於是Throwable在異常類的層次結構的頂層。
接下來Throwable分紅了兩個不一樣的分支,一個分支是Error,它表示不但願被程序捕獲或者是程序沒法處理的錯誤。另外一個分支是Exception,它表示用戶程序可能捕捉的異常狀況或者說是程序能夠處理的異常。其中異常類Exception又分爲運行時異常(RuntimeException)和非運行時異常。
Java異常又能夠分爲不受檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。
Error:Error類對象由 Java 虛擬機生成並拋出,大多數錯誤與代碼編寫者所執行的操做無關。例如,Java虛擬機運行錯誤(Virtual MachineError),當JVM再也不有繼續執行操做所需的內存資源時,將出現 OutOfMemoryError。這些異常發生時,Java虛擬機(JVM)通常會選擇線程終止;還有發生在虛擬機試圖執行應用時,如類定義錯誤(NoClassDefFoundError)、連接錯誤(LinkageError)。這些錯誤是不可查的,由於它們在應用程序的控制和處理能力以外,並且絕大多數是程序運行時不容許出現的情況。對於設計合理的應用程序來講,即便確實發生了錯誤,本質上也不該該試圖去處理它所引發的異常情況。在Java中,錯誤一般是使用Error的子類描述。
Exception:在Exception分支中有一個重要的子類RuntimeException(運行時異常),該類型的異常自動爲你所編寫的程序定義ArrayIndexOutOfBoundsException(數組下標越界)、NullPointerException(空指針異常)、ArithmeticException(算術異常)、MissingResourceException(丟失資源)、ClassNotFoundException(找不到類)等異常,這些異常是不檢查異常,程序中能夠選擇捕獲處理,也能夠不處理。這些異常通常是由程序邏輯錯誤引發的,程序應該從邏輯角度儘量避免這類異常的發生;而RuntimeException以外的異常咱們統稱爲非運行時異常,類型上屬於Exception類及其子類,從程序語法角度講是必須進行處理的異常,若是不處理,程序就不能編譯經過。如IOException、SQLException等以及用戶自定義的Exception異常,通常狀況下不自定義檢查異常。
Error和Exception的區別:Error一般是災難性的致命的錯誤,是程序沒法控制和處理的,當出現這些異常時,Java虛擬機(JVM)通常會選擇終止線程;Exception一般狀況下是能夠被程序處理的,而且在程序中應該儘量的去處理這些異常。
問題1解決方案:
Linux Bash下調試代碼:在相應文件夾下選擇在終端打開——用vim生成HelloJDB.java——直接javac -g -d HelloJDB.java——java HelloJDB
調試基礎——
方法斷點:stop in HelloJDB.main;stop at HelloJDB:12
行斷點:stop in HelloJDB.main-run-locals-step(next)-locals-print i-print j-list
條件斷點:
臨時斷點:
使用:jdb -classpath .:./bin HelloJDB 調試程序;JDB不支持條件斷點和臨時斷點
實例:類的調試-遞歸學習
問題2解決方案:(1)數據庫鏈接測試
(2)訪問數據庫表-封裝新增留言信息-測試:
https://gitee.com/EvelynYang/20189230/tree/master/src
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 200/200 | 2/2 | 20/20 | |
第二週 | 300/500 | 1/3 | 18/38 | |
第三週 | 500/1000 | 1/4 | 38/76 |