1.內建資料類型的學習
Java中的資料類型分為兩種:一種是基礎資料型別 (Elementary Data Type)(也叫內建資料類型),另一種是參考型別。Java中的內建資料類型有8種,分別是byte、short、int、long、float、double、char、boolean。
byte:位元組類型,佔一個位元組的儲存空間,資料範圍是-128~127。
short:短整型,雙位元組,佔兩個位元組的儲存空間,資料範圍是[-327678,32767]。
int:整型,是最基本的資料類型,佔4個位元組的儲存空間,資料範圍是[-2^31,2^31-1]。
long:長整型,佔8個位元組的儲存空間,是所用整型資料中占記憶體最多的。
對於以上四種資料類型,無論哪一種,都有一個特點,通過整型變數存取資料都是精確的,不會出現誤差。還有一點,整數間的任何運算,其結果仍是整數。
實數類型有兩種:單精確度的float和雙精確度的double,這類資料類型的存取都是不準確的。在Java中控制實數的精度(即小數點位元)是這樣的一種格式:
System.out.printf("%10.5f",value);——>保留5位小數。
char:字元類型,java中的字元類型屬於雙位元組類型,即一個字元由兩個位元組來儲存,它的編碼錶是Unicode編碼,屬於雙位元組編碼。對於一個字元來說,處理要考慮其編碼值,其編碼值從0到65535,即65536個字元,其中包含了大量的漢字。漢字的Unicode編碼範圍為:’\u4e00’-‘\u9fa5’。對於字元類型,可以用編碼值對其賦值。對字元進行強制轉換成int型可以知道其Unicode編碼值。
eg:char ch1 = 65;char ch2 ='B';char ch3 = '漢';syso((int)',');//結果為44
逸出字元的應用:
斷行符號:'\r' (之前不知道這個字元具體有什麼用,測試一下)
作用是'\r'使得游標重新回到這一行的開頭,如果後面有要輸出的內容,會把之前這一行的內容進行覆蓋。
換行:'\n';單引號:'\'';雙引號:'\"';制位表:'\t';(表示間隔一定的制位符輸出)字串表示斷行符號換行:"\r\n"。
boolean:布爾類型,只有兩個值:false和true,分別用來表示真和假的兩種狀態。
eg:
int x = 10;int y =10;boolean b= x>y &(x=y++) >5;System.out.println(x+','+y); //結果為65 System.out.println("x,y:"+x+','+y); //結果為x,y:10,11//比較boolean b = x>y && (x = y ++)> 5; //第二個運算式未進行運算System.out.println(x+','+y); //結果為64System.out.println("x,y:"+x+','+y); //結果為x,y:10,10
比較&&和&的區別:
&和&&都可以用作邏輯與的運算子,表示邏輯與(and),當運算子的兩邊的運算式都為true時,整個結果才為true,否則只要有一個為false,結果為false。
&&還具有一個短路功能,即如果第一個運算式為false,則不再計算第二個運算式的。就像上述例子一樣。當&操作符兩邊的運算式不是boolean類型,&表示按位與操作。
System.out.println(x+','+y);','字元相當於轉化成起Unicode值與x和y進行了加法運算啦。','字元的Unicode值為44.
2.三種迴圈
1)while迴圈
While迴圈中將計數器定義賦值,迴圈條件判斷,計數器的增減,三個運算式不在同一位置聲明定義。與while有關的迴圈特點基本是迴圈次數不確定(次數是固定的,但是不知道)。
While迴圈退出的情況分為兩種:從while後面的括弧中退出;從迴圈體中退出。
從迴圈體中退出通常設計為恒真迴圈。
eg:
while(true){sum += start;start ++;if(start>end){break;//break關鍵字主要用在迴圈中,用於退出當前層迴圈}}System.out.println("1+2+3+...."+ end + " = " + sum);
2)do-while迴圈
int sum = 0;int start = 1;do{//執行迴圈體sum += start++;}while(start<=100);System.out.println("sum: "+sum);
對於while和do-while,只有一個區別,while迴圈可能一次也不執行,而do-while至少執行一次。對於do-while迴圈來說,它至少執行一次,再來進行判斷。即使第一次判斷條件就為假,迴圈也執行了一次迴圈。
3)for迴圈
for迴圈中將計數器定義賦值,迴圈條件判斷,計數器的增減,三個運算式在同一位置聲明定義。與for有關的迴圈特點基本是迴圈次數是確定的。
eg:for(int i = 0;i<=n ; i++)
常規for迴圈的執行過程:
當計數器初始化(只一次)之後,利用迴圈條件判斷運算式進行判斷,如果為真,則執行迴圈體中的代碼,執行完之後,進入計數器的增加部分,再到判斷運算式中進行判斷,為真,繼續執行,如為假,迴圈結束。依次周而復始。
3.幾個典型例子的說明
1)定義兩個整數,分別用來表示行數和列數,用while迴圈,用字元*列印出來一個矩形。
*****************
*****************
*****************
*****************
用兩個while迴圈控制外層和內層
private static void PrintRectangle(int m,int n){ int i = 0; //控制行 int j = 0; //控制列 while(i <= m) { j=0; //關鍵:每次迴圈一行之後,j都是從零開始 while(j <= n) { System.out.print("*"); j++; } System.out.println(); i++; } }
2)用while迴圈來解決一下“斐波那契數列”問題。
已知有兩個值,f0=0,f1=1;之後每個後面的值都等於前兩個值之和。前面的若干個數為:
0,1,1,2,3,5,8,13,21,…..要求輸出前40項。
private static void PrintFun2(){ // 斐波那契數列問題 int f0 = 0; int f1 = 1; int times = 19; int time = 1; System.out.printf("%-10d",f0); //調用C語言的輸出格式,控制間距 System.out.printf("%-10d",f1); while(time <= times){ System.out.printf("%-10d",f0); System.out.printf("%-10d",f1); f0 = f0+f1; f1 = f0+f1; time++; } }
3)列印乘法口訣。
a) 列印原始的乘法口訣
b) 列印沒有重複值的乘法口訣
private static void PrintAllMultiplication(){ //完整的乘法口訣 { int x = 1, y = 1; while (x <= 9) { y=1;while (y <= 9) { System.out.print(x+"*"+y+"="+x * y+"\t"); //注意要使用\t制位符進行間距的控制。y++; } System.out.print("\n"); x++; } } } private static void PrintMultiplication(){ //無重複乘法口訣表 { int x = 1; // int y=1;變數的可見範圍(生命週期)while (x <= 9) { int y = 1; while (y <= x) { System.out.print(x+"*"+y+"="+x * y+" "); y++; } System.out.print("\n"); x++; } } }