主頁 > 後端開發 > JAVA-02(語法介紹)

JAVA-02(語法介紹)

2023-05-23 11:22:07 後端開發

JAVA-02

Java流程控制

用戶互動Scanner

Scanner類

屬于IO流的類如果不關會一直占用資源

常用方法

? 【Scanner scanner = new Scanner(System.in);】
? .next(); 遇到空格就結束接收
? .nextLine(); 遇到enter就結束接收
? .hasNext() 判斷是否有輸入
? .hasNextInt() 判斷是否有整數輸入
? .close(); 關閉

舉例【instance】
package com.xy.base;

import java.util.Scanner;

public class Demo11 {
    public static void main(String[] args) {

        //創建一個掃描物件,用于接收鍵盤資料
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用next方式接收:");
        //判斷用戶有沒有輸入字串
        if(scanner.hasNext()){
            //使用next接收
            String str = scanner.next();
            System.out.println("輸入的內容為:"+str);
        }

        System.out.println("使用nextLine方式接收:");
        if(scanner.hasNext()){
            //使用next接收
            String str1 = scanner.nextLine();
            System.out.println("輸入的內容為:"+str1);
        }

        System.out.println("請輸入一個整數:");
        //判斷輸入的是否為整數【判斷是否有整數輸入】
        if(scanner.hasNextInt()){
            int i = scanner.nextInt();
            System.out.println("輸入的整數為:"+i);
        }else{
            System.out.println("輸入的不是整數!");
        }

        //凡是屬于IO流的類如果不關會一直占用資源
        scanner.close();

    }
}

輸入多個數字,并求其總和與平均值,每輸入一個數字用回車確認,通過輸入非數字來結束并輸出執行結果

package com.xy.base;

import java.util.Scanner;

public class Demo11_instance {

    public static void main(String[] args) {
        //輸入多個數字,并求其總和與平均值,每輸入一個數字用回車確認,通過輸入非數字來結束并輸出執行結果
        int count = 0;
        double sum = 0;

        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入資料:");
        //while判斷是否是數字輸入
        while (scanner.hasNextDouble()){
            count++;
            sum = sum + scanner.nextDouble();
        }
        System.out.println(count + "個資料總和為:" + sum);
        System.out.println(count + "個資料平均數為:" + sum/count);

        //關閉!!!!!!不要忘記
        scanner.close();

    }
}

三種結構(順序、選擇、回圈)

順序結構

  1. Java最基本的結構,最簡單的演算法結構
  2. 任何演算法都離不開的
  3. 一條一條從上到下執行
System.out.println("順序結構!");
System.out.println("順序結構!");
System.out.println("順序結構!");

選擇結構

1. if單選擇結構
if(條件式){
	//滿足運算式執行的陳述句
}
2. if...else雙選擇結構
if(條件式){
	//滿足運算式執行的陳述句
}else{
	//不滿足運算式執行的陳述句
}
3. if...else if多選擇結構
if(條件式1){
	//滿足運算式1執行的陳述句
}else if(條件式2){
	//滿足運算式2執行的陳述句
}else{
	//都不滿足執行的陳述句
}
4. 嵌套的if結構
if(條件式1){
	if(條件式1){
		//滿足運算式1和2執行的陳述句
	}
}else{
	//不滿足運算式1執行的陳述句
}
5. switch多選擇結構
  • 語法:

    switch(expression){	//expression變數
    	case value:	//【可選】判斷變數的值是否等于value值
    		//陳述句
    		break;	//【可選】  若不選,會有case穿透效果
    	case value:
    		//陳述句
    		break;
    	...
    	default:	//【可選】 以上case都不滿足時執行default
    		//陳述句
    }
    
  • case穿透效果:如果當前case滿足且結束沒有break陳述句,那么將會執行下面所有的case,直到遇見break陳述句,

  • switch中的變數型別 :byte、short、int或者char

  • Java SE7開始支持字串String型別

    String  x = "注意";
    switch (x){
    	case "注意":
    		System.out.println("注意");
        case  "協議":
            System.out.println("協議");
            break;
        default:
            System.out.println("default");
    }
    

