java變量與基礎語法課件_第1頁
java變量與基礎語法課件_第2頁
java變量與基礎語法課件_第3頁
java變量與基礎語法課件_第4頁
java變量與基礎語法課件_第5頁
已閱讀5頁,還剩62頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 JAVA變量與基礎語法變量與基礎語法 標識符與關鍵字 基本數據類型運算符與表達式程序的流程結構(分支,循環)數組方法基本的輸入與輸出本章目標本章目標簡單輸出語句簡單輸出語句如果要將某些信息打印到屏幕上,就必須使用輸出語句;使用System.out.println()實現換行輸出效果;使用System.out.print()實現輸出但不換行效果;無論輸出什么類型的數據,只需將數據作為參數傳遞給它們即可,而無需像C語言中那樣,使用%s、%d之類的控制字符,如:int a = 10;float f = 3.14f;System.out.println(a);System.out.print(f);

2、System.out.println(X);簡單簡單輸入語句輸入語句使用System.in.read()實現輸入效果; read()函數的返回值是字符的Unicode值,是int類型的。 public static void main(String args) throws IOException int charc = System.in.read(); System.out.printf(%c, charc); JDK5中還增加了Scanner類用于,可用于輸入。 概念概念: 在編寫程序時,對各種變量,方法和類等要素命名時使用的字符序列稱為標識符。命名規則:命名規則: 只能由字母,下劃線,

3、美元符或數字組。 只能由字母,下劃線”_”和美元符”$”開頭。 不能是java中的關鍵字和保留字。說明:說明: java中嚴格區分大小寫,所以標識符也是大小寫敏感的,但長度沒有限制。 約定俗成: java標識符的選取要做到”見名知其意” 且不能為java語言中的關鍵字。定義時盡量不要與預定義標識符重名。標識符標識符 關鍵字關鍵字: java中一些賦予特定的含義,用做專門用途的字符串稱為關鍵字(Keyword)。 說明: 在一些編輯器和IDE中會將關鍵字使用特殊方式和顏色標出來。 在 java 中 所 有的關鍵字都是英文小寫。 在java 中 goto和const 雖然從未被使用,也當作關鍵字保

4、留了下來。保留字:保留字: 不是關鍵字,但在程序中又不能作為用戶定義標識符的字符串(reserved words)。Java中的保留字有:true, false, 和 null 。關鍵字與保留字關鍵字與保留字JAVA中的關鍵字中的關鍵字abstractcontinuefornewswitchassert*defaultgoto*packagesynchronizedbooleandoifprivatethisbreakdoubleimplements protectedthrowbyteelseimportpublicthrowscaseenum*instanceofreturntransie

5、nt catchextendsintshorttrycharfinalinterfacestaticvoidclassfinallylongstrictfp*volatileconst*floatnativesuperwhile關鍵字說明關鍵字說明*not used*added in 1.2*added in 1.4*added in 5.0標識符舉例標識符舉例合法標識符非法標識符非法說明TeStHello World含有空格A11A數字開頭$absb含有不合法字母mainboolean關鍵字Truetrue保留字_booleanjava的常量類型: 整型常量:十進制(12) ,十六進制 (0

6、 x12),八進制(012) 長整型常量:13L 單精度浮點數:5.1f,.4f ,2e3f ,0f 雙精度浮點數:5.1,.4,2e-3,0d說明: 單精度浮點數和雙精度浮點數統稱為實型數。 默認的小數為雙精度浮點數。 邏輯常量: true 和 false Java常量常量 字符常量: a , 8, u0027 r表示接受鍵盤輸入,相當于按下了回車鍵; n是換行; t是制表符,相當于table鍵; b是退格鍵,相當于Back Space; 是單引號,而“是雙引號; 是一個斜杠“”。 字符串常量: “hello project” 注意點: 字符串常量和字符常量的區別。 注意常量這個名詞的應用語

7、境,有時候,常量這個名詞應用在其他語境中表示值不可變的變量。參見”final關鍵字”。 Java常量常量 概念概念: 變量是系統為程序分配的一塊內存存儲單元, 用來存儲各種數據類型的數據,根據所存儲的變量值的數據類型不同,可以劃分為各種不同數據類型的變量,其要素為變量名,數據類型,變量值和作用域。可以根據變量名稱來訪問其對應內存存儲單元中的變量值.如下定義了一個變量: int age = 20;(其在內存表示如右圖) Java變量變量age20age表示變量名20表示存儲單元名稱為age中的值請參見java變量按數據類型劃分的圖Java變量數據類型變量數據類型數據類型基本數據類型引用數據類型數

