徐思201771010132 《面向對象程序設計(java)》課程學習總結

1、實驗目的與要求java

(1) 綜合掌握java基本程序結構;程序員

(2) 綜合掌握java面向對象程序設計特色;編程

(3) 綜合掌握java GUI 程序設計結構;安全

(4) 綜合掌握java多線程編程模型;多線程

(5) 綜合編程練習。dom

2、實驗內容和步驟分佈式

任務1:填寫課程課後調查問卷,網址:https://www.wjx.cn/jq/33108969.aspx。ide

任務2:綜合編程練習性能

練習1:設計一個用戶信息採集程序,要求以下:學習

(1)  用戶信息輸入界面以下圖所示:

 

(1)用戶點擊提交按鈕時,用戶輸入信息顯示控制檯界面;

(2)用戶點擊重置按鈕後,清空用戶已輸入信息;

(3)點擊窗口關閉,程序退出。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;

public class DemoJFrame {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            JFrame frame = new FrameTest();
            frame.setTitle("Students Detail");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        });
    }
}

class FrameTest extends JFrame {

    private JPanel panel;
    private JTextField fieldname;
    private JTextField fieldadress;
    private JRadioButton male, female;
    private ButtonGroup bg;
    private JLabel jPanel;
    private JCheckBox reading, singsing, dancing;
    private JComboBox<String> JComboBox;
    private JButton validate, reset;

    public FrameTest() {
        setSize(700, 500);
        panel = new JPanel();
        panel.setLayout(null);

        bg = new ButtonGroup();
        male = new JRadioButton("Male", false);
        male.setBounds(150, 330, 80, 50);
        female = new JRadioButton("Female", false);
        female.setBounds(150, 300, 80, 50);
        bg.add(male);
        bg.add(female);

        addJLabel("sex:", 100, 300);
        addJLabel("name:", 100, 50);
        addJLabel("address:", 100, 150);
        addJLabel("Qualification:", 400, 50);
        addJLabel("Hobby:", 400, 150);

        fieldname = new JTextField();
        fieldname.setBounds(150, 70, 120, 30);
        fieldname.setVisible(true);
        fieldadress = new JTextField();
        fieldadress.setBounds(150, 160, 130, 100);
        fieldadress.setVisible(true);

        reading = new JCheckBox("Reading");
        reading.setBounds(450, 160, 100, 30);
        singsing = new JCheckBox("dancing");
        singsing.setBounds(450, 180, 100, 30);
        dancing = new JCheckBox("singing");
        dancing.setBounds(450, 200, 100, 30);

        JComboBox = new JComboBox<>();
        JComboBox.addItem("初中");
        JComboBox.addItem("高中");
        JComboBox.addItem("大學");
        JComboBox.setBounds(500, 65, 100, 20);

        validate = new JButton("提交");
        validate.setBounds(200, 400, 100, 35);
        reset = new JButton("重置");
        reset.setBounds(400, 400, 100, 35);

        validate.addActionListener(new Action1());
        reset.addActionListener(new Action2());

        panel.add(reading);
        panel.add(singsing);
        panel.add(dancing);
        panel.add(validate);
        panel.add(reset);
        panel.add(JComboBox);
        panel.add(fieldname);
        panel.add(fieldadress);
        panel.add(male);
        panel.add(female);
        add(panel);

    }

    public void addJLabel(String n, int a, int b) {
        jPanel = new JLabel(n);
        jPanel.setBounds(a, b, 100, 50);
        panel.add(jPanel);
    }