回圈結構

1. while回圈
  • 語法

    while(布爾運算式){
    	//回圈內容
    }
    
2. do...while回圈
  • 語法

    do{
    	//回圈內容
    }while(布爾運算式);
    
  • while和do...while的區別

    • while先判斷再執行,do...while先執行在判斷
    • do...while至少執行一次,while可以一次也不執行
3. for回圈
  • 語法

    for(初始化;布爾運算式;更新){
    	//回圈內容
    }
    
  • 最有效,最靈活的回圈結構

  • 回圈次數是在執行之前就已經確定

  • fou回圈 :先初始化在判斷真偽,若為執行回圈體然后更新;若為假,則跳出回圈

    for (int i = 0; i < 5; i++) {
    	System.out.println("i:" + i);
        System.out.println("第" + i + "次回圈!");
     }
    
  • 練習:列印九九乘法表

    for(int i = 1 ; i < 10 ; i ++){
        for (int j = 1 ; j <= i ; j ++){
        	//輸出乘法并輸出一個tab空格
        	System.out.print(j + "*" +i +"=" + j*i + "\t");
        }
        //換行
        System.out.println(); //等價于 System.out.print("\n");
    }
    
  • 增強for回圈【遍歷陣列】Java5引入的

    int[] num = {10,20,30,40,50};
    for(int n:num){
    	System.out.println(n);
    }
    

break&continue

  1. break 強制退出回圈

    int i = 0;
    while(i < 100){
        i++;
        if(i == 10){
        	break;
        }
        System.out.println(i);
    }
    
  2. continue 跳出本次回圈,執行下一次【慫】

    int j = 0;
    while (j < 10){
        j++;
        if (j%2 == 0) {
        	continue;
        }
        System.out.println(j);
    }
    

練習:列印三角形

public class Demo13_instance {
    public static void main(String[] args) {
        //規定5行
        for(int i = 1 ; i <= 5 ; i ++){
            //列印空的倒直角三角形
            for(int j = 5 ; j >= i ; j --){
                System.out.print(" ");
            }
            //列印正直角三角形
            for (int j = 1 ; j <= i ; j ++){
                System.out.print("*");
            }
            //列印關于另一半直角三角形
            for(int j = 1 ; j <= i ; j ++){
                System.out.print("*");
            }
            //換行
            System.out.println();
        }
    }
}

運行輸出:

image


方法(Java只有值傳遞)

介紹

  1. 方法是解決一類問題的步驟的有序集合
  2. 方法包含于類或物件中
  3. 方法在程式中創建,在其他地方被參考
  4. 一個方法最后只做一個功能,方便擴展
修飾符 回傳值型別 方法名(引數型別 引數名){
	方法體
	return 回傳值;   //回傳回傳值;終結方法
}
- 形參【形式引數】:在寫方法時,在括號中的引數名,這里其實就是一個**占位符**
- 實參【實際引數】:在使用方法時,給方法傳的引數

方法多載

  1. 定義:在一個類中,方法名相同,引數【形參】不同,回傳值可同可不同
  2. 只是回傳值不同,不構成多載
  3. 在執行時,編譯器會根據呼叫方法的引數個數、引數型別去逐個匹配,如匹配出錯,編譯器報錯
package com.xy.base;

public class Demo21 {

    public static void main(String[] args) {
        System.out.println(max(10,20));
        System.out.println(max(10,20.1));
    }

    public static double max(double x , double y){
        if (x > y){
            return x;
        }else if (x < y){
            return y;
        }else {
            System.out.println("x=y");
            return x;
        }
    }

    public static int max(int x , int y){
        if (x > y){
            return x;
        }else if (x < y){
            return y;
        }else {
            System.out.println("x=y");
            return x;
        }
    }
}

命令列傳參

package com.xy.base;

