【Java】面向对象程序设计 期末复习总结

语法基础

数组自带长度属性 length,可以在遍历的时候使用:

        int []ages = new int[10];
        for (int i = 0; i < ages.length; i++)
            System.out.println(ages[i]);

数组可以使用增强式for语句进行只读式遍历:

        int[] years = new int[10];
        for (int year : years)  // 这里的冒号可以看作python里的in,表示取数组里的每个元素
            System.out.println(year);

随机数生成有两种方法:

  • 法一:使用Random类,在前面加载好,然后定义一个 rand 来使用 nextInt 或 nextDouble 方法:
import java.util.Random;

public class test {
	public static void main(String[] args) {
    	Random rand = new Random();
        int a = rand.nextInt(100) + 10; // 从10开始,范围为100,因此a的取值范围为[10, 100]
        double b = rand.nextDouble(); // 小数的范围为[0,1]
    }    
}
  • 法二:使用Math.random()生成取值范围为 [0.0, 1.0) 的浮点数:
public class test {
	public static void main(String[] args) {
    	int a = (int)(Math.random() * 100);
    }
}

数字和字符串的相互转换:

  • 将字符串转换为数字:
String s = "123";
int a = Integer.parseInt(s);
  • 将数字转换为字符串:
int a = 123;
String s = String.valueOf(a);

输入的初始化和关闭

import java.util.Scanner;

public class test {
	public static void main(String[] args) {
        int a = 0;
        double b = 1.0;
        String s = "";
        Scanner scanner = new Scanner(System.in);
        
        a = scanner.nextInt();
        b = scanner.nextDouble();
        s = scanner.nextLine();

        scanner.close();
    }
}

样卷第一题:设计一个类,产生100个随机数,计算能背3整除的和,要求存入数组中。

package final_review;

public class Text_1 {
	public static void main(String[] args) {
    	int[] a = new int[110];
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
        	a[i] = (int)(Math.random() * 100);
            if (a[i] % 3 == 0)
                sum += a[i];
        }
        a[0] = sum;
    }
}

简单面向对象

涉及到类的定义,成员变量、构造方法、方法定义,get、set方法,这些都很简单;

要着重掌握toString方法和equals方法:

    @Override
    public String toString() {
        return employeeId + " " + wage + " " + tax + " " + realWage;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (this.getClass() != obj.getClass())
            return false;
        Salary other = (Salary) obj;
        if (employeeId == null) {
            if (other.employeeId != null)
                return false;
        }
        else if (!employeeId.equals(other.employeeId))
            return false;
        return true;
    }

另外,组合不同的类,要将一个副类作为主类的一个成员变量,但是不能直接赋值,而是用set方法,最后在main方法里定义好副类,主类调用set方法赋值。

面向对象进阶

这里主要注意一下抽象类和接口:

抽象类 abstruct 用 extends 继承

接口 interface 用 implements 使用

有两个Object的接口 Comparable<>和Cloneable,

Comparable<>要覆盖 compareTo方法,比较大小,大的返回1,小的返回-1,一样大返回0;

这样就可以用 java.util.Arrays.sort 来根据某一成员变量对其中元素进行从小到大的排序。

Cloneable要覆盖返回值为 Object 的 Clone()方法,还得在这个和main方法后面抛出异常 throws ClonesNotSupportedException。

异常处理

知道使用try catch语句就行,在有可能出现异常的类后面都加上 throws Exception

记得catch 语句的括号里有标识符 e ,如果没有具体错误提示,就写 e.printStackTrace();

IO

掌握这道真题就好了,主要考的是数据写入和读出文档:

package Test;

import java.io.*;
import java.util.Scanner;

