第一章/第二章
Java中的常量
(Lesson02A.rmvb)
●字符常量
‘\r’表示接受鍵盤輸入,相當于按下了回車鍵;
‘\n’是換行;
‘\t’是制表符,相當于table鍵;
‘\b’是退格鍵,相當于BackSpace;
‘\’’是單引號
‘\”’是雙引號;
‘\\’是一個斜杠
變量的概念與作用
● 變量就是系統為程序分配的一塊內存單元,用來存儲各種類型的數據。根據所存儲的數據類型的不同,有各種不同類型的變量。變量名代表這塊內存中的數據。
● int x=0,y;
y=x+3;
x在被取值前必須被初始化。
Java的變量類型
變量的字節大小
byte占用1個字節
Boolean占用1個字節
short占用2個字節
char占用2個字節
int占用4個字節
float占用4個字節
long占用8個字節
double占用8個字節
類型轉化
● 自動類型轉換(也叫隱式類型轉換)
● 強制類型轉換(也叫顯式類型轉換)
● 類型轉換的原理,及什么時候要用強制類型轉換
● 表達式的數據類型自動提升
◆ 所有byte型、short型和char的值將被提升到int型
◆ 如果一個操作數是long型,計算結果就是long型;
◆ 如果一個操作數是float型,計算結果就是float型;
◆ 如果一個操作數是double型,計算結果就是double型;
算術運算符的應用技巧
● 思考題1:某個培訓中心要為新到的學員安排房間,假設共有X個學員,每個房間可以住6個,讓你用一個公式計算他們要住的房間數?
答案:(x+5)/6。這種算法還可用在查看留言板的分布顯示上:其中x是總共的留言數,6是每頁顯示的留言數,結果是總共有多少頁。
● 思考題2:假設你要讓x 的值在0至9之間循環變化,請寫出相應的程序代碼。
class A
{
public static void main(String[]args)
{
int i=0;
while(true)
{
i=(i+1)%10;
System.out.println(i);
}
}
}
邏輯運算符
運算符 運算 & AND(與) |
范例 False & True |
結果 False |
| OR(或) ^ XOR(異或) |
False | true False ^ true |
True True |
! NOT(非) && AND(短路) |
!TRUE False && True |
False False |
|| OR(短路) |
False !! True |
True |
注1:邏輯運算符用于對boolean型結果的表達式進行運算,運算的結果都是boolean型。
注2:”&”和”&&”的區別在于,如果使用前者連接,那么無論任何情況,”&”兩邊的表達式都會參與計算。如果使用后者連接,當”&&”的左邊為false,則將不會計算其右邊的表達式。”|”和”||”的區別與”&”和”&&”的區別一樣。
位運算符
● 任何信息在計算機中都是以二進制的形式保存的,&|^除了可以作為邏輯運算符,也可以做為位運算符它們對兩個操作數中的每一個二進制位都進行運算。
◆ 只有參加運算的兩位都為1,&運算的結果才為1,否則就為0。
◆ 只有參加運算的兩位都為0,|運算的結果才為0,否則就為1。
◆ 只有參加運算的兩位不同,^運算的結果才為1,否則就為0。
● 我們可以對數據按二進制位進行移位操作,java的移位運算符有三種:
◆ <<左移
◆ >>右移
◆ >>>無符號右移
移位運算的注意事項及小技巧
● 移位運算符適用數據類型有byte、short、char、int、long。
● 對低于int型的操作數將先自動轉換為int型再移位。
● 對int型整數移位a>>b,系統先將b對32取模,得到的結果才是真正移位的位數。例如:a>>33和a>>1結果是一樣的,a>>32結果還是a原來的數字。
● 對于long型整數移位時a>>b,則是先將移位位數b對64取模。
● 移位不會改變量本身的值。A>>1;在行語句中單獨存在,毫無意義。
● x>>1的結果和x/2的結果是一樣的,x<<2和X*4的結果也是一樣的。總之,一個數左移n位,就是等于這個數乘以2的n次方,一個數右移n位,就是等于這個數除以2的n次方。請思考:如何用程序實現求2的x次方。答案:y=1<<x;
(Lesson02B.rmvb)
程序的流程控制
● 順序結構
● 選擇結構
● 循環結構
if語句的選擇結構
● if(表達式)語句
● if(表達式)語句1;else語句2;
● if(表達式1)語句1;
else if(表達式2)語句2;
else if(表達式3)語句3;
……
else語句n;
● 每個語句可以是使用{}組成的復合語句
● 變量=布爾表達式?語句1:語句2;
● if語句還可以嵌套使用
if(表達式1)
if(表達式2)語句1;
else語句2;
else
if(表達式3)語句3;
else語句4;
嵌套時使用{}確定層次界限,舉例說明
switch語句的選擇結構
Switch(表達式)
{
case 常量表達式1:語句1;
case 常量表達式2:語句2;
……
case 常量表達式n:語句n;
default:語句n;
}
● default語句是可選的,它接受除上面接受值有其他值,通俗的講,就是誰是也不要的都歸它。
● case后面可以跟多個語句,這些語句可以不用在括號括起來。
● switch語句判斷條件可以接受int,byte,char,short型,不可以接受其他類型。
● 一旦碰到第一次case匹配,就會開始順序執行以后所有的程序代碼,而不管后面的case條件是否匹配,后面case條件下的代碼都會被執行,直到碰到break語句為止。我們可以利用這個特點來用同一段語句處理多個case條件。
While循環語句
While(表達式)
語句;
int x=1;
while(x<3)
{
System.out.println(“x=”+x);
X++;
}
腳下留心:while表達式的括號后面一定不要加“;”
do-while循環語句
do 語句
while(表達式);
do..while 循環則先執行,再判斷是否要繼續執行,也就是說循環至少執行一次,有點像是先斬后奏的方法。只有條件計算結果為 true
時語句才會執行。
public class TestDO
{
public static void main(String[]args)
{
int x=3;
while(x==0)
{
System.out.println("ok1");
x++;
}
int y=0;
do
{
System.out.println("ok2");
y++;
}
while(y==0);
}
}
編寫一個程序,這個程序不斷地讀取從鍵盤上輸入的字符,直到講到字符’q’時,程序結束。提示:調用System.in.read();可以讀取到一個從鍵盤上輸入的字符對應的整數。通過這個程序,你一定體會到在什么樣的情況下,用do-while循環語句經while循環語句方便。
public class TestWhile
{
public TestWhile()
{
}
public static void main(String[] args)
{
// TODO code application logic here
int ch=0;
/* try
{
ch=System.in.read();
while(ch!='q')
{
System.out.println((char)ch);
try
{
ch=System.in.read();
}catch(Exception e){}
}
}
catch(Exception e)
{
e.printStackTrace();
//e.getMessage();
}
*/
do
{
try
{
ch=System.in.read();
}
catch(Exception e)
{
e.printStackTrace();
//e.getMessage();
}
System.out.println((char)ch);
//System.out.println(ch);
}
while(ch!='q');
}
}
for循環語句
for(表達式1, 表達式2, 表達式3) 語句
break與continue語句
break語句可以中止循環中的子語和switch語句。一個無標號的break語句會把控制傳給當前(最內)循環(while,do,for或switch)的下一條語句。如果有標號,控制會被傳遞給當前方法中的帶有這一標號的語句。
St:while(true)
{
while(true)
{
break st;
}
}
continue語句在能出現在循環語句(while,do,for)的子語句塊中,無標號的continue語句的作用是跳過當前循環的剩余語句塊,接著執行下一次循環。用continue語句的打印出0到10之間的所有奇數的程序例子。
public class TestContinue
{
public TestContinue()
{
}
public static void main(String[] args)
{
// TODO code application logic here
for(int i=0;i<10;i++)
{
if(i%2==0)
continue;
System.out.println(i);
}
}
}
數組
● 靜態數組
▂int ia[]={1,2,3,4};
▂int[]ia=new int[]{3,4,5};
▂int a[5];//聲明數組時,不能指定其長度,編譯時將出錯
▂a=null;
● 使用數組時要注意的問題
▂空指針異常
▂如何計算數組長度
▂數組越界異常
多維數組
● java中并沒有真正的多維數組,只有數組的數組,Java中多維數組不一定是規則矩陣形式。
● 定義一個多維數組
int [][]xx;
xx=new int [3][];
xx[0]=new int[3];
xx[1]=new int[2];
xx[2]=new int[8];
public class hello
{
public static void main(String[] args)
{
int[][]xx=new int[2][3];
xx[0][0]=2;
xx[1][2]=6;
for(int i=0;i<xx.length;i++)
{
for(int j=0;j<xx[i].length;j++)
{
System.out.println("xx["+i+"]["+j+"]="+xx[i][j]);
}
}
}
}
數組的排序:
class ArrayTest
{
public static void main(String[]args)
{
int []x=new int[]{1,5,2,7,4};
for(int i=0;i<x.length;i++)
{
System.out.println("x["+i+"]="+x[i]);
}
java.util.Arrays.sort(x);
for(int i=0;i<x.length;i++)
{
System.out.println("x["+i+"]="+x[i]);
}
}
}
數組的拷貝:
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
class ArrayTest
{
public static void main(String[]args)
{
int []x=new int[]{1,5,2,7,4};
for(int i=0;i<x.length;i++)
{
System.out.println("x["+i+"]="+x[i]);
}
int[]y=new int[10];
System.arraycopy(x,0,y,1,4);
for(int i=0;i<y.length;i++)
{
System.out.println("y["+i+"]="+y[i]);
}
}
}
posted on 2007-05-16 20:16 大頭劍客 閱讀(451) 評論(0) 編輯 收藏 所屬分類: 學習筆記