    private class Action1 implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            System.out.println("name:" + fieldname.getText() + "\n" + "address:" + fieldadress.getText());
            System.out.println("Qualification:" + JComboBox.getSelectedItem());
            System.out.println("Hobby:");
            if (reading.isSelected() == true)
                System.out.print(reading.getText());
            if (singsing.isSelected() == true)
                System.out.print(singsing.getText());
            if (dancing.isSelected() == true)
                System.out.print(dancing.getText());
            System.out.println("\n" + "sex:");
            if (male.isSelected() == true)
                System.out.println(male.getText());
            if (female.isSelected() == true)
                System.out.println(female.getText());
        }
    }

    private class Action2 implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            fieldname.setText(null);
            fieldadress.setText(null);
            reading.setSelected(false);
            singsing.setSelected(false);
            dancing.setSelected(false);
            bg.clearSelection();
            JComboBox.setSelectedIndex(0);
        }
    }
}
DemoJFrame

練習2:採用GUI界面設計如下程序:

l  編制一個程序,將身份證號.txt 中的信息讀入到內存中;

l  按姓名字典序輸出人員信息;

l  查詢最大年齡的人員信息;

l  查詢最小年齡人員信息;

l  輸入你的年齡,查詢身份證號.txt中年齡與你最近人的姓名、身份證號、年齡、性別和出生地;

l  查詢人員中是否有你的同鄉。

l  輸入身份證信息,查詢所提供身份證號的人員信息,要求輸入一個身份證數字時,查詢界面就顯示知足查詢條件的查詢結果,且隨着輸入的數字的增多,查詢匹配的範圍逐漸縮小。

package ID;

import java.awt.*;
import javax.swing.*;

/**
 * @version 1.34 2015-06-12
 * @author Cay Horstmann
 */
public class button {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            JFrame frame = new Main();
            frame.setTitle("身份證");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        });
    }
}
button
package ID;

public class Person implements Comparable<Person> {
    private String name;
    private String ID;
    private int age;
    private String sex;
    private String birthplace;

    public String getname() {
        return name;
    }

