Java基本程式結構設計
Java基本程式結構設計包括資料型別,運算子和程式流程控制。
1. 註釋,關鍵字,識別符號
- 註釋
作用:提高程式的可讀性(編譯器不會編譯)
常見型別:(1)單行註釋:用 “ // "作為註釋標誌。用於註釋單行程式碼
(2)多行註釋:用 “ /* ”開頭和用 “/”結尾。用於註釋多行程式碼
(3)文件註釋:用 “ / ”來頭和用 “/ ”,用於註釋文件 - 關鍵字
Java語言內部定義的識別符號,供內部使用,比如說:calss,static,this,等等。 - 識別符號
作用:用來命名變數,方法,類名等等。
要求:(1)通常以字母,下劃線__,美元符號¥開頭。不能包含 @、%、空格等其它特殊字元,不能以數字開頭。譬如:123name 就是不合法滴;
(2)識別符號的其他部分可以用數字,字母,下劃線,美元符號等
標誌變數和方法的標識符采用駝峰法則:第一個字母小寫,第二個字母大寫,如eatFood();
(3)大小寫敏感。長度無限制。關鍵字不可作為識別符號。
2 變數和常量
-
變數
定義:代表可操作的儲存空間,空間位置確定,值不確定。可以用停車位類比。
命名法則:由字母、數字、下劃線(_)、美元符($)組成,但是不包括@、%、空格等,但是開頭不能為數字。
組成要素:變數名,變數型別,作用域。如 int a =4;
型別:區域性變數,成員變數,靜態變數
在一個類中,如果一個變數能夠用來描述一個類的屬性,那就定義為成員變數,否則,它就應該定義為區域性變數。而如果一個變數在全域性中都能使用(某個內容是被所有物件所共享),那麼我們就可以把這個變數用static來修飾,即為靜態變數。
-
常量
它的值被設定後,在程式執行過程中不允許改變,一般利用final修飾。
語法:final 常量名 = 值
常量名一般使用大寫字元,
如:final int SCORE =100;
3. 資料型別
- 資料型別結構圖
2. 基本資料表示範圍
<1>4種整型,int型(4位元組),short型(2位元組),long(8位元組),byte(1位元組)。
如:int a=4;short b=1;byte c=2;
<2>浮點型,float型(4位元組),double型(8位元組)。
如:float d=0.1f;(float的定義後面必須加f),double d2 = 10.9d(double的定義後面必須加d)
<3>char型,” A”含有A的字串,‘A’ 字元常量A.
如: char c1 = ‘a’;
<4>布林型,Boolean,faluse,0. true,1.
如:Boolean start=true;
(一個位元組有8個bit,)
定義方式:
- 型別轉換
兩種轉換方式:自動轉換或強制轉換 - 自動型別轉換 : 位元組數小的可以轉換為位元組數大的,即隱式轉換
目標型別能與源型別相容,如 double 型相容 int 型;
目標型別大於源型別,如 double 型別長度為 8 位元組, int 型別為 4 位元組,因此 double 型別的變數裡直接可以存放 int 型別的資料 。 - 強制型別轉換
容易使得資料精度丟失
強制型別轉換的語法是 (資料型別)數值
double avg1=75.8;
int avg2=(int)avg1;
4. 運算子
Java運算子主要包括算術,邏輯,賦值,擴充套件,關係,邏輯,條件,字串,位運算子等,這些運算子的作用用於表示不同數值型別之間的相互作用,比如說算術運算子的加減乘除求餘等,關係運算符的大於小於,邏輯運算子的與或非等。
- 算術運算子
-
整數運算中,如果兩個運算元有一個為long,則結果為long;若沒有long型數值,結果為int,即使運算元的型別為short或byte。(與其位元組數有關)
-
浮點運算,兩個運算元有一個為double時,則結果為double;只有當兩個運算元全為float時,則結果為float。(與其位元組數有關)
-
求餘運算,餘數的正負與左運算元相同。例:7%3=1;-7%3=-1
-
自增自減運算,B++和B–先賦值後加減,++B和–B先加減後賦。
-
賦值運算子
-
關係運算符
-
輸出的結果為布林型
-
邏輯運算子
- 條件運算子
例如:x?y:z, x為布林型別值,若x為真,則返回為y值,若x為假則返回為z。
1>3?2:1結果為:1, 5>4?2:1結果為2. - 字串運算子
字串運算子: + 可以連線不同的字串 - 位運算子
5. 流程控制語句
用來控制流程中語句執行的順序,一般包括順序結構,選擇結構和迴圈結構,,類似於建築中的混凝土,
1. 順序結構
先執行a,在執行b
2. 選擇結構
用於在給定的條件,根據判斷的結果來控制程式的流程。
- 單選擇結構
if 型
if(條件表示式){
執行語句;
}
if–else型
if(關係表示式) {
語句體1;
}else {
語句體2;
}
if…else if…else語句
if(條件表示式){
執行語句;
}else if(條件表示式){ 選擇第一個滿足條件的分支語句為分支入口;
執行語句;
}else{
執行語句;
}
- 多選擇結構
switch,用於多值得判斷
switch(表示式)
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
…
default:
語句體n+1;
break;
}
3. 迴圈結構
在學習迴圈語句時,最重要的就是發現流程的規律,然後再用程式設計語言將該規律描述出來,從來實現程式要求的流程。
- for迴圈
for關鍵字的意思是“當…的時候”,是實際開發中比較常用的迴圈語句,
for(初始化語句;迴圈條件;迭代語句){
語句塊;
}
for(int i = 0;i < 10;i++){
System.out.println(i);
}
/*
則該語句的執行流程為:
1、 執行int i = 0;
2、 判斷i<10,如果條件不成立則結束,否則繼續執行下一步
3、 執行System.out.println(i);
4、 執行i++
5、 跳轉到步驟2繼續執行
*/
- while do型
while關鍵字的中文意思是“當……的時候”,也就是當條件成立時迴圈執行對應的程式碼。
執行流程:在執行while語句時,首先判斷迴圈條件,如果迴圈條件為false,則直接執行while語句後續的程式碼,如果迴圈條件為true,則執行迴圈體程式碼,然後再判斷迴圈條件,一直到迴圈條件不成立為止。
while(判斷條件) { 執行語句 }
int i = 0;
while(i < 10){
System.out.println(i); //輸出變數的值
i++; //變數的值增加1
}
/*
其執行流程為:
1、 執行int I = 0;
2、 判斷i<10是否成立,如果不成立則結束,否則執行下一步
3、 輸出變數i的值
4、 i的值增加1
5、 跳轉到步驟2繼續執行
*/
- do while型
do {
語句塊;
}while(條件表示式);
注:
-
流程控制語句中,break強行跳出迴圈,不執行迴圈中的剩餘語句,continue用於終止本次迴圈,即系執行下一次迴圈。
如果將Java語言程式設計比作蓋房子的話,那麼這部分的內容就好比會水泥和混凝土,所涉及到的是Java程式設計中常用到的知識點,換句話來說,就是Java程式設計世界裡的常識,比如說如何定義一個常量,怎麼樣定義一個識別符號,都涉及哪些資料型別,資料之間怎麼運算當設計分支的時候如何控制流程,等等等等。蓋房子需要將混凝土水泥作為最基本的材料,如果連材料都沒有,再偉大的建築師也沒辦法蓋一座大樓,同樣的道理,Java語言程式會應用到上面的基礎知識,包括資料型別,運算子和流程控制結構三大部分,資料型別說明在Java程式中常用的資料有哪些,怎麼樣定義,運算子用於說明這些資料的基本操作是什麼?怎麼樣來操作這些資料,流程控制語句用來說明當一些基本的資料和操作方式之後,每個語句之間的邏輯結構是怎麼樣子的,從前向後的順序結構,還是有選擇條件的選擇結構,亦或是主要在某一個條件下執行的迴圈結構。
**
常見程式例項
**
輸出乘法表:
/*
* "實戰——九九乘法口訣表"*/
public class Program {
public static void main(String [] args) {
System.out.println("九九乘法口訣表:");
for (int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
// 注意print與println的區別
System.out.print("\n");
// System.out.println();
}
}
}
輸出星座
import java.util.Scanner;
public class Program {
public static void main(String [] args) {
System.out.println("請輸入您的出生日期 :");
Scanner sc=new Scanner(System.in);
int monthday=sc.nextInt();
int month=monthday/100;
int day=monthday%100;
String xingzuo=""; //儲存字串
switch (month) {
case 1:
xingzuo=day<21?"摩羯座":"水瓶座";
break;
case 2:
xingzuo=day<20?"水瓶座":"雙魚座";
break;
case 3:
xingzuo=day<21?"雙魚座":"白羊座";
break;
case 4:
xingzuo=day<21?"白羊座":"金牛座";
break;
case 5:
xingzuo=day<22?"金牛座":"雙子座";
break;
case 6:
xingzuo=day<22?"雙子座":"巨蟹座";
break;
case 7:
xingzuo=day<23?"獅子座":"獅子座";
break;
case 8:
xingzuo=day<24?"摩羯座":"處女座";
break;
case 9:
xingzuo=day<24?"處女座":"天秤座";
break;
case 10:
xingzuo=day<24?"天秤座":"天蠍座";
break;
case 11:
xingzuo=day<23?"天蠍座":"射手座";
break;
case 12:
xingzuo=day<22?"射手座":"摩羯座";
break;
default:
break;
}
System.out.println("您的星座是"+xingzuo);
}
}
實現階乘
/**
* 求1+2!+3!+...+10!的和
* @author Vivinia
*
*/
public class factorial {
public static void main(String args[]) {
long sum=0,num=1; //sum用於加和,num作為每一個數階乘後的結果
for(int i=1;i<=10;i++) {
num*=i; //num始終保留上一次階乘的結果,所以只需要乘i
sum+=num; //每次階乘後相加
}
System.out.println("1+2!+3!+...+20!="+sum);
}
}
/**
* 1~10階乘求和
*/
public class Factorial {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += m1(i);
//sum += m2(i);
}
System.out.println(sum);
}
//求階乘 方法一
private static int m1(int n) {
if (n == 1) return 1;
return n *= m1(n - 1);
}
//求階乘 方法二
public static int m2(int n) {
if (n == 1) {
return 1;
}
int i = 1;
int res = 1;
while (i <= n) {
res *= i;
i++;
}
return res;
}
}
1+2+3+4+…+100
public class Tset {
public static void main(String[] args) {
int sum = 0;
for(int i = 1;i <= 100; i++){
sum += i;
}
System.out.println("1+2+3+4+5+......+99+100的和為:"+sum);
}
}