Java基礎知識(二)

L.Error發表於2020-11-27

  • Java基本資料型別

內建/引用資料型別

System.out.println("基本型別:byte 二進位制位數:" + Byte.SIZE);

System.out.println("包裝類:java.lang.Byte");

System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);

System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);

位元組數/取值範圍

  • Java運算子

算術/關係/位/邏輯/賦值/條件/InstanceOf/運算子優先順序

(移位操作<<左移、右邊移空的部分補0,>>右移、若最高位為0、左移空的位填入0、若最高位為1、右移空的位填入1,>>>無符號右移不論最高位為0還是1,左邊被移空的位都填入0

一個數左移N位,即這個數乘以2的N次方,一個數右移N位,即這個數除以2的N次方

運算子優先順序(一般用(),以免產生錯誤的運算順序)

資料型別轉換(顯式<高精度向低精度轉換、精度損失資料溢位,強制型別轉換>與隱式<低階型別向高階型別轉換,byte<short<int<long<float<double)除boolean型別外。

  • 迴圈結構

While/do、、、while/for

對於while語句而言,如果不滿足條件,則不能進入迴圈。但有時候我們需要即使不滿足條件,也至少執行一次。do…while迴圈和while迴圈相似,不同的是,do…while迴圈至少會執行一次


break主要用在迴圈語句或者switch語句中,用來跳出整個語句塊。 break跳出最裡層的迴圈,並且繼續執行該迴圈下面的語句。

continue適用於任何迴圈控制結構中。作用是讓程式立刻跳轉到下一次迴圈的迭代。 for迴圈中,continue語句使程式立即跳轉到更新語句。 在while或者do…while迴圈中,程式立即跳轉到布林表示式的判斷語句。

  • Java 分支結構 - if...else/switch

switch語句(表示式的值必須是整型或字元型,不能是實數或字串case的常量值必須不同

  • Java方法

語句的集合,它們在一起執行一個功能

方法是解決一類問題的步驟的有序組合。方法包含於類或物件中。方法在程式中被建立,在其他地方被引用。

修飾符/返回值型別/方法名/引數型別/方法體


注意:在一些其它語言中方法指過程和函式。一個返回非void型別返回值的方法稱為函式;一個返回void型別返回值的方法叫做過程。

方法過載:

方法過載可以讓程式更清晰易讀。執行密切相關任務的方法應該使用相同的名字。過載的方法必須擁有不同的引數列表。你不能僅僅依據修飾符或者返回型別的不同來過載方法。

finalize()方法

Java允許定義這樣的方法,它在物件被垃圾收集器析構(回收)之前呼叫,這個方法叫做finalize( ),它用來清除回收物件。例如,你可以使用finalize()來確保一個物件開啟的檔案被關閉了。finalize()方法裡,你必須指定在物件銷燬時候要執行的操作。

Java方法

方法過載/輸出陣列元素/漢諾塔演算法/斐波那契數列/階乘/方法覆蓋/instanceOf 關鍵字用法/break 關鍵字用法/continue 關鍵字用法/標籤(Label)/enum 和 switch 語句使用/Enum(列舉)建構函式及方法的使用/for 和 foreach迴圈使用

/*

  具體說明如下:

方法名相同

    方法的引數型別,個數順序至少有一項不同

    方法的返回型別可以不相同

            方法的修飾符可以不相同

    main方法也可以被過載

    */

//輸出陣列元素

//通過過載 FunctionTest類的 printArray 方法輸出不同型別(整型, 雙精度及字元型)的陣列

//漢諾塔演算法

/* 這個傳說就演變為漢諾塔遊戲,玩法如下:

1.有三根杆子A,B,C。A杆上有若干碟子

    2.每次移動一塊碟子,小的只能疊在大的上面

3.把所有碟子從A杆全部移到C杆上*/

//遞迴演算法

private static void doTowers(int nDisks, char from, char inter, char to) {

// TODO Auto-generated method stub

if(nDisks == 1){

System.out.println("disk 1 from " + from + " to " + to);

}else {

doTowers(nDisks-1, from, to, inter);

System.out.println("disk " + nDisks + " from " + from + " to " +to);

doTowers(nDisks-1, inter, from, to);

}

}

/* // 斐波那契數列指的是這樣一個數列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……

特別指出:第0項是0,第1項是第一個1。

這個數列從第三項開始,每一項都等於前兩項之和。*/

private static long fibnacci(int counter) {

// TODO Auto-generated method stub

if((counter == 0)||(counter ==1))

return counter;

else

return fibnacci(counter-1) + fibnacci(counter-2);

}

// 一個正整數的階乘(英語:factorial)是所有小於及等於該數的正整數的積,並且有0的階乘為1。自然數n的階乘寫作n!。

//亦即n!=1×2×3×...×n。階乘亦可以遞迴方式定義:0!=1,n!=(n-1)!×n。

private static long factorial(int counter) {

// TODO Auto-generated method stub

if(counter <= 1){

return 1;

}else{

return counter * factorial(counter - 1);

}

}

//方法覆蓋(Overriding):如果在子類中定義一個方法,其名稱、返回型別及引數簽名正好與父類中某個方法的名稱、返回型別及引數簽名相匹配,那麼可以說,子類的方法覆蓋了父類的方法

//instanceOf 關鍵字用法

//instanceof是Java的一個二元操作符,類似於 ==,>,<等操作符。

//instanceof是Java的保留關鍵字。它的作用是測試它左邊的物件是否是它右邊的類的例項,返回boolean的資料型別

 

//Java break語句可以直接強行退出當前的迴圈,忽略迴圈體中任何其他語句和迴圈條件測試

//Java continue 語句語句用來結束當前迴圈,並進入下一次迴圈,即僅僅這一次迴圈結束了,不是所有迴圈結束了,後邊的迴圈依舊進行

//Java 中的標籤是為迴圈設計的,是為了在多重迴圈中方便的使用break和coutinue

//Java建立列舉型別要使用 enum關鍵字,隱含了所建立的型別都是 java.lang.Enum 類的子類

//Enum(列舉)建構函式及方法的使用

enum Car_1 {

lamborghini(900),tata(2),audi(50),fiat(15),honda(12);

private int price;

Car_1(int p) {      

price = p;

}

int getPrice() {

return price;

}

}

System.out.println("所有汽車的價格:");

for(Car_1 c : Car_1.values()){

System.out.println("\t" +c + " 需要 " + c.getPrice() + " 千美元。");

}

//for 和 foreach迴圈使用

//for 語句比較簡單,用於迴圈資料

//foreach語句是java5的新特徵之一,在遍歷陣列、集合方面,foreach為開發人員提供了極大的方便。

定義方法時,方法需要的引數是形參,呼叫方法時,送入的引數是實參,當形參是物件型別時,表示需要一個“物件的地址”,而不是一個物件本身。

java的引數傳遞只有一種方式,那就是:傳值(傳拷貝)

普通的方法是非靜態方法(物件方法)this是普通方法的隱藏引數;

靜態方法就是不需要物件就可以執行的方法,靜態方法沒有this指標;

靜態變數不依賴於物件,public 型別的靜態變數就相當於c中的全域性變數

  • Java陣列

Java語言中提供的陣列是用來儲存固定大小的同型別元素

注意:建議使用dataType[]arrayRefVar的宣告風格宣告陣列變數。 dataType arrayRefVar[]風格是來自C/C++語言,在Java中採用是為了讓 C/C++ 程式設計師能夠快速理解java語言。

陣列的元素是通過索引訪問的。陣列索引從0開始,所以索引值從0到arrayRefVar.length-1

陣列(相同資料型別的一組資料的集合),陣列看做物件,複合型別,int [] a; 使用new關鍵字為陣列分配記憶體.

陣列的長度表示需注意:x.length與字串不同(s.length())。串池中不重複,不回收垃圾。

 


Java陣列例項

//陣列排序及元素查詢

//使用sort()方法對Java陣列進行排序,及如何使用binarySearch()方法來查詢陣列中的元//素,這邊我們定義了printArray()方法來列印陣列

//陣列新增元素

//使用sort()方法對Java陣列進行排序,及如何使用insertElement()方法向陣列插入元素

//新增元素,引數的含義

private static int[] insertElement(int array[],int element,int index){

int length = array.length;//獲取原陣列的長度

int destination[] = new int[length + 1];

System.arraycopy(array, 0, destination, 0, index);//進行復制

//printArray("陣列排序", destination);

destination[index] = element;

System.arraycopy(array, index, destination, index + 1, length - index);

//printArray("陣列排序", destination);

return destination;

}

//獲取陣列長度

//使用陣列的屬性 length 來獲取陣列的長度

//陣列反轉

//使用 Collections.reverse(ArrayList) 將陣列進行反轉

//陣列獲取最大和最小值

//通過 Collection 類的 Collection.max() 和 Collection.min() 方法來查詢陣列中的最大和最小值

//陣列合並

//通過 List 類的 Arrays.toString () 方法和 List 類的 list.Addall(array1.asList(array2)

//方法將兩個陣列合併為一個陣列

//陣列填充

//通過Java Util類的Array.fill(arrayname,value)方法和Array.fill(arrayname ,starting index ,ending index ,value) 方法向陣列中填充元素

//刪除陣列元素,使用 remove () 方法來刪除陣列元素

//陣列差集 ,使用 removeAll () 方法來計算兩個陣列的差集

//陣列交集

//使用 retainAll () 方法來刪除包含在另外一個陣列中的陣列元素

//在陣列中查詢指定元素 ,使用 contains () 方法來查詢陣列中的指定元素

//contains(Object o),如果此列表中包含指定的元素,則返回 true

//判斷陣列是否相等,使用 equals()方法來判斷陣列是否相等

//陣列並集,使用 union()方法來判斷陣列是否相等

//求兩個字串陣列的並集,利用set的元素唯一性

public static String[] union(String[] arr1,String[] arr2){

Set<String> set = new HashSet<String>();

for(String str : arr1){

set.add(str);

}

for(String str : arr2){

set.add(str);

}

String[] result ={};

//返回一個包含此 set 中所有元素的陣列;返回陣列的執行時型別是指定陣列的型別

return set.toArray(result);

}

計算機(嚴格按指令執行)與指令(最終目標:影響記憶體或暫存器的值),定義變數(申請記憶體)、賦值(拷貝與覆蓋),計算機是儲存和處理資料的電子裝置,包括硬體和軟體,計算機程式即軟體,對計算機操作的指令。

面嚮物件語言:C++ delphi VB Java smallTalk 物件導向的程度↑ 執行的速度↓

註釋三種

//單行

/*…*/單行和多行(多行註釋中可以巢狀單行註釋,但不可巢狀多行註釋)    /**…*/文件註釋 Javadoc文件

變數(記憶體空間),變數名,變數值

常量(constant,final)通常使用大寫字母final變數為“成員變數”時,必須在定義時就賦初值

系統的記憶體:系統區(OS)、程式區(Program)、資料區(Data)

基本(數值型-整數和浮點型別,字元型,布林型)和複合資料型別

三種進位制,十進位制、八進位制(以0開頭)、十六進位制(以0x或0X開頭)

各個資料型別的位元組數

byte(8位) short(16位) int(32位) long(64位) char (16位,單引號)boolean(1位)

true和false,預設為false) float(32位不能用於邏輯判斷) double(64位)

轉義字元,以“\”開頭

識別符號(由字母、數字、下劃線、$組成,以字母、下劃線和$開頭

Java基礎複習:http://blog.csdn.net/simplebam/article/details/65447600?locationNum=2&fps=1

JDK1.8新特性:http://blog.csdn.net/simplebam/article/details/58208789


相關文章