    public void setname(String name) {
        this.name = name;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public int getage() {

        return age;
    }

    public void setage(int age) {

        this.age = age;
    }

    public String getsex() {
        return sex;
    }

    public void setsex(String sex) {
        this.sex = sex;
    }

    public String getbirthplace() {
        return birthplace;
    }

    public void setbirthplace(String birthplace) {
        this.birthplace = birthplace;
    }

    public int compareTo(Person o) {
        return this.name.compareTo(o.getname());
    }

    public String toString() {
        return name + "\t" + sex + "\t" + age + "\t" + ID + "\t" + birthplace + "\n";
    }
}
Person
package ID;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Main extends JFrame {
    private static ArrayList<Person> personlist;
    private static ArrayList<Person> list;
    private JPanel panel;
    private JPanel buttonPanel;
    private static final int DEFAULT_WIDTH = 600;
    private static final int DEFAULT_HEIGHT = 300;

    public Main() {

        personlist = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
        File file = new File("身份證號.txt");
        try {
            FileInputStream fis = new FileInputStream(file);
            BufferedReader in = new BufferedReader(new InputStreamReader(fis));
            String temp = null;
            while ((temp = in.readLine()) != null) {

                Scanner linescanner = new Scanner(temp);

                linescanner.useDelimiter(" ");
                String name = linescanner.next();
                String ID = linescanner.next();
                String sex = linescanner.next();
                String age = linescanner.next();
                String place = linescanner.nextLine();
                Person Person = new Person();
                Person.setname(name);
                Person.setID(ID);
                Person.setsex(sex);
                int a = Integer.parseInt(age);
                Person.setage(a);
                Person.setbirthplace(place);
                personlist.add(Person);

            }
        } catch (FileNotFoundException e) {
            System.out.println("查找不到信息");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("信息讀取有誤");
            e.printStackTrace();
        }
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
        JTextArea jt = new JTextArea();
        panel.add(jt);
        add(panel, BorderLayout.CENTER);
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(1, 7));
        JButton jButton = new JButton("字典排序");
        JButton jButton1 = new JButton("年齡最大和年齡最小");
        JLabel lab = new JLabel("你的老鄉");
        JTextField jt1 = new JTextField();
        JLabel lab1 = new JLabel("查找年齡相近的:");
        JTextField jt2 = new JTextField();
        JLabel lab2 = new JLabel("輸入你的身份證號碼:");

        JTextField jt3 = new JTextField();
        JButton jButton2 = new JButton("退出");
        jButton.setBounds(110, 90, 40, 50);
        jButton1.setBounds(110, 90, 40, 50);
        jt1.setBounds(110, 90, 40, 50);
        jt2.setBounds(110, 90, 40, 50);
        jt3.setBounds(110, 90, 40, 50);
        jButton2.setBounds(110, 90, 40, 50);
        jButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Collections.sort(personlist);
                jt.setText(personlist.toString());
            }
        });
        jButton1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int max = 0, min = 100;
                int j, k1 = 0, k2 = 0;
                for (int i = 1; i < personlist.size(); i++) {
                    j = personlist.get(i).getage();
                    if (j > max) {
                        max = j;
                        k1 = i;
                    }
                    if (j < min) {
                        min = j;
                        k2 = i;
                    }

                }
                jt.setText("年齡最大:" + personlist.get(k1) + "年齡最小:" + personlist.get(k2));
            }
        });
        jButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                dispose();
                System.exit(0);
            }
        });
        jt1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String find = jt1.getText();
                String text = "";
                String place = find.substring(0, 3);
                for (int i = 0; i < personlist.size(); i++) {
                    if (personlist.get(i).getbirthplace().substring(1, 4).equals(place)) {
                        text += "\n" + personlist.get(i);
                        jt.setText("老鄉:" + text);
                    }
                }
            }
        });
        jt2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String yourage = jt2.getText();
                int a = Integer.parseInt(yourage);
                int near = agenear(a);
                int value = a - personlist.get(near).getage();
                jt.setText("年齡相近:" + personlist.get(near));
            }
        });
        jt3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                list = new ArrayList<>();
                Collections.sort(personlist);
                String key = jt3.getText();
                for (int i = 1; i < personlist.size(); i++) {
                    if (personlist.get(i).getID().contains(key)) {
                        list.add(personlist.get(i));
                        jt.setText("你多是:\n" + list);
                    }
                }
            }
        });
        buttonPanel.add(jButton);
        buttonPanel.add(jButton1);
        buttonPanel.add(lab);
        buttonPanel.add(jt1);
        buttonPanel.add(lab1);
        buttonPanel.add(jt2);
        buttonPanel.add(lab2);
        buttonPanel.add(jt3);
        buttonPanel.add(jButton2);
        add(buttonPanel, BorderLayout.SOUTH);
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    }

    public static int agenear(int age) {
        int min = 53, value = 0, k = 0;
        for (int i = 0; i < personlist.size(); i++) {
            value = personlist.get(i).getage() - age;
            if (value < 0)
                value = -value;
            if (value < min) {
                min = value;
                k = i;
            }
        }
        return k;
    }

}
Main

練習3:採用GUI界面設計如下程序

l  編寫一個計算器類,能夠完成加、減、乘、除的操做

l  利用計算機類,設計一個小學生100之內數的四則運算練習程序,由計算機隨機產生10道加減乘除練習題,學生輸入答案,由程序檢查答案是否正確,每道題正確計10分,錯誤不計分,10道題測試結束後給出測試總分;

l  將程序中測試練習題及學生答題結果輸出到文件,文件名爲test.txt。

package math;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;

import javax.swing.JFrame;

public class math {

    public static void main(String args[]) {
        Toolkit t = Toolkit.getDefaultToolkit();
        Dimension s = t.getScreenSize();
        EventQueue.invokeLater(() -> {
            JFrame frame = new main();
            frame.setBounds(0, 0, (int) s.getWidth() / 2, (int) s.getHeight() / 2);
            frame.setTitle("算術測試");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        });
    }

}
math
package math;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.Scanner;

import javax.swing.*;

import java.math.*;

public class main extends JFrame {

    private String[] c = new String[10];
    private String[] c1 = new String[10];
    private int[] list = new int[10];
    int i = 0, i1 = 0, sum = 0;