public class Demo22 {
    public static void main(String[] args) {
        for (int i=0 ; i < args.length ; i++){
            System.out.println("arg[" + i + "]" + args[i]);
        }
    }
}

image

? ①編譯檔案

? ②運行檔案這里注意找對檔案位置

? ③傳遞引數

? ④運行結果【列印】

可變引數【jdk1.5 引入】

  1. 在方法宣告中,指定引數型別后加一個省略號(...)

  2. 一個方法只能指定一個可變引數,它必須是方法的最后一個引數

    package com.xy.base;
    
    public class Demo23 {
    
        public static void main(String[] args) {
            Demo23 demo23 = new Demo23();
            demo23.test(1,2,3,4,5);
        }
    
        public void test(int... i){
            System.out.println(i[0]);
        }
    }
    

遞回

  • 自己調自己

  • 一定要有出口【不可以一直遞回,Java是堆疊機制,容易堆疊滿】

    package com.xy.base;
    
    public class Demo24 {
        //求階乘
        public static int f(int n){
            if(n == 1){
                return 1;
            }else{
                return n*f(n-1);
            }
        }
    
        public static void main(String[] args) {
            System.out.println(f(25));
        }
    }
    

陣列

定義與使用

//定義陣列  int nums2[]; 定義陣列[c/c++風格]
int[] nums;
//分配空間
nums = new int[10];
//賦值
nums[0] = 1;

//二維陣列
int[][] array = {{1,2},{1,3},{1,4}};
//遍歷
for (int i = 0 ; i < array.length ; i ++){
    for(int j = 0 ; j < array[i].length ; j ++){
    	System.out.print(array[i][j]+"  ");
    }
    System.out.println();
}

使用

public class Demo32 {
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        //列印陣列
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
        //計算所有元素的和
        int sum = 0;
        for (int i = 0; i < array.length; i++) {
            sum = sum + array[i];
        }
        System.out.println("sum:"+sum);
        //尋找陣列中最大的數
        int max = array[0];
        for (int i = 1; i < array.length; i++) {
            if(array[i] > max){
                max = array[i];
            }
        }
        System.out.println("max:"+max);

        //forEach jdk1.5沒有下標
        for (int i : array) {
            System.out.println(i);
        }

        //反轉陣列
        int result[] = new int[array.length];
        for(int i=0,j=array.length-1 ; i<array.length ; i++,j--){
            result[j]=array[i];
        }
        //列印陣列
        System.out.println(Arrays.toString(result));

    }
}

記憶體分析

  1. 堆:存放new的物件和陣列;所有執行緒共享;不存放別的物件參考
  2. 堆疊:存放基本變數型別(包含這個基本型別的具體值);參考物件的變數(會存放這個參考在堆里面的具體地址)
  3. 方法區:所有執行緒共享;包含所有的class和static變數
舉例分析:
  • 首先宣告一個陣列 ——> 堆疊中就有了這個陣列的名字

  • 然后給陣列分配空間 ——> 堆中開辟了相應大小的空間

  • 最后賦值 ——> 堆中的陣列空間內開始有值

三種初始化狀態

靜態初始化:創建+賦值
int[] a = {1,2,3,4,5,6,7,8,9};
動態初始化
int[] b = new int[5];
b[0] = 1;
陣列默認初始化

陣列是參考型別,他的元素相當于類的實體變數,因此陣列在一分配空間時就已經被默認初始為相應型別的默認值了,

陣列的特點

  1. 陣列一經創建就長度確定
  2. 同一陣列元素型別相同
  3. 陣列中的元素可以是任何資料型別
  4. 陣列變數屬于參考型別,陣列也可以看成物件
  5. 陣列物件本身是在堆中

Arrays類(import java.util.Arrays)

學會使用官方API幫助檔案,這里介紹兩個

int[] array = {1,5,7,33,2,879};
//列印Arrays.toString()
System.out.println(Arrays.toString(array));
//排序
Arrays.sort(array);
System.out.println(Arrays.toString(array));

