[敏捷JAVA讀書筆記-java基礎部分] 第三章

1、字符串

Java中字符串是對象。字符串是不可更改的。java

String str = 「abc」:編程

String str1 = new String(「abc」);windows

推薦使用第一種方式,由於第一種方式只建立了一個對象。安全

虛擬機首先建立一個Sting對象的引用,而後到堆區查找,有沒有String對象」abc」,若是有就將這個String對象的引用指向」abc」session

第二種方式一共建立了兩個對象:虛擬機首先建立一個」abc」String對象,而後再建立一個String對象,將第一個對象做爲參數傳遞給第二個對象。app

一些特殊的字符:ui

回車 '\r' spa

換行 '\n' 設計

Tab '\t' unix

換頁 '\f'

退格 '\b'

2、== equals

== 是比較對象的引用(地址)是否相等,equals是比較對象的值是否相等。

String str = "abc";

String str2 = "abc";

String str1 = new String("abc");

System.out.println(str==str1);//false 由於引用的不是同一個對象

System.out.println(str==str2);//true 引用同一個對象

System.out.println(str.equals(str1));//true,他們的值是相等的

3、單職責原則

面向對象的一個基本的設計原則:一個類只作好一件事情,因爲只作一件事情,因此改變類的動機只有一個。

同理,一個方法最好也只作一件事情,若是您的有個方法超過了10行,就應該對其進行重構了,將其分紅更小的方法,方便理解和維護。

敏捷java中一個例子:

一個生成報表的類,重構前:

String getReport() {

StringBuilder buffer = new StringBuilder();

buffer.append(ROSTER_REPORT_HEADER);

for (Student student: session.getAllStudents()) {

buffer.append(student.getName());

buffer.append(NEWLINE);

}

buffer.append(

ROSTER_REPORT_FOOTER + session.getAllStudents().size() + NEWLINE);

return buffer.toString();

}

這個repot的方法很短,可是從概念上講,該方法作了三件事情,爲了方便理解,應該將他拆分紅三個更小的方法重構後:

String getReport() {

StringBuilder buffer = new StringBuilder();

writeHeader(buffer);

writeBody(buffer);

writeFooter(buffer);

return buffer.toString();

}

void writeHeader(StringBuilder buffer) {

buffer.append(ROSTER_REPORT_HEADER);

}

void writeBody(StringBuilder buffer) {

for (Student student: session.getAllStudents()) {

buffer.append(student.getName());

buffer.append(NEWLINE);

}

}

void writeFooter(StringBuilder buffer) {

buffer.append(

ROSTER_REPORT_FOOTER + session.getAllStudents().size() + NEWLINE);

}

4、系統屬性

Java虛擬機啓動的時候設置好了許多系統屬性,多數屬性返回與虛擬機以及當前執行系統相關的信息,因此使用系統屬性是消除系統之間差別的好方法;

好比,windows下面回車換行是’\r\n’unix下面是’\n’,

使用系統屬性便可這樣表示:

System.getProperty("line.separatpr");

這樣就消除了系統之間的某些差別,更多的屬性見jdk幫助文檔。

5、訪問修飾符

前面咱們接觸了publicprivatepublic的範圍最大,public修飾的屬性和方法能夠被不一樣包的對象調用,private的範圍最小,只能對象內部有效,public表示公共財產,private表示私有財產。

還有一個修飾符protected,表示受保護的,他的範圍比public小一些,同一個包中的對象能夠調用他修飾的屬性和方法,對象的子類也能夠調用(即使子類不在同一個包中)。

若是顯示的註明修飾符,java會默認修飾符爲friendly(package),表示同一個包的類能夠訪問

同一個類

同一個包

同一個包的子類

不一樣包的子類

不一樣包的類

public

能夠

能夠

能夠

能夠

能夠

protected

能夠

能夠

能夠

能夠

不能夠

friendly

能夠

能夠

能夠

不能夠

不能夠

private

能夠

不能夠

不能夠

不能夠

不能夠

爲了安全的編程:推薦的使用順序,首先是最受限的訪問,而後須要是打開相應的訪問權限,暴露太多的類給用戶,會致使客戶對系統集成的細節產生沒必要要的依賴。

原則:儘量的保護代碼,只有在必要的時候,放開訪問權限。

在uml中public用+號表示,private用-號表示,protected用#表示,package用~表示

6、ANT

相關文章
相關標籤/搜索