2.java文法
2.1java的變量
.java中的辨別符的要求:
1,隻能是字母,數字,_,$
2,數字不能作為辨別符的開頭。
3,大小寫敏感。
4,沒有長度限制。如:arrayoutofboudleexception
5,辨別符不能是關鍵字。
一般來說,類的名字以大寫字母開頭。
方法和變量的名字以小寫字母開頭。
辨別符的名字應當具有含義,如age, name
表達式:1,由運算符和變量組成。2,都會有傳回值。
簡單表達式:a/b;複合表達式:"a/b="+(a/b);
.對于任意一個變量隻要定義都需要三部分的内容
變量的類型 變量名稱 = 變量的值 (變量的值必須和類型一緻)
.變量的類型
基本資料類型:4類8種
1、整型-->byte(1) short(2) int(4) long(8) -->int(預設類型)
定義long long num = 12l;
2、浮點類型--> float(4) double(8) --->double(預設類型)
定義float float f = 12.0f;
3、布爾類型(boolean)--> true false
4、字元類型(char)--->字元類型不是字元串使用的是' '(單引号)進行定義,而且隻能有一個字元
char c = 'a'; char cc = 'cc';//錯誤,隻能有一個字元。unicode(2個位元組)
·變量的類型轉換()
1、小類型的值會自動轉換為大類型的值 int a = 10 double b = 12.5 a+b-->double類型
2、要把一個大類型的值存儲到小類型中,需要進行強制類型轉換,如果不轉換,會編譯出錯
強制類型轉換的方式:(int)12.5--->就把12.5這個double類型轉換為int類型了
3、當char、byte和short進行運算時會自動轉換為int類型
byte b1 = 12; byte b2 = 32; b1+b2--->是int類型
·變量的作用域
花括号内有效,在同一個作用域中不能重複定義變量
·定義變量的規定
第一:關鍵字用來定義變量(_sdfhj_sd)int double = 10;
第二:對于類而言,定義的名稱的第一個字母用大寫,對于函數或普通的變量而言,
第一個字小寫 之後遵循駝峰辨別。
思考:
short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
short s1 = 1; s1 = s1 + 1; (s1+1 運算結果是int 型,需要強制轉換類型)
short s1 = 1; s1 +=1;(可以正确編譯)
·引用類型變量(string)
string 類提供了數值不可改變的字元串 string s=new string(“abc”);建立了兩個對象
1,在字元串池中建立一個對象(此對象是不能重複的)
2,new出一個對象。java運作環境有一個字元串池,由string類維護。
執行語句string s="abc"時,首先檢視字元串池中是否存在字元串"abc",如果存 在則直接将"abc"賦給s,如果不存在則先在字元串池中建立一個字元串"abc",然後再将
其賦給s。執行語句 string s=new string("abc")時,不管字元串池中存
在字元串"abc",直接建立一字元串"abc"
(注意:建立的字元串"abc"不是在字元串池中),然後将其付給s。
2,初始化 (局部變量而言,必須初始化才能使用)如:age=10;
3,通過變量的名字對變量進行操作,如:age=other;
指派時,左=右
1)資料性質是否一樣。
2)所占用的記憶體空間上考慮(左>右)不用類型轉換。(左<右)要類型強制轉換,
如:int age=1;
longl=10;
age=(int)l;
符号位:0代表正數,1代表負數。
string 和stringbuffer 的差別
java 平台提供了兩個類:string 和stringbuffer,它們可以儲存和操作字元串,即包含多個字元的字元資料。這個string 類提供了數值不可改變的字元串。而這個stringbuffer 類提供的字元串進行修改。當你知道字元資料要改變的時候你就可以使用stringbuffer。典型地,你可以使用stringbuffers來動态構造字元資料。
2.2java運算符
2.2.1、+、-、*、/、%(算術運算符)
2.2.2、邏輯運算符(>、<、>=、<=、==、!=)12>11-->true
2.2.3、自增和自減
注意:
自增(++),自減(--)運算符。
前++:++a;先對a+1,再傳回a+1之後的值。
後++:a++;先傳回a的值,然後對a進行+1。
前++,後++共同的特點:a本身的值都會+1;
差別在于表達式的傳回值是不一樣;用傳回值來參與計算
2.4三目運算符
? :-->(boolean express)? a : b;如:char ch=(5>2)?'y':'n';
?前面的布爾表達式如果為真就執行a,否則執行b。
(‘:‘左右兩側的傳回類型要一緻,且與ch的傳回類型也一樣)
2.3語句結構
1,順序
2,條件(代碼是否執行,依賴于一個特定的條件)
if(boolean express){
xxxxxx;//如果布爾表達式為真就執行xxxxxx。
xxxxxx;
}else{
xxxxxx;//如果布爾表達式為假就執行xxxxxx。
}
3,循環(相同的代碼,被重複的執行多次)
a,初始化循環條件。b,确定循環條件。c,确定循環變量在循環體中的變化。
(1)a;
while(boolean express){
xxxxxxxxx;//如果布爾表達式為真就執行xxxxxx
xxxxxxxxx;
c;
}
(2)for(a;b;c){
}
(3)do{
xxxxxxxxxx;//循環體至少執行一次;
xxxxxxxxxx;
}while(boolean express);
while(xxx){
xxxxxx;
bread;//或者continue;
break :用在循環或分支裡,用于退出整個循環或分支
continue :用在循環裡,用于結束本次循環。接着開始下一次循環
4,分支
switch(var){
case 1 : xxxxxx;
break;
case 2 : xxxxxx;
........
default : xxxxxxx;//default後面可以不用break;
}
注意:
var:是一個整數表達式。是以傳遞給 switch 和 case 語句的參數應該
是int、short、char 或者byte。long,string 都不能作用于swtich。
2.4函數
函數所做的事情,可以将一個過程進行封裝,将來隻要調用函數就會調用整個過程
函數的基本要素
傳回值 函數名(函數參數){
函數體;
}
函數(方法):是由一些相關代碼組成的集合,目的是為了解決一個特定的問題,或者實作
某個特定的功能。
函數(方法)一定有一個自己的名字,通過函數的名字執行函數中的代碼。
2,在java中如何定義函數:
a,聲明:public static void printmenu(int a,double b){.....}
b,編寫函數體:
如: public static void printmenu(int a,double b){
xxxxxxxxxxx;
}
函數(方法)裡面不允許再有其它的函數(方法),函數(方法)的位置必須 是并列的。
3,調用函數:
通過函數名,如pirntmenu(a,b);
public static void main(string argv[]){
xxxxxxxxxxxx;
printmenu(a,b);
xxxxxxxx;
調用者-原資料->函數
return 作用:1,結束本方法。2,傳回結果。
一個函數傳回的值隻能有一個。
值傳遞。傳遞的是實參的值,
被調函數使用的數都是實參的拷貝。
是否改變實參,要看被調函數的設計。
2.5數組
一,數組:一維數組-->:三種聲明方式
(1)首先要聲明。如:int[] array;
(2)申請記憶體空間如:array=new int[2];
array代表數組array[]的首位址(引用:引用類似c++裡的指針。);當參數傳遞時,隻
要用數組的首位址就可以。
1,數組中的元素類型要一緻。
2,數組長度不能預設,不能改變,但可以删了重建。
3,記憶體空間連續,有索引下标值(從0開始,最大length-1)
優缺點:查詢快,增删慢(連結清單,查詢慢,增删快)
隻要有new在,就要為變量配置設定記憶體。 array.length//表示數組array的長度。
array存的是array數組首變量的位址。
二,數組的顯示初始化:int[] array={1,2,3,4,5,6};
三,int[] array=new int[]{1,2,3,4,5,6,7};
數組的拷貝:
public static int[] expand(int[] a){
int[] b=new int[a.length*2];
/* for(int i=0;i<a.length;i++){
b[i]=a[i];
這段代碼等于下面那條代碼
*/
// 從a數組下标為0的位置開始拷貝,到b數組下标為0 的位置開始粘貼。
// a.length為粘貼的個數。(一般為a數組的長度)。
system.arraycopy(a,0,b,0,a.length);
return b;//傳回擴充後的數組b。b是代表數組b的首位址。
}
二維數組(數組的數組)-->:三種聲明方
二維數組的第二個[]在聲明時可以留白,如:int[][] array=new int[4][];
//留白說明該二維數組的列是以行的數組下标為數組名,再成為新的數組。
一,聲明:int[][] array=new int[3][4];//聲明一個三行四列的整型二維數組。
二,int[][] array={{1,2,3},{2,3,4},{2,5,7},{2,3,6}};
三,int[][] array=new int[][]{{1,2,3},{2,3,4},{2,5,7},{2,3,6}};
1,找對象(客觀存在的事物);
2,利用對象的功能。就是讓對象幹點什麼;
3,對象的屬性可以是其他對象。
4,對象還可以通過調用其他對象的函數産生聯系。
5,簡單的對象構成複雜的系統。
有什麼:屬性-------》 執行個體變量
做什麼:方法-------》函數
對象的屬性可以是其他對象
對象還可以通過調用其他對象的函數産生聯系
簡單的對象構成複雜的系統
思想:解決問題的過程,
總綱(優勢)
1,符合人的思維過程。
2,編寫出來的代碼比較合理。如:可擴充性,可維護性,可讀性等等。(存在就是合理),(貼 近生活)
3,弱耦合性,
4,可擴充性
5,可複用性。不要重複制造輪子。
6,更盡所能,更施其職。