20145214 《Java程序设计》第3周学习总结
-
教材學(xué)習(xí)內(nèi)容總結(jié)
對(duì)象(Object):存在的具體實(shí)體,具有明確的狀態(tài)和行為
類(Class):具有相同屬性和行為的一組對(duì)象的集合,用于組合各個(gè)對(duì)象所共有操作和屬性的一種機(jī)制
從類看對(duì)象:類定義可以視為一個(gè)具有類似特性與共同行為的對(duì)象的模板,可用來(lái)產(chǎn)生對(duì)象
從對(duì)象看類:類的產(chǎn)生,是從少數(shù)實(shí)例,推廣到大量相似實(shí)例的抽象化過(guò)程(abstraction)
類是對(duì)象的設(shè)計(jì)圖,對(duì)象是類的實(shí)例,生成對(duì)象要先定義類
4.1 類與對(duì)象
定義類使用class
定義后建立實(shí)例,如: Clothes c1=new Clothes()在堆上生成對(duì)象, c1 可以近似看成指向?qū)ο蟮闹羔?#xff0c; 在《數(shù)據(jù)結(jié)構(gòu)》中實(shí)現(xiàn)鏈表,C語(yǔ)言使用指針,Java使用引用。 使用類似c1.color的方式可以指定某個(gè)特定變量 String 是定義字符串,使用“”、%s char 是定義字符,使用‘’、%c 構(gòu)造方法決定類生成對(duì)象的方式有 this、new 封裝 = 類 + 訪問(wèn)控制(public,protected,private...)
對(duì)象相等
由于浮點(diǎn)數(shù)誤差的關(guān)系,為了得到更好的精確度,使用java.math.BigDecimal類 這個(gè)類提供運(yùn)算plus()/add()、substract()、multiply()、divide() == 與 equals的區(qū)別: ==比較的對(duì)象的地址、 equals 是邏輯上相等 例如定義的兩個(gè) BigDecimal a =new BigDecimal(“0.1”); BigDecimal a =new BigDecimal(“0.1”);System.out.println(a==b);//顯示錯(cuò)誤 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 數(shù)組對(duì)象
Java中,數(shù)組是對(duì)象 定義數(shù)組的方式?int[] a; 與C語(yǔ)言不同,Java檢查數(shù)組邊界,越界會(huì)觸發(fā)ArrayIndexOutOfBoundsException異常 可以用?a.length查看a數(shù)組的長(zhǎng)度
在java.util.Arrays類中有一個(gè)fill()方法可以給數(shù)組所有數(shù)賦同一個(gè)值,使用方法如下Arrays.fill(a,60);
4.4 字符串對(duì)象
定義字符串使用String a.charAt(0)//顯示第一個(gè)字符 a.toUpperCase()//顯示字符串 把字符組變?yōu)樽址?char[] cs={'n','a','m','e'};String name =new String(cs); 或者使用String的toCharArray()方法?char[] cs2=name.toCharArray();
第五章 對(duì)象封裝
5.1封裝
封裝是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪問(wèn)方式,其目的主要就是隱藏對(duì)象細(xì)節(jié),將對(duì)象當(dāng)作黑箱進(jìn)行操作。如同以前的使用過(guò)的一樣,用戶會(huì)調(diào)用構(gòu)造函數(shù),但不知道構(gòu)造函數(shù)的細(xì)節(jié),會(huì)調(diào)用方法卻不知道流程,要操作對(duì)象,一律得通過(guò)你提供的方法調(diào)用
5.2類語(yǔ)法細(xì)節(jié)
構(gòu)造函數(shù)
private:權(quán)限修飾,類私有,用戶無(wú)法在其他類代碼中直接讀取,而public則可以
構(gòu)造函數(shù)特點(diǎn):首先,函數(shù)名與類名相同,其次,不用定義返回值類型,另外不可以寫(xiě)return語(yǔ)句。 構(gòu)造函數(shù)作用是給對(duì)象進(jìn)行初始化,多個(gè)構(gòu)造函數(shù)是以重載的形式存在的。
this關(guān)鍵字
this代表其所在函數(shù)所屬對(duì)象的引用,簡(jiǎn)而言之就是this代本類對(duì)象的引用,當(dāng)在函數(shù)內(nèi)需要用到調(diào)用該函數(shù)的對(duì)象時(shí),我們就可以使用this。 this()代表了調(diào)用另一個(gè)構(gòu)造函數(shù),至于調(diào)用哪個(gè)構(gòu)造函數(shù),則視調(diào)用this()時(shí)給的自變量類型與個(gè)數(shù)而定。注意:this()調(diào)用只能出現(xiàn)在構(gòu)造函數(shù)的第一行
static關(guān)鍵字
static用于修飾成員(成員變量和成員函數(shù)),被聲明為static的成員,不會(huì)讓個(gè)別對(duì)象擁有,而是屬于類。 在static方法中不能出現(xiàn)this關(guān)鍵字,static方法中不能用非static數(shù)據(jù)或方法成員。 import static語(yǔ)法是為了偷懶,但要注意名稱沖突的問(wèn)題。被聲明為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);}} -
運(yùn)行結(jié)果如下。
-
構(gòu)造函數(shù)中,由于參數(shù)與數(shù)據(jù)類型重名,需使用this將參數(shù)值指定給參數(shù)。定義構(gòu)造函數(shù)代碼如下。
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); } } -
運(yùn)行結(jié)果如下。
標(biāo)準(zhǔn)類
- 兩個(gè)基本標(biāo)準(zhǔn)類:java.util.Scanner和java.math.BigDecimal。
-
java.util.Scanner的nextInt()方法會(huì)看標(biāo)準(zhǔn)輸入中,有沒(méi)有輸入下一個(gè)字符串,有的話會(huì)嘗試將之剖析為int類型。Scanner對(duì)每個(gè)基本類型都有對(duì)應(yīng)的方法。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!"); } } -
運(yùn)行結(jié)果如下。
-
使用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); } } -
運(yùn)行結(jié)果如下。
-
用BigDecimal比較相等時(shí),可以直接利用調(diào)用add(),再調(diào)用equals()比較兩個(gè)BigDecimal實(shí)質(zhì)上是否相同。代碼如下。
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"); } } } -
運(yùn)行結(jié)果如下。
?
其他(感悟、思考等,可選)
這兩章的知識(shí)可能較前三章內(nèi)容晦澀一些,畢竟有點(diǎn)深?yuàn)W。 我以前可能沒(méi)接觸過(guò)對(duì)象這一知識(shí),不能理解對(duì)象存在的價(jià)值。當(dāng)看完這兩章內(nèi)容后,有了一個(gè)大致的了解。接下來(lái)就是對(duì)課本中的代碼進(jìn)行敲寫(xiě)一一體會(huì),就能更加清楚書(shū)中所說(shuō)含義。最后再看書(shū)上的代碼時(shí),頭腦中就可以模擬當(dāng)時(shí)編譯運(yùn)行的畫(huà)面,對(duì)對(duì)象相關(guān)知識(shí)的理解更加透徹。這門學(xué)科需要我付出很大的決心和毅力,加油吧 李昊!
?
轉(zhuǎn)載于:https://www.cnblogs.com/zym0728/p/5299816.html
總結(jié)
以上是生活随笔為你收集整理的20145214 《Java程序设计》第3周学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHPCMS V9 采集实例
- 下一篇: Java 命令行编译项目