1. 程式人生 > >java第二周學習總結

java第二周學習總結

rec 截取 如果 ringbuf 循環控制 取字符 wid other min

《面向對象程序設計(java)》第二周學習總結

實驗時間2018-9-6

1,第三章知識點總結

一、基本數據類型:分為整型(4),浮點型(2),字符型,布爾型,一共8種
1.整型需要註意的:JAVA整型的範圍與運行JAVA代碼的機器無關的,所以很難發生整數溢出的情況,原理是JAVA的每一種數據類型的取值範圍都是規定了的,不能改動。byte占1個字節,範圍是-128到127;short占2個字節,範圍是3W左右;int占4個字節,範圍在20億左右;long占8個字節,需要註意的是有個後綴L。JAVA沒有無符號類型。
2.浮點類型:float占4個字節,後綴為F;double占8個字節;JAVA浮點型是二進制系統表示的,所以無法精確表示1/10,所以不適用於要求不能舍入誤差的高精度計算系統中,如金融系統。Double類有3個常量:Double.POSITIVE_INFINITY表示無限大,Double.NEGATIVE_INFINITY表示無限小,Double.NaN表示不是一個數字,但是JAVA所有非數值都認為是不同的,所以比較NaN時要用方法:Double.isNaN(Object o);
3.字符型:在JAVA中用UTF-16編碼描述一個代碼單元的。代碼點是指可用於編碼字符集的數字,UTF-32:用4個字節既32位表示代碼點,消耗資源過大;UTF-8:使用一至四個字節的序列對編碼 Unicode 代碼點進行編碼,很好的節約資源,用於AJAX返回的XML很好。UTF-16:使用一個或兩個未分配的 16 位代碼單元的序列對 Unicode 代碼點進行編碼;\u表示字符轉義號,還可以用於“”和‘’外。
4.布爾型:boolean:false和true,需要註意的是:java中不能非0值當true,0當false,不支持直接的轉換。


二、變量:關鍵字

final表示的是一個常量,一旦賦值後不能改變,習慣常量名用大寫。


三、運算:浮點數被0除得到無窮大或NaN,而整型會產生異常;strictfp關鍵字可以用在域上,包括類,那麽裏面使用嚴格的浮點計算;
1.運算中的類型轉換:如果兩個數中有一個是double類型的,那麽另一個也將轉換為double類型;如果兩個數中有一個是float類型的,那麽另一個也將轉換為float類型;如果兩個數中有一個是long類型的,那麽另一個也將轉換為long類型;否則,兩個操作數都將被轉換為int類型.Math類提供了很多關於運算的靜態方法
2.移位運算:<<左移操作,所有操作數向左移動,每移一位最右邊用0補充;>>帶符號位右移:連同符號位一起右移,每移一位最左邊用符號位補充;>>>無符號右移:連同符號位一起右移,每移一位最左邊用0補充。右邊的參數需要進行模32位運算(long進行64位模運算)。註意1<<31得到的結果是負數:-2147483648,JAVA在32位下最高位為1其余為0的時候表示的並不是-0.而是32位下最小負整數:-2147483648


四、字符串:代碼點
—codePoint.
1.String常用API:
char charAt(int index)返回指定位置的代碼單元。
int codePointAt(int index)返回從給定位置開始或結束的代碼點。
int offsetByCodePoints(int startIndex,int cpCount)返回從startIndex代碼點開始,位移cpCount後的代碼點索引。
int codePointCount(int startIndex,int endInex)返回起始位置到結束位置之間代碼點的數量。
int compareTo(String other)如果字符串位於other之前,返回一個負數;如果字符串位於other之後,返回一個正數;如果相等,返回0。
boolean startsWith(String startstr)如果字符串是以startstr開頭,返回true。
boolean endsWith(String endstr)如果字符串是以endstr結尾,返回true。
boolean equals(Object other)2個對象相等,返回true。
boolean equalsIgnoreCase(String other)2個字符串忽略大小寫相等返回true。
int indexOf(String str)||(String str,int fromIndex)||(int cp)||(int cp,int fromIndex)從fromIndex位置開始計算,返回字串或者代碼點第一次出現的位置。
int lastindexOF 同上,不過是返回字串最後一次出現的位置。
int length()返回串長度,準確的說是返回代碼單元數量。
String substring(int begin)||(int begin,int end)截取字符串。
String toLowerCase() ;String toUpperCase();分別是轉小寫,和轉大寫。
String trim();刪除原始字符串頭部和尾部空格。
String replace(String old,String new)用NEW去替換OLD,沒有構造正則好用。
2.StringBuilder 常用API:和類StringBuffer的用法基本一樣,只是StringBuffer支持多線程,效率稍微低。


五、輸入輸出:

1、Scanner類:可以用一個給定的輸入流創建該對象,例如用標準輸入流創建:
Scanner s=new Scanner(System.in),也可以用一個File對象構造一個Scanner對象,如:
Scanner s=new Scanner(new File(String FilePath));
作為一個讀取的類,Scanner主要有以下的方法:String nextLine();String next();Int nextInt();
double nextDouble();
(java6 有Console類可以讀取密碼不可見:Console cons=System.console(); cons.readPassword(""))
相應的有一些檢測的hasNext方法;
2、PrintWriter類:可以用一個File對象構造一個PrintWriter對象:
PrintWriter pw=new PrintWriter(new File(String FilePath));
作為一個寫出的類,PrintWriter主要的方法有:write(String str),print,println,printf等。