    private PrintWriter out = null;
    private JTextArea text, text1;
    private int counter;

    public main() {
        JPanel Panel = new JPanel();
        Panel.setLayout(null);
        JLabel JLabel1 = new JLabel("");
        JLabel1.setBounds(500, 800, 400, 30);
        JLabel1.setFont(new Font("Courier", Font.PLAIN, 20));
        JButton Button = new JButton("生成題目");
        Button.setBounds(50, 150, 150, 50);
        Button.setFont(new Font("Courier", Font.PLAIN, 20));
        Button.addActionListener(new Action());
        JButton Button2 = new JButton("肯定答案");
        Button2.setBounds(300, 150, 150, 50);
        Button2.setFont(new Font("Courier", Font.PLAIN, 20));
        Button2.addActionListener(new Action1());
        JButton Button3 = new JButton("讀出文件");
        Button3.setBounds(500, 150, 150, 50);
        Button3.setFont(new Font("Courier", Font.PLAIN, 20));
        Button3.addActionListener(new Action2());
        text = new JTextArea(30, 80);
        text.setBounds(30, 50, 200, 50);
        text.setFont(new Font("Courier", Font.PLAIN, 30));
        text1 = new JTextArea(30, 80);
        text1.setBounds(270, 50, 200, 50);
        text1.setFont(new Font("Courier", Font.PLAIN, 30));

        Panel.add(text);
        Panel.add(text1);

        Panel.add(Button);
        Panel.add(Button2);
        Panel.add(Button3);
        Panel.add(JLabel1);
        add(Panel);

    }

    private class Action implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            text1.setText("");
            if (i <= 10) {

                int a = (int) Math.round(Math.random() * 100);
                int b = (int) Math.round(Math.random() * 100);
                int m = (int) Math.round(Math.random() * 3);
                switch (m) {
                case 0:
                    while (a % b != 0) {
                        a = (int) Math.round(Math.random() * 100);
                    }
                    while (b == 0) {
                        b = (int) Math.round(Math.random() * 100);
                    }
                    c[i] = (i + ":" + a + "/" + b + "=");
                    list[i] = Math.floorDiv(a, b);
                    text.setText(i + ":" + a + "/" + b + "=");
                    i++;

                    break;
                case 1:
                    c[i] = (i + ":" + a + "*" + b + "=");
                    list[i] = Math.multiplyExact(a, b);
                    text.setText(i + ":" + a + "*" + b + "=");
                    i++;
                    break;
                case 2:
                    c[i] = (i + ":" + a + "+" + b + "=");
                    list[i] = Math.addExact(a, b);
                    text.setText(i + ":" + a + "+" + b + "=");
                    i++;
                    break;
                case 3:
                    while (a < b) {
                        b = (int) Math.round(Math.random() * 100);
                        a = (int) Math.round(Math.random() * 100);
                    }
                    c[i] = (i + ":" + a + "-" + b + "=");
                    text.setText(i + ":" + a + "-" + b + "=");
                    list[i] = Math.subtractExact(a, b);
                    i++;

                    break;
                }
            }
        }
    }

    private class Action1 implements ActionListener {
        public void actionPerformed(ActionEvent event) {

            if (i < 10) {
                text.setText(null);
                String z = text1.getText().toString().trim();
                int a = Integer.parseInt(z);
                if (text1.getText() != "") {
                    if (list[i1] == a)
                        sum += 10;
                }

                c1[i1] = z;

                i1++;

            }
        }

    }

    private class Action2 implements ActionListener {
        public void actionPerformed(ActionEvent event) {

            try {
                out = new PrintWriter("text.txt");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            for (int counter = 0; counter < 10; counter++) {
                out.println(c[counter] + c1[counter]);
            }
            out.println("成績" + sum);
            out.close();

        }

    }
}
main

