Java基礎知識(二)
- 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
相關文章
- java基礎知識Java
- 初識Java Java基礎知識Java
- camera基礎知識二
- 【二】、UML基礎知識
- Java併發程式設計——基礎知識(二)Java程式設計
- Java基礎概念知識Java
- java基礎知識點Java
- Python基礎知識之二Python
- HBase基礎知識分享(二)
- hadoop基礎知識分享(二)Hadoop
- MySQL基礎知識分享(二)MySql
- JavaSE基礎知識分享(二)Java
- Java基礎知識總結Java
- Java基礎知識點梳理Java
- Java併發--基礎知識Java
- Java基礎知識——異常Java
- JAVA基礎知識補漏Java
- Python基礎知識入門(二)Python
- Python入門基礎知識(二)Python
- 《java程式設計基礎》java的基礎知識(三)Java程式設計
- 【Java基礎知識】Java流程控制Java
- java基礎知識-序列化/反序列化-gson基礎知識Java
- Java基礎知識點總結Java
- Java基礎知識整理之this用法Java
- Java 基礎面試知識點Java面試
- Java基礎知識篇05——方法Java
- Java入門基礎知識點Java
- Java基礎知識_記憶體Java記憶體
- Java基礎知識面試題Java面試題
- Java代審:Maven基礎知識JavaMaven
- 整理Java基礎知識--Calendar 類Java
- Java基礎知識入門-JDKJavaJDK
- Java基礎知識之概述(一)Java
- Java基礎知識回顧 -SQLJavaSQL
- Java基礎知識總結-1Java
- 第二章 基礎知識(2)
- 第二章 基礎知識(1)
- 時序分析:基礎知識整理(二)