1. 程式人生 > >Java基本程式結構設計

Java基本程式結構設計

Java基本程式結構設計包括資料型別,運算子和程式流程控制。

1. 註釋,關鍵字,識別符號

  1. 註釋
    作用:提高程式的可讀性(編譯器不會編譯)
    常見型別:(1)單行註釋:用 “ // "作為註釋標誌。用於註釋單行程式碼
    (2)多行註釋:用 “ /* ”開頭和用 “/”結尾。用於註釋多行程式碼
    (3)文件註釋:用 “ /
    ”來頭和用 “/ ”,用於註釋文件
  2. 關鍵字
    Java語言內部定義的識別符號,供內部使用,比如說:calss,static,this,等等。
  3. 識別符號
    作用:用來命名變數,方法,類名等等。
    要求:(1)通常以字母,下劃線__,美元符號¥開頭。不能包含 @、%、空格等其它特殊字元,不能以數字開頭。譬如:123name 就是不合法滴;
    (2)識別符號的其他部分可以用數字,字母,下劃線,美元符號等
    標誌變數和方法的標識符采用駝峰法則:第一個字母小寫,第二個字母大寫,如eatFood();
    (3)大小寫敏感。長度無限制。關鍵字不可作為識別符號。

2 變數和常量

  1. 變數
    定義:代表可操作的儲存空間,空間位置確定,值不確定。可以用停車位類比。
    命名法則:由字母、數字、下劃線(_)、美元符($)組成,但是不包括@、%、空格等,但是開頭不能為數字。
    組成要素:變數名,變數型別,作用域。如 int a =4;
    型別:區域性變數,成員變數,靜態變數
    在一個類中,如果一個變數能夠用來描述一個類的屬性,那就定義為成員變數,否則,它就應該定義為區域性變數。而如果一個變數在全域性中都能使用(某個內容是被所有物件所共享),那麼我們就可以把這個變數用static來修飾,即為靜態變數。
    在這裡插入圖片描述

  2. 常量
    它的值被設定後,在程式執行過程中不允許改變,一般利用final修飾。
    語法:final 常量名 = 值
    常量名一般使用大寫字元,
    如:final int SCORE =100;

3. 資料型別

  1. 資料型別結構圖


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);	
	} 
}