任務3:本學期課程已結束,請彙總《面向對象程序設計課程學習進度條》的數據,統計我的專業能力提高的數據。並從學習內容、學習方法、學習心得幾個方面進行課程學習總結,也但願你對課程的不足提出建議和意見

總結:JAVA特色:簡單的、面向對象的、分佈式的、強壯的、安全的、體系結構中立的、可移植的、解釋型的、高性能的、多線程的、動態的語言。

源文件的命名規則:若是源文件中有多個類,那麼只能有一個類是 public類。若是有一個類是public類,那麼源文件的名字必須與這個類的名字徹底相同,擴展名是.java。若是源文件沒有public類,那麼源文件的名字只要和某個類的名字相同,而且擴展名是.java就能夠了。

Java流程控制語句:控制語句: if語句, switch語句.循環語句 :while , do…while ,for break和continue語句 :break——跳出switch結構;終止並跳出循環體。continue——結束本次循環。

類體內容由兩部分構成:類成員變量:用來刻畫類屬性;類成員方法:用來刻畫類內操做。

局部變量:在方法體中定義的變量和方法的參數被稱爲局部變量。類成員變量和局部變量的區別:類成員變量在整個類內都有效,局部變量只在定義它的方法內有效。若是局部變量的名字與成員變量的名字相同,則成員變量被隱藏。

類成員方法:方法的定義包括兩部分:方法聲明和方法體。構造方法:名字必須與類名徹底相同,沒有返回值類型;構造方法能夠重載;每一個類至少有一個構造方法,若程序員沒有定義構造方法,系統會自動產生一個默認構造方法,這個默認構造方 法無參數,方法體爲空;程序員爲類定義了構造方法,系統就再也不提供默認構造方法;用途:初始化類對象。

方法重載:一個類中能夠有多個具備相同的名字的方法。但這些方法或者是參數的個數不一樣,或者是參數的類型不一樣。

建立對象需兩個步驟:對象聲明和爲對象分配內存。

Static關鍵字:用static修飾的成員變量稱爲類(靜態)變量,用static修飾的方法稱爲類(靜態)方法。實例變量和類變量的區別:若是類的成員變量有類變量,那麼該類全部對象的類變量內存是相同的。具備訪問權限的類變量能夠經過某個對象訪問,也能夠經過類名訪問。具備訪問權限的實例變量僅能夠經過對象訪問,不能使用類名訪問。實例方法和類方法的區別:實例方法能夠被類建立的任何對象調用執行。類方法不只能夠被類建立的任何對象調用執行,也能夠直接經過類名調用

this關鍵字:this表示類的當前對象。this能夠出如今實例方法和構造方法中,但不能夠出如今類方法中。this關鍵字出如今構造方法中時,表明使用該構造方法所建立的對象。this出如今類的實例方法中時,表明正在調用該方法 的當前對象。

實現類繼承的方式:在類的聲明中,經過使用關鍵字extends來建立一個類的子類。Java只支持單繼承,不容許多繼承 。Java容許有多層繼承。

方法重寫是指:子類中定義一個方法,這個方法的名字、返回類型、參數個數和類型與從父類繼承的方法徹底相同。子類重寫父類,被重寫的方法不能比父類擁有更嚴格的訪問權限

super關鍵字:子類中訪問父類中被隱藏的成員變量,super.成員變量,子類調用父類中的方法。調用父類中的特定構造方法 super() ,調用父類中被重寫的方法 super.方法()

多態性有兩種表現形式:①方法的多態性(方法重載)②對象的多態性。對象多態性是在繼承應用上的一種擴展

final關鍵字:final關鍵子可修飾類、方法成員、成員變量和方法中的參數。final類不能被繼承,即不能有子類。方法被修飾爲final方法,則這個方法不能被重寫。一個成員變量被修飾爲final的,就是常量,常量必須 賦給初值,並且不能再發生變化。方法的參數被修飾爲final的,該參數的值不能被改變。

