java基礎01

java關鍵字
class public static void (規範:關鍵字要小寫)
標識符
在程序中自定義的一些名稱由26個英文字母大小寫,數字0-9,符號$和_組成。
數字不能開頭,不能使用關鍵字,java嚴格區分大小寫
規範: 類名接口名,所有單詞首字母大寫
方法變量名,第一個單詞首字母西小寫,其餘單詞首字母大寫
常量名,所有單詞大寫,但詞之間用下劃線連接
包名,所有單詞小寫
註釋
// 單行註釋
/....../ 多行註釋
/*....../ 文檔註釋 文檔註釋可被javadoc程序提取
常量
×××常量,所有整數
小數常量,所有小數
布爾型常量,true,false
字符型常量,將一個數字,字母或者符號用單引號標識
字符串常量,將一個或多個字符用雙引號標識
null常量,null
變量
用來(不斷的)存放同一類型的常量,並可重複使用
變量的作用範圍,一對大括號中有效,初始化值,不能重複定義
數據類型
基本數據類型
數值型 整數默認 int 小數默認 double
整數類型
byte 一個字節 -2^7—(2^7-1) 默認爲0
short 兩個字節 -2^15—(2^15-1) 默認爲0
int 四個字節 -2^31—(2^31-1) 默認爲0 整數運算可能會超過整數範圍而產生溢出,正數過大而產生的溢出結果爲負值,複數過小而產生的溢出結果爲正值
long 八個字節 -2^63—(2^63-1) 默認爲0L 如果要使用long類型,則需要以L或l結尾
浮點類型
float 單精度 四個字節 默認爲0.0f
double 雙精度 八個字節 默認爲零0.0d

字符型
char 兩個字節 0-65535(一個漢字兩個字節) 默認爲'\u0000'  null

布爾型 
doolean 內存不確定   默認爲false

引用數據類型
類 class,接口 interface,數組 [ ] 

自動類型轉換(向上轉換),強制類型轉換(向下轉換)
向上轉換
byte->short->char->int->long->float->double
所有byte,short,char值將被提升爲int
如果有一個操作數爲long,結果就是long
如果有一個操作數是float,結果就是float
如果有一個操作數是double,結果就是double
向下轉換
高類型向低類型轉換
可能會產生溢出
long a=5555555555L;
int b=(int)a;//產生溢出 結果爲0
也可能會造成精度的損失
double c=5.5555555555;
float d=(float)c;//產生精度損失 結果爲5.5555555
運算符
算術運算符 + - / % ++ --
i++; 先使用i,後進行自增
++i; 先自增,後使用i
賦值運算符 = += -=
= /+ %=
比較運算符 > < >= <= == !=
邏輯運算符 && || !
三元運算符 ?:
判斷結構
if else
選擇結構
switch case
switch 條件 整數表達式(byte,int,short,char),枚舉類型和String類型
循環結構
while for(開始;結束;過程) foreach(類型:變量)
函數
形參: 用於存儲調用函數時傳遞給函數的實參,
實參:傳遞給形參的具體數值
函數和宗只能調用函數,不能定義函數
定義函數時,函數的結果應返回給調用者
函數重載 參數個數和參數類型不同
數組
存放數據的容器 下標從零開始
格式:
動態
類型[] 數組名=new 類型[長度];
eg:int[] array=new int[10];
for(int i=0;i<array.length;i++)
array[i]=(int)Math.random100;
靜態
類型[] 數組名=new 類型[]{值,...};
類型[] 數組名={值,...};
java程序具體執行過程
java源代碼文件(
.java)會被java編譯器編譯爲字節碼文件(*.class)
然後由JVM中的類加載器加載各個類的字節碼文件,加載完畢之後,交由JVM
執行引擎執行。在整個程序執行過程中,JVM會用一度段空間來存儲程序執行
期間需要用到的數據和相關信息,這段空間是運行時數據區(Runtime Data Area),
這就是JVM內存
java代碼塊的執行順序
在java類被new的過程中執行順序,
1.實現自身的靜態屬性和靜態代碼塊(根據代碼出現的順序決定誰先執行)
2.實現自身的非靜態屬性和非靜態代碼塊
3.執行自身的的構造函數
實現繼承的類被new的過程中,初始化順序,
1.實現父類的公共靜態屬性和靜態代碼塊級代碼
2.實現自身的靜態屬性和靜態塊級別代碼
3.實現父類的非靜態屬性和非靜態代碼塊
4.執行父類構造函數
5.實現自身的非靜態屬性和非靜態代碼塊
6.執行自身的構造函數

內存劃分(JVM內存劃分)
寄存器(程序計數器) 功能如同CPU中的PC寄存器,指示要執行的字節碼指令
本地方法棧 執行引擎調用本地方法時的運行時內存區
方法區 用於存放類,接口的元數據信息,加載進來的字節碼數據都存儲在方法區
棧內存(虛擬機棧) 執行引擎運行字節碼時的運行時內存區,採用棧幀的形式保存每個方法的調用運行數據,變量所屬域一旦結束,變量自動釋放
堆內存(堆) 運行時數據區,各種對象一般都存儲在堆上;存儲數組和對象在堆裏,有默認初始值,有地址值,由垃圾回收機制
操作數組
查找數組最大最小值
int [] arr =new int[]{-5,-4,-3,-2,-1,5,4,3,2,1};
findMax(arr);
findMin(arr);
findMax(int[] arr){
int max=arr[0];
for(int i=1;i<arr.length;i++)
if(arr[i]>max)
max=arr[i];
}
findMin(int[] arr){
int minIndex=0;
for(int i=1;i<arr.length;i++)
if(arr[i]<arr[minIndex])
minIndex=i;
}
排序(從小到大)
選擇排序:(i=0 將arr[0]和數組中下表大於0的值進行比較;i=1 將arr[1]和數組中下標大於1的值進行比較...)
for(int i=0;i<arr.length;i++)
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
冒泡排序:(外層循環控制趟數,內層循環控制比較次數,將較大的值向數組的尾部輸送;如此循環,進行排序)
for(int i=0;i<arr.length-1;i++)
for(int j=0;j<arr.length-i-1;i++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j]=temp;
}
}
折半查找:(二分查找,根據所給的key值查找值所在數組下標)
int max,min,mid;
min=0;
max=arr.length-1;
mid=(max+min)/2;
while(arr[mid]!=key){
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(max<min)
return -1;
mid=(max+min)/2;
}
return mid;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章