8、值型字符型(char)布爾型(boolean)整數類型(byte,int,short,long)浮點類型(float,double)類(class)接口(interface)數組byte占用一個字節,數字大小為-2727-1short占用兩個字節,數字大小為-215215-1 int占用四個字節,數字大小為-231231-1 long占用八個字節,數字大小為-263263-1 float占用四個字節,數字大小為1.4E-453.4E+38 , -1.4E-45-3.4E+38 。用二進制的指數形式表示一個浮點數的格式,如:101*22 , 101*2-3double占用八個字節,數字大小為4.

9、9E-3241.7E+308, -4.9E-324-1.7E+308 。char占兩個字節,數字大小為0216-1,是unicode編碼。字符的本來面目,我們為什么可以直接將一個數字賦給字符變量。boolean占一個字節,其取值只有兩個,true和false。JAVA變量字節大小及有效取值范圍變量字節大小及有效取值范圍 變量定義:變量定義: java程序中每個變量都屬于特定的數據類型, 在使用前必須對其聲明,聲明格式為: dataType variableName = variableValue; 變量聲明舉例:變量聲明舉例: int age = 20; float price = 20.06

10、f; double d1,d2,d3 = 0.456; int x = 1,y; y = x + 3;注意: 從本質上講,變量其實是內存中的一小塊內存單元,可以通過其名字(變量名)來訪問這塊區域,因此,每個變量使用前必須要先申請(聲明),然后必須對其進行賦值,才可以使用。 Java變量的定義變量的定義JAVA變量的默認值變量的默認值Data TypeDefault Value (for fields)byte0short0int0long0Lfloat0.0fdouble0.0dcharu0000String (or any object) nullbooleanfalse 按被聲明的位置劃分

11、 局部變量 ::方法的參數列表中和方法內部以及語句塊中聲明的變量。 成員變量: 方法外面且在類的里面聲明的變量。 靜態成員變量:用static關鍵字修飾的成員變量。 注意: java語言中,類外面(與類對應的大括號外面)不能有變量的聲明.按所屬的數據類型劃分 基本數據類型變量 引用數據類型變量Java變量的分類變量的分類初始化問題:初始化問題: Java的成員變量在聲明時,如果沒有指定初始化的值,系統會根據成員變量的數據類型給出默認的值,但局部變量在聲明時候沒有初始化,則系統不會給出默認的初始化值,如果在使用前,沒有對其進行初始華,在編譯時就會報錯。請看下面的代碼: public void m

12、ethodName() int height; int width = height + 5; /編譯出錯,height還沒有被初始化. Java的局部變量和成員變量的局部變量和成員變量分類:分類: 自動類型轉換(也叫隱式類型轉換) 強制類型轉換(也叫顯式類型轉換) 類型轉換的原理及什么時候要用強制類型轉換表達式的數據類型自動提升分析 System.out.println(a+1)與 System.out.println(“”+a+1) 的區別。Java數據類型轉化數據類型轉化 byteshortcharintlongfloatdouble變量 的作用域指變量起作用的范圍,說明變量在什么部分可

13、以被訪問;變量的生命周期是指變量在內存中存在的周期,即什么時候分配空間,什么時候銷毀;變量要先定義,后使用,但也不是在變量定義后的語句一直都能使用前面定義的變量。我們可以用大括號將多個語句包起來形成一個復合語句,變量只能在定義它的復合語句中使用。JAVA變量的生命周期與作用域變量的生命周期與作用域public class TestScope public static void main(String args) int x = 12; int q = 96; / x和q都可用 int x = 3;/錯誤的定義,Java中不允許有這種嵌套定義 System.out.println(x is +

14、x); System.out.println(q is +q); q = x; /* 錯誤的行,只有x可用, q 超出了作用域范圍 */ System.out.println(x is +x); JAVA變量的生命周期與作用域變量的生命周期與作用域運算符是一種特殊符號,用以表示數據的運算、賦值和比較,一般由一至三個字符組成 。運算符共分以下幾種: 算術運算符 賦值運算符 比較運算符 邏輯運算符 移位運算符java中的運算符中的運算符 算術運算符算術運算符 “+”除字符串相加功能外,還能把非字符串轉換成字符串 ,如: “x”+123;的結果是“x123” 。 如果對負數取模,可以把模數負號忽略不

