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

news2024/9/22 7:24:29

语法基础

数组自带长度属性 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);
    }
}

多线程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode第206题反转链表❤

一&#xff1a;题目&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网…

【占用网络】VoxFormer 基于视觉的3D语义场景方案 CVPR 2023

前言 本文分享“占用网络”方案中&#xff0c;来自CVPR2023的VoxFormer&#xff0c;它基于视觉实现3D语义场景补全。 使用Deformable Attention从图像数据中&#xff0c;预测三维空间中的体素占用情况和类别信息。 VoxFromer是一个两阶段的框架&#xff1a; 第一个阶段&…

前端框架的异步组件(Async Components)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

SpringBoot集成MQTT协议

简介 MQTT 可以被解释为一种低开销&#xff0c;低带宽占用的即时通讯协议&#xff0c;可以用较少的代码和带宽为远程设备连接提供实时可靠的消息服务&#xff0c;它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下&#xff0c;因此 MQTT 协议在 IoT&#xff08;Interne…

工业物联网上篇——什么是IIOT?

工业物联网背后的理念是使用工业设施中“哑巴设备”多年来产生的数据。装配线上的智能机器不仅可以更快地捕获和分析数据&#xff0c;且在交流重要信息方面也更快&#xff0c;这有助于更快、更准确地做出业务决策。 信息技术&#xff08;IT&#xff09;和运营技术&#xff08;O…

如何打开wps的备份中心查找备份文件

备份中心在我们使用WPS Office时扮演着重要的角色。经常保存文件的同时&#xff0c;我们也应该学会备份文件&#xff0c;以免意外损失。本文将向您介绍如何使用WPS备份中心来查找并恢复备份文件&#xff0c;方便您在需要时快速找到所需文件。 图片来源于网络&#xff0c;如有侵…

STM32 学习(三)OLED 调试工具

目录 一、简介 二、使用方法 2.1 接线图 2.2 配置引脚 2.3 编写代码 三、Keil 工具调试 一、简介 在进行单片机开发时&#xff0c;有很多调试方法&#xff0c;如下图&#xff1a; 其中 OLED 就是一种比较好用的调试工具&#xff1a; OLED 硬件电路如下&#xff0c…

科技智慧,产业链全覆盖:河南恩珅德农业的养殖业务优势

河南恩珅德农业以科技智慧和全产业链覆盖的优势&#xff0c;成功打造了一体化的养殖业务模式&#xff0c;为养殖者提供了全面的支持和优越的管理体验。以下是该企业养殖业务的核心优势&#xff1a; 1. 先进科技智慧 河南恩珅德农业充分利用先进的科技手段&#xff0c;引入智能…

了解并使用django-rest-framework-jwt

一 JWT认证 在用户注册或登录后&#xff0c;我们想记录用户的登录状态&#xff0c;或者为用户创建身份认证的凭证。我们不再使用Session认证机制&#xff0c;而使用Json Web Token&#xff08;本质就是token&#xff09;认证机制。 Json web token (JWT), 是为了在网络应用环…

Android开发中“真正”的仓库模式

原文地址&#xff1a;https://proandroiddev.com/the-real-repository-pattern-in-android-efba8662b754原文发表日期&#xff1a;2019.9.5作者&#xff1a;Denis Brandi翻译&#xff1a;tommwq翻译日期&#xff1a;2024.1.3 Figure 1: 仓库模式 多年来我见过很多仓库模式的实…

c# OpenCvSharp透视矫正参数调整器

透视矫正不够智能化&#xff0c;每次都要进行局部参数调整&#xff0c;不便于程序使用&#xff0c;程序流程还是那几个步骤&#xff1b; 1、读取图像、灰度化 2、高斯滤波 3、二值化 4、边缘检测 灰度化图 上个图看看经过调整透视矫正边缘检测结果我还是挺满意的 发现一个…

Nest 框架:解锁企业级 Web 应用开发的秘密武器(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

将ipad拓展为笔记本副屏

写在前面 对比过moonlight和spacedesk两种软件&#xff08;付费的更流畅&#xff0c;本人穷困暂不涉及&#xff09;&#xff0c;moonlight无线连接感觉更卡顿一些&#xff08;但是大多数人都觉得moonlight更丝滑&#xff0c;实践是检验真理的唯一标准&#xff0c;建议自己都试…

go执行静态二进制文件和执行动态库文件

目的和需求&#xff1a;部分go的核心文件不开源&#xff0c;例如验证&#xff0c;主程序核心逻辑等等 第一个想法&#xff0c;把子程序代码打包成静态文件&#xff0c;然后主程序执行 子程序 package mainimport ("fmt""github.com/gogf/gf/v2/os/gfile"…

UⅤ机用的滚珠丝杆套装

UⅤ机用的滚珠丝杆套装 上面是单丝杆UⅤ机内部。

ES(Elasticsearch)的基本使用

一、常见的NoSQL解决方案 1、redis Redis是一个基于内存的 key-value 结构数据库。Redis是一款采用key-value数据存储格式的内存级NoSQL数据库&#xff0c;重点关注数据存储格式&#xff0c;是key-value格式&#xff0c;也就是键值对的存储形式。与MySQL数据库不同&#xff0…

我的创作纪念日三年收获和感悟

机缘 我刚开始接触创作也是最近几年开始&#xff0c;当初就是希望自己的收获分享给大家&#xff0c;不仅使自己成长&#xff0c;也可以带着大家一起成长&#xff0c;独乐乐不如众乐乐&#xff0c;人都是自私的以前我都是看到好的知识文章都是自己藏起来&#xff0c;发现收获的…

Qt/C++编写视频监控系统82-自定义音柱显示

一、前言 通过音柱控件实时展示当前播放的声音产生的振幅的大小&#xff0c;得益于音频播放组件内置了音频振幅的计算&#xff0c;可以动态开启和关闭&#xff0c;开启后会对发送过来的要播放的声音数据&#xff0c;进行运算得到当前这个音频数据的振幅&#xff0c;类似于分贝…

初始数字孪生

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

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— DevEco Studio下载与安装

一、下载DevEco Studio IDE开发工具 1. 登录鸿蒙官网 网址为&#xff1a; ​​​​​​​华为HarmonyOS智能终端操作系统官网 | 应用设备分布式开发者生态 页面如下&#xff1a; 2. 搜索“DevEco Studio IDE” 点击右上角的“请输入关键词”&#xff0c;在其中搜索“DevEc…