20145214 《Java程序设计》第3周学习总结
-
教材學習內容總結
對象(Object):存在的具體實體,具有明確的狀態和行為
類(Class):具有相同屬性和行為的一組對象的集合,用于組合各個對象所共有操作和屬性的一種機制
從類看對象:類定義可以視為一個具有類似特性與共同行為的對象的模板,可用來產生對象
從對象看類:類的產生,是從少數實例,推廣到大量相似實例的抽象化過程(abstraction)
類是對象的設計圖,對象是類的實例,生成對象要先定義類
4.1 類與對象
定義類使用class
定義后建立實例,如: Clothes c1=new Clothes()在堆上生成對象, c1 可以近似看成指向對象的指針, 在《數據結構》中實現鏈表,C語言使用指針,Java使用引用。 使用類似c1.color的方式可以指定某個特定變量 String 是定義字符串,使用“”、%s char 是定義字符,使用‘’、%c 構造方法決定類生成對象的方式有 this、new 封裝 = 類 + 訪問控制(public,protected,private...)
對象相等
由于浮點數誤差的關系,為了得到更好的精確度,使用java.math.BigDecimal類 這個類提供運算plus()/add()、substract()、multiply()、divide() == 與 equals的區別: ==比較的對象的地址、 equals 是邏輯上相等 例如定義的兩個 BigDecimal a =new BigDecimal(“0.1”); BigDecimal a =new BigDecimal(“0.1”);System.out.println(a==b);//顯示錯誤 System.out.println(a.equals(b));//顯示正確
4.2 基本類型包裝
為了讓Java的基本類型像類一樣使用 int-Integer、 long-Long、 byte-Byte、 float-Float、 double-Double、 boolean-Boolean Integer a = new Integer (10);? 操作Integer的以double類型返回 System.out.println(a.doubleValue()/3);//打印3.3333333... compareTo(),相同返回0、小于返回-1、否則返回1 System.out.println(a.compareTo(a));
4.3 數組對象
Java中,數組是對象 定義數組的方式?int[] a; 與C語言不同,Java檢查數組邊界,越界會觸發ArrayIndexOutOfBoundsException異常 可以用?a.length查看a數組的長度
在java.util.Arrays類中有一個fill()方法可以給數組所有數賦同一個值,使用方法如下Arrays.fill(a,60);
4.4 字符串對象
定義字符串使用String a.charAt(0)//顯示第一個字符 a.toUpperCase()//顯示字符串 把字符組變為字符串 char[] cs={'n','a','m','e'};String name =new String(cs); 或者使用String的toCharArray()方法?char[] cs2=name.toCharArray();
第五章 對象封裝
5.1封裝
封裝是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,其目的主要就是隱藏對象細節,將對象當作黑箱進行操作。如同以前的使用過的一樣,用戶會調用構造函數,但不知道構造函數的細節,會調用方法卻不知道流程,要操作對象,一律得通過你提供的方法調用
5.2類語法細節
構造函數
private:權限修飾,類私有,用戶無法在其他類代碼中直接讀取,而public則可以
構造函數特點:首先,函數名與類名相同,其次,不用定義返回值類型,另外不可以寫return語句。 構造函數作用是給對象進行初始化,多個構造函數是以重載的形式存在的。
this關鍵字
this代表其所在函數所屬對象的引用,簡而言之就是this代本類對象的引用,當在函數內需要用到調用該函數的對象時,我們就可以使用this。 this()代表了調用另一個構造函數,至于調用哪個構造函數,則視調用this()時給的自變量類型與個數而定。注意:this()調用只能出現在構造函數的第一行
static關鍵字
static用于修飾成員(成員變量和成員函數),被聲明為static的成員,不會讓個別對象擁有,而是屬于類。 在static方法中不能出現this關鍵字,static方法中不能用非static數據或方法成員。 import static語法是為了偷懶,但要注意名稱沖突的問題。被聲明為static的成員,是將類名稱作為名稱空間。
?
-
程序代碼如下。
class Clothes { String color; char size; }public class Field { public static void main(String[] args) { Clothes sun = new Clothes(); Clothes spring = new Clothes(); sun.color = "red"; sun.size = 'S'; spring.color = "green"; spring.size = 'M'; System.out.printf("sun(%s,%c)%n",sun.color,sun.size); System.out.printf("spring(%s,%c)%n",spring.color,spring.size);}} -
運行結果如下。
-
構造函數中,由于參數與數據類型重名,需使用this將參數值指定給參數。定義構造函數代碼如下。
class Clothes2 { String color; char size; Clothes2(String color, char size) { this.color=color; this.size=size; } } public class Field2 { public static void main(String[] args) { Clothes2 sun = new Clothes2("red",'S'); Clothes2 spring = new Clothes2("green",'M'); System.out.printf("sun(%s,%c)%n",sun.color,sun.size); System.out.printf("spring(%s,%c)%n",spring.color,spring.size); } } -
運行結果如下。
標準類
- 兩個基本標準類:java.util.Scanner和java.math.BigDecimal。
-
java.util.Scanner的nextInt()方法會看標準輸入中,有沒有輸入下一個字符串,有的話會嘗試將之剖析為int類型。Scanner對每個基本類型都有對應的方法。java.util.Scanner代碼如下。
import java.util.Scanner;public class Guess { public static void main(String[] args) { Scanner scanner = new Scanner (System.in); int number = (int) (Math.random() * 10); int guess; do { System.out.printf("GUESS A NUMBER:"); guess = scanner.nextInt(); } while(guess != number); System.out.println("YOU ARE RIGHT!"); } } -
運行結果如下。
-
使用java.math.BigDecimal可以得到更好的精度。代碼如下。
import java.math.BigDecimal;public class DecimalDemo { public static void main(String[] args) { BigDecimal operand1 = new BigDecimal ("1.0"); BigDecimal operand2 = new BigDecimal ("0.8"); BigDecimal result = operand1.subtract(operand2); System.out.println(result); } } -
運行結果如下。
-
用BigDecimal比較相等時,可以直接利用調用add(),再調用equals()比較兩個BigDecimal實質上是否相同。代碼如下。
import java.math.BigDecimal;public class DecimalDemo2 { public static void main(String[] args) { BigDecimal o1 = new BigDecimal ("0.1"); BigDecimal o2 = new BigDecimal ("0.1"); BigDecimal o3 = new BigDecimal ("0.1"); BigDecimal result = new BigDecimal("0.3"); if(o1.add(o2).add(o3).equals(result)) { System.out.println("=0.3"); } else { System.out.println("!=0.3"); } } } -
運行結果如下。
?
其他(感悟、思考等,可選)
這兩章的知識可能較前三章內容晦澀一些,畢竟有點深奧。 我以前可能沒接觸過對象這一知識,不能理解對象存在的價值。當看完這兩章內容后,有了一個大致的了解。接下來就是對課本中的代碼進行敲寫一一體會,就能更加清楚書中所說含義。最后再看書上的代碼時,頭腦中就可以模擬當時編譯運行的畫面,對對象相關知識的理解更加透徹。這門學科需要我付出很大的決心和毅力,加油吧 李昊!
?
轉載于:https://www.cnblogs.com/zym0728/p/5299816.html
總結
以上是生活随笔為你收集整理的20145214 《Java程序设计》第3周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHPCMS V9 采集实例
- 下一篇: 响应式图片设计