15、記,如:5%-2=1。但被模數是負數就另當別論了。對于除號“/”,它的整數除和小數除是有區別的:整數之間做除法時,只保留整數部分而舍棄小數部分。 int x=3510;x=x/1000*1000;實際運行結果是3000 ,想想為什么? 算術運算符的注意問題算術運算符的注意問題賦值運算符賦值運算符 注1:在JAVA里可以把賦值語句連在一起,如: x = y = z = 5 ; 在這個語句中,所有三個變量都得到同樣的值5。注2 :x += 3等效于x = x + 3,等于*= ,-=,/=依此類推。 比較運算符比較運算符 注1:比較運算符的結果都是boolean型,也就是要么是true,要么是fa

16、lse。注2:比較運算符“=”不能誤寫成“=” ,切記!切記!邏輯運算符邏輯運算符 注1:邏輯運算符用于對boolean型結果的表達式進行運算,運算的結果都是boolean型 。注2:“&”和“&”的區別在于,如果使用前者連接,那么無論任何情況,“&”兩邊的表達式都會參與計算。如果使用后者連接,當“&”的左邊為false,則將不會計算其右邊的表達式。“|”和“|”的區別與“&”和“&”的區別一樣。 public class TestAnd public static void main(String args) int x=0; int y=3;

17、 if(x!=0 & y=y/x) System.out.println(y = +y); 上面例子中,由于while語句的判斷條件中的第一個布爾表達式是不成立的,程序就不會判斷第二個布爾表達式的值,這就是“短路”。如果兩個表達式之間用“&”來連接,如果正好碰到上面所示的特殊情況,程序運行時就會出錯 “&”和和“&”的區別分析的區別分析移位運算符適用類型有byte、short、char、int、long對低于int型的操作數將先自動轉換為int型再移位。對于int型整數移位ab,系統先將b對32取模,得到的結果才是真正移位的位數。例如:a33和a1結果是一樣的,

18、a32的結果還是a原來的數字。對于long型整數移位時ab ,則是先將移位位數b對64取模。移位不會改變變量本身的值。如a1;在一行語句中單獨存在,毫無意義 。x1的結果和x/2的結果是一樣的,x2和x*4的結果也是一樣的。總之,一個數左移n位,就是等于這個數乘以2的n次方,一個數右移n位,就是等于這個數除以2的n次方。請思考:如何用程序實現求2的x次方。答案:y = 1 x; 移位運算注意事項移位運算注意事項運算符的優先級運算符的優先級 我們可以使用括號改變運算賦的優先級,分析int a =2;int b = a + 3*a;語句的執行過程 與int a =2;int b =( a + 3)

19、*a;語句的執行過程的區別 。對于int a =2; int b= a + 3 * a+;這樣的語句,b最終等于多少呢?作者試驗得到的結果是8。 對于int a =2; int b= (a +)+ 3 * a;這樣的語句,b最終等于多少呢?如何避免多個運算符帶來的問題如何避免多個運算符帶來的問題與其去思考其中的原因,我們還不如將上面的第二句改為幾條語句來實現我們想要的結果。不要在一行中編寫太復雜的表達式,也就是不要在一行中進行太多的運算在一行中進行太多的運算并不能為你帶來什么好處,相反只能帶來壞處,它并不比改成幾條語句的運行速度快,它除可讀行差外,還極容易出錯。對于優先級順序,讀者不用刻意去記

20、,有個印象就行如果你實在弄不清這些運算先后關系的話,就用括號或是分成多條語句來完成你想要的功能,因為括號的優先級是最高的,這也是軟件編碼規范的一個要求。如何避免多個運算符帶來的問題如何避免多個運算符帶來的問題表達式:表達式: 表達式是運算符和操作數的結合,它是任何一門編程語言的關鍵組成部分 表達式允許程序員進行數學計算、值的比較、邏輯操作以及在Java中進行對象的操作。 一些表達式的例子:語句:語句:空語句:空語句:復合語句:復合語句: 代碼塊:代碼塊:表達式和語句表達式和語句順序結構順序結構選擇結構選擇結構循環結構循環結構 顧名思義,順序結構就是程序從上到下一行一行執行的結構,中間沒有判斷和