public class Test_6 {
    public static void main(String[] args) throws Exception{
        writeToFile("data.txt", "dog", 2, "yellow");
        readFromFile("data.txt");
    }
    public static void writeToFile(String fileName, Object... data) throws Exception {
        PrintWriter writer = new PrintWriter(new FileWriter(fileName));
        for (Object obj : data) {
            writer.println(obj.toString());
        }
        writer.close();
    }
    public static void readFromFile(String fileName) throws Exception {
        try {
            Scanner scanner = new Scanner(new FileReader(fileName));
            String line = "";
            while ((line = scanner.nextLine()) != null)
                System.out.println(line);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

JavaFx

第一题:

package ch05;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.PasswordField;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.FontPosture;
import javafx.scene.layout.*;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.scene.paint.Color;

public class RegisterFX extends Application {
    Stage primaryStage;
    private Text result = new Text();
    public void start(Stage primaryStage) throws Exception {
        this.primaryStage = primaryStage;

        VBox pane = new VBox(12);
        pane.setAlignment(Pos.TOP_CENTER);


        HBox pane1 = new HBox(24);
        pane1.setAlignment(Pos.TOP_CENTER);

        HBox pane2 = new HBox(24);
        pane2.setAlignment(Pos.TOP_CENTER);

        HBox pane3 = new HBox(24);
        pane3.setAlignment(Pos.TOP_CENTER);

        HBox pane4 = new HBox(24);
        pane4.setAlignment(Pos.TOP_CENTER);

        HBox pane5 = new HBox(24);
        pane5.setAlignment(Pos.TOP_CENTER);

        HBox pane6 = new HBox(24);
        pane6.setAlignment(Pos.CENTER);
        pane6.getChildren().add(result);

        Text title = new Text("注册");
        title.setFont(Font.font(null, FontWeight.BLACK, 24));

        Text text1 = new Text("电子邮箱:");
        Text text2 = new Text("用户姓名:");
        Text text3 = new Text("输入密码:");
        Text text4 = new Text("再次输入:");

        TextField answer1 = new TextField();
        TextField answer2 = new TextField();
        PasswordField answer3 = new PasswordField();
        PasswordField answer4 = new PasswordField();

        Button b1 = new Button("确定");
        Button b2 = new Button("取消");

        pane5.getChildren().add(b1);
        pane5.getChildren().add(b2);

        pane1.getChildren().add(text1);
        pane1.getChildren().add(answer1);
        pane2.getChildren().add(text2);
        pane2.getChildren().add(answer2);
        pane3.getChildren().add(text3);
        pane3.getChildren().add(answer3);
        pane4.getChildren().add(text4);
        pane4.getChildren().add(answer4);

        pane.getChildren().addAll(title, pane1, pane2, pane3, pane4, pane5);

        Scene scene = new Scene(pane, 500, 500);
        primaryStage.setScene(scene);
        primaryStage.show();

        b1.setOnAction(e->{
            if(text3.getText().equals(text4.getText()))
                result.setText("注册成功");
            else {
                result.setText("两次输入密码不一致");
                result.setFill(Color.RED);
            }
        });

        b2.setOnAction(e->{
            System.exit(0);
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}

第二题:

package Test;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.FontPosture;
import javafx.scene.layout.*;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Test_4_2 extends Application {
    TextField answer;
    Stage primaryStage;
    public void start(Stage primaryStage) throws Exception {
        this.primaryStage = primaryStage;

        VBox pane1 = new VBox();
        pane1.setAlignment(Pos.TOP_LEFT);

        HBox pane2 = new HBox(20);
        pane2.setAlignment(Pos.TOP_LEFT);

        Text question = new Text("广东外语外贸大学的简称是什么?");
        question.setFont(Font.font(null, FontWeight.BLACK, 24));

        Text text = new Text("输入:");

        answer = new TextField();

        Button b = new Button("确定");

        pane2.getChildren().add(text);
        pane2.getChildren().add(answer);

        pane1.getChildren().add(question);
        pane1.getChildren().add(pane2);
        pane1.getChildren().add(b);

        b.setOnAction(e->{
            if (answer.getText().equals("广外"))
                answer.setText("回答正确");
            else
                answer.setText("回答错误");
        });

        Scene scene = new Scene(pane1, 500, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

多线程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/289862.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【华为数据之道学习笔记】9-4“静”“动”结合的数据保护与授权管理

静态控制&#xff1a;数据保护能力架构 在充分识别数据风险并标识数据安全隐私后&#xff0c;数据底座产品还需要提供不同程度的数据保护能力。数据保护能力包括存储保护、访问控制、可追溯三种&#xff0c;每种保护能力都面向不同的业务管理需求&#xff0c;如图所示。 图-数据…

互联网演进历程:从“全球等待”到“全球智慧”的技术革新与商业变革

文章目录 一、导言二、World Wide Wait (全球等待)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 三、World Wide Web (万维网)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 四、World Wide Wisdom (全球智慧)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 五、…

C++ 命名空间 namespace详解

文章目录 1 . 前言2 . 命名冲突3 . 命名作用域4 . 匿名空间5 . 命名嵌套6 . 命名动态赋值7 . 命名空间追加内容8 . 命名空间指定9 . 小结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 此篇博文详解C的namespace命名空间平台 …

Docker 教程

Docker 文章目录 Docker1.Docker概述1.1Docker为什么会出现1.2Docker能做什么&#xff1f;1.3Docker主要名词 2.阿里云镜像加速3部署Mysql4.常见命令4.1镜像命令4.2容器命令4.3命令别名 5.数据卷5.1什么是数据卷&#xff1f;5.2数据卷命令5.3.挂载本地目录或文件 6.镜像6.1镜像…

Unity DOTS中的baking(二)Baker的触发

Unity DOTS中的baking&#xff08;二&#xff09;Baker的触发 我们知道&#xff0c;当传入Baker的authoring component的值发生变化时&#xff0c;就会触发baking。不过在有些情况下&#xff0c;component所引用的对象没有变化&#xff0c;而是对象自身内部的一些属性发生了变化…

七夕祭

title: 七夕祭 date: 2024-01-03 22:47:05 tags: 传送门 题目大意 解题思路 行的感兴趣的摊点或者列的感兴趣的摊点的数量能被行数或者列数整除&#xff0c;则能够实现要求。“均分”思想&#xff0c;设总感兴趣摊点数 T T T 和行数列数 n n n&#xff0c;当前感兴趣的摊点数…

Unity报错:InvalidOperationException: Insecure connection not allowed的解决方法

问题描述 在导入Steam VR 插件后报错&#xff1a; InvalidOperationException: Insecure connection not allowed UnityEngine.Networking.UnityWebRequest.SendWebRequest () (at <4139bb31c03640e7b650db6ec39d5754>:0) UnityEngine.WWW..ctor (System.String url) (…

13|代理(下):结构化工具对话、Self-Ask with Search以及Plan and execute代理

13&#xff5c;代理&#xff08;下&#xff09;&#xff1a;结构化工具对话、Self-Ask with Search以及Plan and execute代理 什么是结构化工具 LangChain 的第一个版本是在 2022 年 11 月推出的&#xff0c;当时的设计是基于 ReAct 论文构建的&#xff0c;主要围绕着代理和工…

xlrd.biffh.XLRDError: Can‘t find workbook in 0LE2 compound document

今天在运行之前可以正常运行的程序&#xff0c;解析excel文件&#xff0c;代码简单示例如下&#xff1a; import pandas as pddf pd.read_excel("F:\\1.xlsx")# 解析文件 不过&#xff0c;这次却遇到了一个问题&#xff0c;如下图&#xff1a; 第一次遇到这个错误…

Oracle VirtualBox中Linux系统基本使用方法——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项

前言 小北的这篇博客介绍的是关于用VirtualBox中下载好的ubuntu系统中&#xff0c;为搭建Hadoop平台所做的命令操作准备&#xff0c;希望能帮助不会的人有指引作用。 没有安装好VirtualBox中的ubuntu系统以及创建Hadoop账户的请参考小北之前的三篇博客&#xff1a; ubuntu18…

卷积神经网络|制作自己的Dataset

在编写代码训练神经网络之前&#xff0c;导入数据是必不可少的。PyTorch提供了许多预加载的数据集&#xff08;如FashionMNIST&#xff09;&#xff0c;这些数据集 子类并实现特定于特定数据的函数。 它们可用于对模型进行原型设计和基准测试&#xff0c;加载这些数据集是十分…

【PID精讲 13 】位置式PID和增量式PID

文章目录 位置式PID和增量式PID一、位置式PID控制算法二、增量式PID控制算法及仿真三、位置式与增量式优缺点 位置式PID和增量式PID 在计算机控制系统中&#xff0c;PID控制是通过计算机程序实现的&#xff0c;因此它的灵活性很大。一些原来在模拟PID控制器中无法实现的问题&a…

聚道云软件连接器带给服装行业客户的业务革新

【客户介绍】 某服装制作企业&#xff0c;专注于设计和生产各类服饰。追求时尚与品质的完美结合&#xff0c;以满足不同消费者的需求。凭借丰富的行业经验&#xff0c;该企业不断创新&#xff0c;致力于提供优质的服装产品和服务。我们的目标是成为消费者心目中的首选品牌&…

【Electron】快速建立Vue3+Vite+Electron Ts项目

git https://github.com/electron-vite/electron-vite-vue 创建项目 npm create electron-vite or pnpm create electron-vite 初始化 pnpm install or pnpm i 启动项目 pnpm dev 打包项目 pnpm build 项目创建成功后默认情况下 窗口是H800 W600 在createWindow 函数…

2.5 设计FMEA第五步:风险分析

2.5.1 目的 DFMEA风险分析的目的是&#xff1a;通过评估严重度&#xff08;S&#xff09;、频度(O)和探测度(D)来估计风险&#xff0c;进而对采取的措施进行优先级排序&#xff08;AP&#xff09;。 其主要目标包括&#xff1a; 针对失效&#xff0c;分配控制措施&#xff0…

人机交互不是人机融合智能

一、人机交互和人机融合智能是两个不同的概念 人机交互是指人类与计算机之间的信息交流和操作方式&#xff0c;包括输入和输出界面、交互技术、用户体验等方面。人机交互的目标是提供用户友好的界面和自然的交互方式&#xff0c;使人类能够与计算机更加高效地进行沟通和协作。 …

增删改查语句实现了解不同的函数与特殊字符unionunion all区别

一、crud&#xff08;增删改查&#xff09; 1.1、查询 概念&#xff1a; 查询数据是指从数据库中根据需求&#xff0c;使用不同的查询方式来获取不同的数据&#xff0c;是使用频率最高、最重要的操作 注&#xff1a;在MySQL中&#xff0c;当执行一条SQL语句后&#xff0c;系…

Java中的序列化方法探索

.为什么要序列化 对象不序列化&#xff0c;能直接存储吗&#xff1f; 在 Java 中&#xff0c;序列化是将对象的状态信息转换为可以存储或传输的形式&#xff08;例如&#xff0c;转换为字节流&#xff09;的过程。在对象数据需要在网络上传输或需要在磁盘上持久化存储时&#…

初始数字孪生

文章目录 概念定义 架构框图 基本要求 功能要求 服务应用 参考文献 概念定义 数字孪生&#xff08;digital twin&#xff09;&#xff0c;是指具有保证物理状态和虚拟状态之间以适当速率和精度同步的数据连接的特定目标实体的数字化表达。 架构框图 数字孪生的整体架构&a…

C# halcon 工业产品尺寸测量

产品检测 这段代码是一个基于HalconDotNet的Windows窗体应用程序&#xff0c;主要用于图像处理和测量。以下是对代码的一些总结&#xff1a; 1. **图像显示与加载&#xff1a;** - 使用HalconDotNet库进行图像处理。 - 通过OpenFileDialog实现图像文件的选择和加载。 …