抽象類:用關鍵字abstract修飾的類稱爲abstract類(抽象類)。 abstract類不能被實例化; abstract類能夠有abstract方法;對於abstract方法,只容許聲明,不容許實現,且要用 abstract關鍵字進行修飾;抽象類的子類必須重寫全部的抽象方法。

接口的聲明與使用:關鍵字interface來定義一個接口。接口的定義與類的定義類似,包括接口的聲明和接口體。接口體中包含常量定義和抽象方法定義兩部分。接口使用規則:一個類能夠實現多個接口;若是一個類使用了某個接口,那麼這個類必須實現該接口的全部方法,即爲這些方法提供方法體。

方法的權限訪問修飾符: public,protected ,default(不加訪問說明符時), private。方法的其它修飾符 static ,final ,abstract ,synchronized。

類和類之間關係:is a: 繼承,實現關係。has a: 組合,聚合,關聯關係。use a: 依賴關係

拋出異常:throws語句是在方法的聲明中使用來拋出異常,用來指定方法可能拋出異常,但不想在當前方法中處理這個異常。throw語句是在方法體內使用拋出異常類的對象,程序在執行到throw語句時當即終止,它後面的語句都不執行。要捕捉throw拋出的異常,則必須使用try-catch語句。

Java中的每一個事件類都有一個相應的監視器接口,接口中聲明瞭一個或多個抽象的事件處理 方法。若是一個類實現事件監視器接口,其對象就能夠做爲對應事件的監視器,具有監視和處理事件的能力。

多線程機制是Java語言的重要特徵之一,使用多線程技術可使系統同時運行多個執行體,加快程序的響應時間,提升計算機資源的利用率。使用多線程技術能夠提升整個應用系統的性能。

程序、進程與線程的區別:程序是一段靜態的代碼,它是應用軟件執行的藍本。進程是程序的一次動態執行過程,它對應了從代碼加載、執行至執行完畢的一個完整過程,這個過程也是進程自己從產生、發展至消亡的過程。線程是比進程更小的執行單位,一個進程在其執行過程當中,能夠產生多個線程,造成多條執行線索,每條線索,即每一個線程也有它自身的產生、存在和消亡的過 程,也是一個動態的概念。

多線程和多任務:多線程和多任務是兩個既有聯繫又有區別的概念。多任務是針對操做系統而言的,表明着操做系統能夠同時執行的程序個數;多線程是針對一個程序而言的,表明着一個程序內部能夠同時執行的線程個數,而每一個線程能夠完成不一樣的任務。

線程的狀態與生命週期:新建:當一個Thread類或其子類的對象被聲明並建立時,新生的線程對象處於新建狀態。此時它已經有了佔用內存空間和其餘資源的資格。運行:線程建立以後就具有了運行的條件,一旦輪到它來享用CPU資源時,即JVM將CPU使用權切換給該線程時,此線程的就能夠脫離建立它的主線程獨立開始本身的生命週期了(即run方法執行的過程)。阻塞:有3種緣由的阻塞:等待阻塞:執行了wait() 方法;同步阻塞:獲取synchronized同步鎖失敗;其餘阻塞:執行了sleep()、join()方法;終止:run方法結束。

建立線程的方式有兩種:經過建立Thread類的子類來實現;經過實現Runnable接口的類來實現。

Thread的子類建立線程的關鍵操做:設計Thread的子類,重寫父類的run方法,用Thread類或子類建立線程對象,使用start方法啓動線程,JVM將CPU使用權切換給線程時,自動執行 run方法。

經過Runnable接口實現多線程的關鍵操做:設計一個實現Runnable接口的類,重寫run方法;以該類的對象爲參數創建Thread類的對象;調用Thread類對象的start方法啓動線程,將執行權轉交到run方法。

通過一學期Java課的學習,對Java這門語言有了進一步的認識,但學習Java之路還很漫長。老師的教學方式對咱們學習Java有很大的幫助,也感謝助教在百忙之中抽時間爲咱們解疑。

相關文章
相關標籤/搜索