21、跳轉,直到程序結束。 程序的流程控制程序的流程控制 if (表達式) 語句; if (表達式) 語句1; else 語句2; if (表達式1) 語句1;else if (表達式2) 語句2;else if (表達式2) 語句3; else 語句n;if語句的選擇結構語句的選擇結構 每個語句可以是使用每個語句可以是使用 組成的復合語句。組成的復合語句。條件表達式:條件表達式: 變量變量 布爾表達式?語句布爾表達式?語句1:語句語句2; If語句還可以嵌套使用語句還可以嵌套使用if (表達式1) if (表達式2) 語句1;else語句2; esle if (表達式2) 語句3;else語句4;

22、嵌套時最好使用確定層次界限,舉例說明。if語句的選擇結構語句的選擇結構 Switch (表達式)case 常量表達式1:語句1;break;case 常量表達式2:語句2;break;case 常量表達式n:語句n;break;default: 語句n; default語句是可選的,它接受除上面接受值的其他值,通俗的講,就是誰也不要的都歸它。 case后面可以跟多個語句,這些語句可以不用大括號括起來 。 switch語句判斷條件可接受int, byte, char, short型,不可以接受其他類型。 一旦碰到第一次case匹配,就會開始順序執行以后所有的程序代碼,而不管后面的case條件是否

23、匹配,后面case條件下的代碼都會被執行,直到碰到break語句為止。我們可以利用這個特點來用同一段語句處理多個case條件。switch語句的選擇結構語句的選擇結構 While (表達式) 語句;int x=1;while(x3) System.out.println(x=+x); x+; 腳下留心:while表達式的括號后面一定不要加“;” while循環語句循環語句 do 語句 ; while (表達式);public class TestDopublic static void main(String args)int x=3;while(x=0)System.out.println(

24、ok1); x+; int y=3; do System.out.println(ok2); y+; while(y=0);do-while循環語句循環語句編寫一個程序,這個程序不斷地讀取從鍵盤上輸入的字符,直到讀到字符q時,程序結束。提示:調用System.in.read();可以讀取到一個從鍵盤上輸入字符對應的整數。通過這個程序,你一定能體會到在什么樣的情況下,用do-while循環語句比while循環語句方便。do-while循環語句循環語句for(表達式1;表達式2 ;表達式3) 語句; for循環的三個表達式中的任意一個都可以省略,甚至是三個都可以省略,但是兩個“;”是不能省略的。如

25、下面幾種寫法是等價的:for(int x=1;x10;x+) System.out.println(x=+x); 等效于for循環語句循環語句 int x=1;for(;x10;x+) System.out.println(x=+x); 等效于int x=1;for(;x= 10)break; System.out.println(x=+x); x+;for循環語句循環語句 break語句可以中止循環中的子語句和switch語句。一個無標號的break語句會把控制傳給當前(最內)循環(while,dofor或Switch)的下一條語句。如果有標號,控制會被傳遞給當前方法中的帶有這一標號的語句。

26、如:st:while(true) while(true) break st; break語句語句 continue語句只能出現在循環語句(while,do,for)的子語句塊中,無標號的continue語句的作用是跳過當前循環的剩余語句塊,接著執行下一次循環。 用continue語句的打印出 0到10之間的所有奇數的程序例子。 for(int i=0;i10;i+) if(i%2=0) continue; System.out.println(i); continue語句語句 Java中的原始數據類型與C語言中的基本數據類型一樣,其變量都是在棧中分配空間;而除了8種原始數據類型以外,其它的任何

27、數據都不可以在棧中分配,只能到堆中開辟空間,而在堆中分配的空間又只能通過指針訪問;通過指針訪問堆內存的方式,在Java中被稱作引用數據類型;可以認為,Java中的引用就類似于C語言中的指針,只是對指針進行了一定程度上的包裝,避免了因直接操作指針而造成的數據意外損壞,從而導致程序錯誤的情況。Java中的內存分配中的內存分配數組用于將相同類型的數據存儲在連續的存儲單元中;可以通過指定數組的名稱和長度來聲明數組;一旦聲明數組的大小,就不能再修改;數組元素通過數組名和索引來訪問,索引從0開始;數組可以是一維,也可以是多維。數組數組 在Java中,不允許將數組分配在棧內存中,只能分配在堆內存中; Jav

28、a中沒有類似于malloc、calloc、realloc和free等函數,取而代之的是new關鍵字; new是Java中內置的操作符; new操作符用來從堆中分配指定類型的內存空間,并返回相應類型的引用,其作用類似于malloc函數。new關鍵字關鍵字Java中聲明數組的幾種方式中聲明數組的幾種方式/僅聲明數組的引用,但沒有分配內存空間僅聲明數組的引用,但沒有分配內存空間float fAry;/聲明數組的同時,根據指定的長度分配內存,但數組中聲明數組的同時,根據指定的長度分配內存,但數組中沒有值沒有值char chAry = new char10;/聲明數組并分配內存,同時將其初始化聲明數組并

