1. 程式人生 > >Java基礎學習(二)

Java基礎學習(二)

組成 定義類 模塊 類和對象 pac 類型轉換 eight 數字 list

軟件設計原則: 為了提高軟件的開發效率,降低軟件開發成本,一個優良的軟件系統應該具有以下特點: 1,可重用性:遵循DRY原則,減少軟件中的重復代碼。 2,可拓展性:當軟件需要升級增加新的功能,能夠在現有的系統架構上方便地創建新的模塊,而不需要改變軟件現有的結構,也不會影響以及存在的模塊。 3,可維護性:當用戶需求發生變化時,只需要修改局部的模塊中的少量代碼即可。 如何讓軟件系統達到上述的特點,我們對模塊的其他要求: 低耦合高內聚!! 1:高內聚性:內聚,強調一個模塊內的功能聯系,每個模塊只完成特定的功能,不同模塊之間不會有功能的重疊,高內聚性可以提高軟件的可重用性和可維護性。 2:低耦合性:耦合,強調的是多個模塊之間的關系,模塊之間相互獨立,修改某一個模塊,不會影響到其他的模塊。低耦合性提高了軟件的可維護性。


裝箱:把基本數據類型,轉換成包裝類型。 拆箱:把包裝類型,轉換成基本數據類型。 裝箱: Intger i = new Intger(1); Intger i = Intger.valueof(1); Intger i = 1;//自動裝箱 拆箱: Intger un = 10; int i = in.intValue();//拆箱 int i = in; //自動拆箱 或 int i = new Intger(1); 字符串->int int i = Integer.parseInt(); int->字符串 String s = String.valudOf(); String s = Ingeter.toString();
String s = 123+"";
Arrays工具類: 是Java中提供的用於操作數組的工具類,位於java.util包中。
  1. copyOf:復制出新的數組,復制長度由 newLength 決定,長度可大於被復制數組的長度。>原長度,用默認值補齊;<原長度,只復制前半部分。
Integer[] arr = {1,2,3,4,5,6,7}; Integer[] brr = Arrays.copyOf(arr, 8);
  1. sort:默認進行升序排序,可自定義排序。(自定義排序是自定義從哪個下標到哪個下標之間進行排序,左閉右開)
  2. toString:數組輸出語句,不用使用循環,可直接輸出數組所有值。
  3. equals:比較數組內容是否相等。(==則比較的是數組的地址)
  4. fill:將一個數組全部置為同一個值 ,或在下標範圍內將數組置為同一個值。
  5. binarySearch:二分查找法找指定元素的下標,找不到則返回負數。(必須是排序好的數組)
  6. copeOf和copeOfRange: 截取數組。(copeOf(截取到第幾位),copeOfRange(截取第幾個到第幾個))。
二維數組: 寫法:數據類型[][] 數組名 例子:int[][] arr = {{2,5},{1},{3,2,4},{1,7,5,9}}; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.println(arr[i][j]); } } 技術分享圖片

技術分享圖片