冒泡排序

public class Demo35_sort {
    public static void main(String[] args) {
        int[] array = {1,5,7,33,2,879};
        sort(array);
        System.out.println(Arrays.toString(array));
    }

    /**
     * 冒泡排序
     */
    public static int[] sort(int[] array){
        int temp = 0;
        for(int i = 0 ; i < array.length-1 ; i++){
            boolean flag = false; //優化
            for (int j = 0 ; j < array.length-1-i ; j++){   //因為經過i輪排序之后,后面的i個資料已經是有序的了,所以減掉i
                if(array[j+1] < array[j]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    flag = true;
                }
            }
            if(flag == false){  //優化
                break;
            }
        }
        return array;
    }

}

稀疏陣列

  1. 定義:當一個陣列中大部分元素都為0或同一資料時,可以使用稀疏陣列來保存,

  2. 處理方式:

    • 記錄陣列一共有幾行幾列,有多少個不同值
    • 把具有不同值的元素的行和列以及值記錄在一個小規模的陣列中,從而縮小程式的規模
public class Demo36 {
    public static void main(String[] args) {
        //創建一個二維陣列(原陣列) 11*11 0:沒有棋子 1:黑旗 2:白棋
        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 1;
        System.out.println("輸出原始陣列:");
        for(int[] ints : array1){
            for(int anInt : ints){
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }

        //轉換為稀疏陣列保存
        //獲取有效值
        int sum = 0;
        for(int[] ints : array1){
            for(int in : ints){
                if(in != 0){
                    sum ++ ;
                }
            }
        }
        System.out.println("有效數值個數:"+sum);
        //創建一個稀疏陣列
        int[][] array2 = new int[sum+1][3];
        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = sum;
        //遍歷陣列,將非零值存放進稀疏陣列
        int count = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[1].length; j++) {
                if(array1[i][j] != 0){
                    count ++;
                    array2[count][0]=i;   //二維陣列的第count行的第0列存放資料的橫坐標
                    array2[count][1]=j;   //二維陣列的第count行的第1列存放資料的縱坐標
                    array2[count][2]=array1[i][j];   //二維陣列的第count行的第3列存放資料的值
                }
            }
        }
        //輸出稀疏陣列
        System.out.println("稀疏陣列");
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i][0]+"\t"
                               +array2[i][1]+"\t"
                               +array2[i][2]+"\t");
        }
        
        //還原
        //創建陣列
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        //讀取資料并存盤
        for (int i = 1; i < array2.length; i++) {
            array3[array2[i][0]][array2[i][1]] = array2[i][2];  
        }
        //輸出還原得到的陣列
        System.out.println("還原得到的陣列:");
        for (int i = 0; i < array3.length; i++) {
            for (int j = 0; j < array3[i].length; j++) {
                System.out.print(array3[i][j]+"\t");
            }
            System.out.println();
        }
        
    }
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/553155.html

標籤:Java

上一篇:解決啟動jar包報錯:錯誤找不到或無法加載主類 jar

下一篇:返回列表