29、分配內存,同時將其初始化int ary1 = new int1, 2, 3, 4, 5;/與前一種方式相同,僅僅只是語法相對簡略與前一種方式相同,僅僅只是語法相對簡略int ary2 = 1, 2, 3, 4, 5;C語言中,不可以將數組直接賦值給另一個數組;在Java中,語法上允許這樣做,但實際得到的效果是兩個數組引用指向同一塊內存。int ary1 = 2, 4, 6, 8, 10;int ary2;ary2 = ary1; 數組之間賦值數組之間賦值108642堆堆棧棧ary1ary2在Java中,程序員可以不再關注數組的長度,數組自帶的length屬性將負責保管數組的長度; C語言不檢查

30、數組的邊界,數組索引完全由程序員掌握; Java對數組下標越界情況強加約束;如果試圖訪問不在有效索引以內的元素,將會引發運行錯誤。關于數組長度關于數組長度數組賦值示例數組賦值示例public class ArrayDemo public static void main(String args) int ary1 = 2, 4, 6, 8, 10; /聲明并初始化數組聲明并初始化數組1 int ary2; /聲明數組聲明數組2 ary2 = ary1; /將數組將數組1賦值給數組賦值給數組2 ary23 = 1024; /通過數組通過數組2修改其中一個元素的值修改其中一個元素的值 /打印出數組

31、打印出數組1中的元素中的元素 System.out.println(數組數組1中的元素:中的元素:); for (int i = 0; i ary1.length; i+) System.out.println(ary1i); /打印出數組打印出數組2中的元素中的元素 System.out.println(數組數組2中的元素:中的元素:); for (int i = 0; i ary2.length; i+) System.out.println(ary2i); 如何理解多維數組,類似我們的棋盤。 java 中并沒有真正的多維數組,只有數組的數組, Java中多維數組不一定是規則矩陣形式。多維

32、數組多維數組 多維數組中元素的引用方式,如:x12。規則矩陣數組可以在一條語句中產生,如:int xx=new int23; 多維數組的靜態初始化 ,如: int xx=3,2,7,1,5,6; 多維數組多維數組定義一個多維數組int xx;xx=new int3; xx0=new int3;xx1=new int2;多維數組多維數組 使用循環作數組復制int arr1 = 1, 2, 3, 4, 5;int arr2 = new int5;for(int i = 0; i arr1.length; i+) arr2i = arr1i;for(int i = 0; i arr2.length;

33、 i+) System.out.print(arr2i + );System.out.println();數組復制數組復制不可用=比較兩個數組的元素值是否相等int arr1 = 1, 2, 3, 4, 5; int arr2 = 1, 2, 3, 4, 5; int tmp = arr1; System.out.println(arr1 = tmp); System.out.println(arr2 = tmp);數組比較數組比較foreach與數組與數組加強的for循環(Enhanced forLoop) for(type element : array) System.out.print

34、ln(element). J2SE 5.0之前 int arr = 1, 2, 3, 4, 5; for(int i = 0; i arr.length; i+) System.out.println(arri);在J2SE5.0之后 int arr = 1, 2, 3, 4, 5; for(int element : arr) System.out.println(element);foreach與數組與數組如果是對象的話二維數組String names = caterpillar, momor, bush;for(String name : names) System.out.printl

35、n(name);int arr = 1, 2, 3,4, 5, 6,7, 8, 9;for(int row : arr) for(int element : row) System.out.println(element); 函數(子程序)的概念與作用。定義一個函數的格式:返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,.) 程序代碼 return 返回值;返回值;其中:形式參數:形式參數:在方法被調用時用于接收外部傳入的數據的變量。參數類型參數類型:就是該形式參數的數據類型。返回值:返回值:方法在執行完畢后返還給調用它的程序的數據。返回值類型:返回值類型:函數要返回的結果的數據類型。如沒有返回值,則為void。實參:實參:調用函數時實際傳給函數形式參數的數據。函數函數java中函數參數的傳遞和C語言中一樣,都是值傳遞。class testpass public static void s x,int y) int a=x; x=y;y=a; System.out.println(“x=”+x+”y=”+y); public static void man() int a=2,b=3; s); Sys

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論