六、控制流程:do_while語句中do語句塊裏的局部變量在while的()已經沒有生命周期!for語句中的()裏的變量可以在{}語句塊中使用。
switch語句的case標簽必須是整數或者枚舉類型常量,如果在case分支語句的末尾沒有break語句,那麽會接著執行下一個case分支語句。
帶標簽的break語句,標簽必須放在希望跳出的最外層循環之前,緊跟一個冒號。


七、大數值:BigInteger和BigDecimal分別實現了任意長度的整形和任意長度的浮點型。都可以用valueOf(long/double)方法通過一個基本的類型去構造他們,他們的運算方法一樣,如下:
add:加法;subtract:減法;multiply:乘法;divide:除法;mod:求余數;這兩個類都實現了Comparable這個接口,於是有compareTo比較大小的方法。


八、數組:在java 6中的Arrays類有方法Object[] copyOf(Object oldArray[],int length)該靜態方法將一個數組的值復制到一個新數組中,第2個參數指定新數組的長度,並返回新數組,如果新數組有多余元素,則數值型被賦值0,boolean型被賦值false。如果長度小於原始數組長度,只拷貝最前面的數據元素。以上的方法只有JDK6.0版本以上才有。
System.arraycopy(from[],int fromIndex,to[],int toIndex,int conut)方法也是數組的拷貝,參數含義是從數組from的位置是fromIndex的元素開始拷貝總數為conut個元素到數組to從toIndex位置開始,該方法需要註意數組to必須有足夠的空間存放拷貝的元素。
Math.ronud是四舍五入,Math.random是返回一個0到1(不含0,不含1)的隨即浮點數,用N乘以這個浮點數,就可以得到0到N-1之間的一個隨即數。
數組可以使用for(:)這個循環,Arrays有很多靜態的方法提供使用:
toString(type[]a):將數組轉化為字符串
copyOf在6.0以後的版本才有,並且參數可以為3個(type[]a,int start,int end),start-end表示要拷貝的長度。
sort:快速排序算法的排序。
binarySearch(type[]a,type v)||(type []a,int start,int end,type v)用二分搜索法查找一個元素,成功返回下標值,否則返回一個負數r,-r-1是為保持A的有序應插入的位置,我大概估計了下,既然是2分搜索,那麽這個數組裏的元素應該是通過實現了Comparable這個接口排過序的,這個方法要比自己去循環查找要快很多,不過要進行一次sort方法,不知道會不會在整體上影響效率。
fill(type[],type v)將數組的所有元素的值設置為V。
equals(type[]a,type[]b)如果a,b大小相同,並且下標相同的元素也相等,返回true。
java實際上是沒有多維數組的,只有數組的數組,這讓java十分的靈活可以創造任意部規則的數組。

2、實驗內容和步驟

實驗1:編寫java 應用程序,輸出以下4個表達式的值。

int i=1;

double d=1.0;

(1) 45+45*50%i--

(2) 1.5*3+d++

(3) (true)&&(3>4)

(4) (i>0)||(i<0)

技術分享圖片

實驗2:編寫包含以下代碼片段的java應用程序,輸出字符串類對象s3的值。

String s1=“Hello!”;

String s2=“World”;

String s3=s1+s2;

技術分享圖片

實驗3:更改實驗2中s1s2s3為StringBuilder類對象,觀察程序運行結果並與實驗2結果進行對比,理解String類對象與StringBuilder類對象的區別。

技術分享圖片

實驗4:在命令行方式下調試運行下列程序,理解java應用程序命令行參數的用法。

public class Message

{

public static void main(String[] args)

{

if (args[0].equals(“-h”)) System.out.print(“Hello”);

else if(args[0].equals(“-g”); System.out.print(“goodbye,”);

for(int i=1;i<args.length;i++)

System.out.print(“ ”+args[i]);

System.out.println(“!”);

}

}

技術分享圖片

實驗5:Eclipse環境下導入第3章示例程序InputTest.java步驟:

(1) 新建java project如下圖:

(2) 選擇File->import->File ystem->Next,打開文件導入窗口如下圖,點擊上方Browse選擇導入源程序並選中,點擊下方Browse選擇源程序導入位置為新項目InputTest/src位置後,點擊finish完成導入。

(3) 打開InputTest項目src文件夾的缺省包,雙擊InputTest.javaIDE源程序編輯區打開文件。

(4) 右鍵單擊InputTest.java文件名打開快捷菜單,選擇Run as->java application運行此程序,結合程序運行結果,理解代碼中Scanner類對象用法,掌握java控制臺輸入方法。

技術分享圖片

實驗6按照實驗5的操作步驟,導入WriteReadFileTest.java示例程序,結合程序運行結果理解程序代碼,觀察項目文件夾下文件myfile.txt的內容,掌握文件的輸入輸出操作。

技術分享圖片

實驗7:按照實驗5的操作步驟,導入第3章示例程序,每個示例程序從語法、算法兩個角度總結學習內容。

(1)測試Retirement.java,Retirement2.java,LotteryOdds.java掌握循環控制結構;

技術分享圖片

2)測試BigIntegerTest.java,掌握大數值類的用法;

技術分享圖片

(3)測試LotteryDrawing.java,掌握數組的用法;

技術分享圖片

(4)測試CompoundInterest.java,掌握多維數組的用法;

技術分享圖片

(5)測試LotteryArray.java,掌握不規則數組的用法。

技術分享圖片

java第二周學習總結