一、String類 String類在java.lang包中,不需要導包,自動導入,字符串變量屬於對象。java把String類聲明的final類,不能被繼承。 String類對象創建後不能修改,由0個或多個字符組成,包含在一對雙引號之間。 寫法: 自變量聲明:String s = " 數據 "; 使用new關鍵字聲明: String s = new String("數據"); 二、String類常用方法 1、求字符串的長度 (String.length()) String s = new String(abcdefg"); int slength = str.length(); 2、字符串比較 (String.equals()) s.equals()的比對原理是判斷兩個字符串的每一個字符是否相等。 == 比較的是兩個字符串中存儲的地址是否想等。 s.equalsIgnoreCase(s):忽略大小寫進行比對。 3、字符串中字符的大小寫轉換 s.toLowerCase():返回當前字符串中所有字符轉換成小寫 s.toUpperCase():返回當前字符串中所有字符轉換成大寫 4、連接字符串 ①使用+連接 ②使用concat連接,需要返回一個新的字符串。 String s = "a".concat("b").concat("c"); 相當於String s = "a"+"b"+"c"; 5、字符串的查找 s.indexOf():用於查找當前字符串中字符或子串,返回字符或子串在當前字符串中從左邊起首次出現的位置。從0開始,若沒有出現則返回-1。 可以接受字符串,字符,整數類型的參數,如果參入整數,將根據ASCII碼自動轉換字符(A=65,a=97)。 s.lastIndexOf():與indexOf()類似,但是查找的是字符串最後出現的位置。從0開始,若沒有出現則返回-1。 6、截取字符串 s.substring(int a):從a所在的字符串的位置開始進行截取,截取到字符串到最後,並返回一個新的字符串。 s.substring(int a,int b):表示從a截取到b,為左閉右開區間,包含起點不包含終點。 7、去空格 s.trim():截去字符串兩端的空格,但對於中間的空格不處理。 8、替換 s.replace(oldChar, newChar):將字符串中的所有oldChar替換成newChar。 9、字符串分割 (返回的是字符串數組類型) s.split(regex):傳入指定字符,將字符串分割為多個子串,返回一個字符串類型的數組,如果傳入一個空字符串,則對原字符串全部分割。 s.split(regex, limit):表示將當前字符串分割成幾部分,如果傳入的數字少於分割的總部分,那麽分割limit後多余的字符串將不會分割。 三、StringBuffer 1.StringBuffer是String的增強版,位於java.long包中,不需要導包可直接使用,它與String最大的區別在於:StringBuffer在聲明後是可以改變可以追加的。而String一旦聲明,不可改變,不可追加。 寫法: StringBuffer sb = new StringBuffer("abc");   需要註意的是,StringBuffer和String屬於不同的類型,也不能直接進行強制類型轉換   String轉換為StringBuffer: StringBuffer sb2 = new StringBuffer(s);   StringBuffer轉換為String: String s1 = sb1.toString(); 2.常用的方法: (a)、sb.toString():將StringBuffer轉換成String進行輸出,在輸出時可以不用轉換,系統會自動轉換。 (b)、sb.append() :在原字符串之後追加新的字符,原字符串會直接改變,同時還會追加之後的字符串返回。append()可以接受各種類型的參數,會自動轉成字符串追加到原字符串最後。 (c)、sb.delete(int start,int end):傳入兩個下標,表示刪除這兩個下標之間的字符。(左閉右開區間) (d)、sb.deleteCharAt(index) : 傳入一個下標,表示刪除指定位置的一個字符。 (e)、sb.insert(index,b):該方法的作用是在StringBuffer對象中的指定位置插入內容,然後形成新的字符串。新的子串可以是任何數據類型,其他數據類型會自動轉換成字符串。 (f)、sb.reverse(): 字符串反轉,將sb的字符串翻轉後形成新的字符串。
  一、面向對象 & 面向過程     面向過程:專註於如何去解決一個問題的過程。特點:每一個功能都出現了函數,也就是由一個個函數實現解決問題的一系列步驟。(C語言)     面向對象:專註於由哪個對象來解決問題,而調用者無需關註對象實現的細節。特點:出現了一個個類,從類中拿到對象,通過對象解決問題。(java、php、c++、c#、Python)      面向機器: 匯編語言。 面向對象的三大特征: 繼承,封裝,多態。 二:類 & 對象 類:具有相同屬性和行為的個體的集合就是類。類是一個抽象的概念,只能說類具有那些屬性,而不能對屬性賦值,因此對象的抽象化是類,類的具體化就是對象。     類具有屬性,對象的屬性,用成員變量來描述,通過封裝數據實現。     類具有行為,對象的行為,用方法來描述。 對象:從類中拿出具有屬性值的個體,稱為對象。 對象是從類中拿出的一個具體的個體,需要對屬性進行具體的賦值。 類和對象的關系: 對象的抽象化是類,類的具體化就是對象。      類是對象的描述,對象是類的個體。     程序中由類產生對象。 聲明一個類:[修飾符] class 類名{ [修飾符] 屬性類型 屬性名 [修飾符] 返回值類型 方法名 } 步驟:     (1):聲明一個類,並且聲明類中的屬性和方法。     (2):實例化一個類,在主函數中使用new關鍵字實例化。     (3):使用類中的屬性、方法。 技術分享圖片

定義類的註意:    (1):如果類使用了public修飾符,必須保證當前文件名稱和當前類名相同.    (2):類名使用名稱表示,類表示某一類事物,首字母大寫,如果是多個單詞組成使用駝峰表示法.   (3):在面向對象的過程中,各位定義類的時候,專門為描述對象提供一個類,該類不需要main方法. 構造函數:      (1):構造函數與類名相同。     (2):構造函數沒有返回值(void都沒有),不需要使用return語句。     (3):構造函數分為有參構造函數和無參構造函數。 構造函數的作用:在實例化對象的時候,賦初始值。 技術分享圖片

  構造函數無需手動調用,在實例化對象的時候會自動調用。 註意:如果沒有寫構造函數,那麽系統會自動創建一個缺省的構造函數;如果寫了帶參構造函數,那麽會覆蓋掉缺省的構造函數。 三、方法 方法定義格式: [修飾符] 返回值的類型 方法名稱([形式參數,....]) { 方法體 [return 值]; } 方法的返回值: (1):如果方法沒有返回值,不能使用return,並且方法的返回值類型使用的void。 (2):如果方法有返回值,使用return返回相應的返回值類型。 (3):有返回值的方法不一定需要接收返回值。 (4):沒有返回值的方法一定不能接受返回值。 什麽時候使用返回值? 如果需要返回一個結果數據,我們就把該結果數據的類型作為該方法的返回值類型. 方法的調用: (1):聲明的方法,只有在調用的時候才能執行方法體中的代碼。 (2):在本類中調用其他方法直接使用方法名();或者使用this.方法名(); (3):調用其他類中的方法,需要先實例化對象,然後通過對象名調用方法。即:對象名.方法(); 方法的參數: 聲明方法時可以在方法圓括號中的進行定義,僅僅只是占位而已,參數的名稱其實無所謂,形式參數可以有多個,用逗號分隔。 聲明方法時的參數列表,稱為形參列表。 調用方法時,必須按照形參列表的順序進行賦值,此時的參數稱為實參列表。 什麽時候使用參數? 該方法在完成該功能的過程之中,是否有未知的因素參與,如果有請作為參數傳遞,如果沒有則沒有形參. 四、成員變量 & 局部變量: 成員變量:直接在類中聲明的屬性稱為成員變量。成員變量的作用範圍在整個類中可以使用。 局部變量:在方法體裏面聲明的變量稱為局部變量。局部變量只在當前方法體中有效,方法的形參都輸入局部變量。 區別: (1):作用域不同。成員變量作用於整個類中,局部變量作用於方法中。 (2):初始值不同。成員變量會默認賦初始值,局部變量沒有默認初始值。 (3):優先級不同。當成員變量與局部變量重名時,方法中優先使用局部變量,如果需要使用成員變量需要使用this關鍵字。

Java基礎學習(二)