標籤雲
其他(159521) Python(38162) JavaScript(25443) Java(18099) C(15231) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7207) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4575) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1976) 功能(1967) Web開發(1951) HtmlCss(1940) C++(1920) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • JAVA-02(語法介紹)

    # JAVA-02 # Java流程控制 ### 用戶互動Scanner #### Scanner類 **屬于IO流的類如果不關會一直占用資源** ##### 常用方法 ? 【Scanner scanner = new Scanner(System.in);】 ? .next(); 遇到**空格** ......

    uj5u.com 2023-05-23 11:22:07 more
  • 解決啟動jar包報錯:錯誤找不到或無法加載主類 jar

    #### 錯誤: 找不到或無法加載主類 jar ##### 問題描述: 在使用springboot框架對專案打包后,手動使用命令java -jar 包名啟動jar包,報錯:錯誤: 找不到或無法加載主類 jar。 網上找了各辦法,都是加maven插件,打成可執行jar包 ``` org.springf ......

    uj5u.com 2023-05-23 11:21:56 more
  • 用chatGPT快速開發java后端功能

    接到一個緊急需求如圖 常規無非是建表,寫介面,寫測驗類,最后造資料進行自測。突發奇想,要不用GPT4試一下快速寫業務代碼? 寫句子1分鐘,建表和得到代碼1分鐘 第一步:建表,直接復制excel中內容到GPT中 第二步:要求轉為下劃線: 第三步:給出條件和想要的結果(下面第一幅圖是自己寫的,其它代碼圖 ......

    uj5u.com 2023-05-23 11:16:31 more
  • 【重學C++】04 | 說透C++右值參考、移動語意、完美轉發(上)

    ## 文章首發 [【重學C++】04 | 說透C++右值參考、移動語意、完美轉發(上)](https://mp.weixin.qq.com/s/35Jbt-vroWhxTk0SSyhgSQ) ## 引言 大家好,我是只講技術干貨的會玩code,今天是【重學C++】的第四講,在前面《[03 | 手擼C ......

    uj5u.com 2023-05-23 11:05:29 more
  • 關于執行緒的快取重繪

    今天又是摸魚的一天,在群里閑聊的時候突然有位群友題了個問題: ![](https://img2023.cnblogs.com/blog/2696704/202305/2696704-20230522233309409-1620806525.png) 群友們反應很快,一下子就解決了沒有加關鍵字vola ......

    uj5u.com 2023-05-23 08:32:03 more
  • Java中的三元運算,以后用得到!

    # 前言 Java 中的三元運算,平時也叫做三目運算,大家了解嗎?下面就詳細介紹一下,以后在專案編程中用得到。 # 一、Java運算子 在最底層,Java 中的資料是通過使用運算子來操作的。運算子是一種特殊的符號,用來表示資料的運算、賦值和比較等等。每一種編程語言都有運算子,在 Java 中運算子可 ......

    uj5u.com 2023-05-23 08:31:57 more
  • Java設計模式-組合模式

    # 簡介 在軟體設計中,設計模式是一種被廣泛接受和應用的經驗總結,旨在解決常見問題并提供可復用的解決方案。 組合模式是一種結構型設計模式,它允許將物件組合成樹形結構以表示“部分-整體”的層次結構。這種模式能夠使客戶端以一致的方式處理單個物件和物件集合,將物件的組合與物件的使用具有一致性。 與其他設計 ......

    uj5u.com 2023-05-23 08:31:53 more
  • Stream流體系

    視頻地址 # 1 Stream流概述 - 目的:簡化集合和陣列操作的API,結合了Lambda運算式。 - Stream流式思想的核心: 1. 先得到集合或者陣列的Stream流(就是一根傳送帶) 2. 把元素放上去 3. 用這個Stream流簡化的API來方便的操作元素 # 2 Stream流獲取 ......

    uj5u.com 2023-05-23 08:31:40 more
  • python呼叫父類方法的三種方式(super呼叫和父類名呼叫)

    ### 子類呼叫父類的方法的三種方式: - 父類名.方法名(self) - super(子類名,self).父類方法名() - super().父類方法名 注意:super()通過子類呼叫當前父類的方法,super默認會呼叫第一個父類的方法(適用于單繼承的多層繼承 如下代碼: ```python # ......

    uj5u.com 2023-05-23 08:31:31 more
  • 用Python將女朋友的照片做成壁紙軟體,實作桌面壁紙自動更換!

    話說兄弟們,女朋友生氣了都是怎么哄的? 不會吧不會吧,不會有人還是單身狗吧! 算了,還是回到正題吧,再說我要挨打了~ 今天咱們來交流一下程式員是怎么哄女朋友的,話不多說直接開始! 準備作業 1、環境 首先我們準備好環境和編輯器,我使用的是: Python 3.8 解釋器 Pycharm 編輯器 2、 ......

    uj5u.com 2023-05-23 08:26:16 more