【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方法:

    @Overridepublic String toString() {return employeeId + " " + wage + " " + tax + " " + realWage;}@Overridepublic 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("回答正确");elseanswer.setText("回答错误");});Scene scene = new Scene(pane1, 500, 200);primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}
}

多线程

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

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

相关文章

Git(3):Git环境常用命令

1 获取本地仓库 要使用Git对我们的代码进行版本控制&#xff0c;首先需要获得本地仓库 &#xff08;1&#xff09;在电脑的任意位置创建一个空目录&#xff08;例如test&#xff09;作为我们的本地Git仓库 &#xff08;2&#xff09;进入这个目录中&#xff0c;点击右键打开…

ElasticSearch数据同步

文章目录 ElasticSearch数据同步1. 同步调用2. 异步通知3. 监听binlog4. 工作中处理同步的问题 ElasticSearch数据同步 ElasticSearch中酒店数据来自于mysql数据库&#xff0c;因此MySQL数据发生改变时&#xff0c;ElasticSearch也必须跟着改变&#xff0c;这个就是ElasticSear…

一个基于SpringBoot+Thymeleaf渲染的图书管理系统

功能: 用户: a.预约图书 b.查看预约记录 c.还书 管理员: a.添加图书 b.处理预约(借书) c.查看借阅记录 另: 1.当用户过了还书日期仍旧未还书时会发邮件通知 2.当有书被还时发邮件通知预约书的用户到图书馆进行借书

八大算法排序@冒泡排序(C语言版本)

冒泡排序 概念 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单直观的排序算法&#xff0c;它重复地遍历待排序序列&#xff0c;一次比较两个相邻的元素&#xff0c;如果它们的顺序错误就将它们交换过来。通过多次的遍历&#xff0c;使得最大的元素逐渐移动到待排序序…

【人工智能】百度智能云千帆AppBuilder,快速构建您的专属AI原生应用

大家好&#xff0c;我是全栈小5&#xff0c;欢迎来到《小5讲堂》&#xff0c;此序列是《人工智能》专栏文章。 这是2024年第5篇文章&#xff0c;此篇文章是进行人工智能相关的实践序列文章&#xff0c;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&…

docker小白第十一天

docker小白第十一天 dockerfile分析 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。即构建新镜像时会用到。 构建三步骤&#xff1a;编写dockerfile文件-docker build命令构建镜像-docker run镜像 运行容器实例。即一…

气缸功能块(SMART PLC梯形图代码)

有关气缸功能块的更多介绍,可以参考下面链接文章: https://rxxw-control.blog.csdn.net/article/details/125459568https://rxxw-control.blog.csdn.net/article/details/125459568CODESYS平台双通气缸功能块 https://rxxw-control.blog.csdn.net/article/details/12544822…

Linux 进程(七) 进程地址空间

虚拟地址/线性地址 学习c语言的时候我们经常会用到 “&” 符号&#xff0c;以及下面这张表&#xff0c;那么取出来的地址是否对应的是真实的物理地址呢&#xff1f;下面我们来写代码一步一步的验证。 从上面这张图不难看出&#xff0c;从正文代码&#xff0c;到命令行参数环…

Django Web 开发实战-实现用户管理系统(部门管理、用户管理、注册登录、文件上传)

简介 基于Django Python Web框架 MySQL Bootstrap 开发的用户管理系统。支持增删改查、模糊搜索、分页。 功能介绍 部门管理---》已完成 用户管理---》已完成 认证&#xff08;注册/登录&#xff09;---》开发中 数据统计---》待开发 文件上传---》待开发 效果图 部门…

Rust圣经 阅读 数值类型

基本类型 Rust 每个值都有其确切的数据类型&#xff0c;分为两类&#xff1a;基本类型和复合类型。 基本类型往往是一个最小化原子类型&#xff0c;无法解构为其它类型&#xff08;一般意义上来说&#xff09;&#xff0c;由以下组成&#xff1a; 数值类型&#xff1a;有符号…

印象笔记03 衍生软件使用

印象笔记03 衍生软件使用 Verse 以下内容来源于官方介绍 VERSE是一款面向未来的智能化生产力工具&#xff0c;由印象笔记团队诚意推出。 你可以用VERSE&#xff1a; 管理数字内容&#xff0c;让信息有序高效运转&#xff1b;搭建知识体系&#xff0c;构建你的强大知识库&am…

CMU15-445-Spring-2023-Project #0 - C++ Primer

前置任务。 Task #1 - Copy-On-Write Trie Copy-on-write (COW) Trie 在进行修改时&#xff0c;不会立即复制整个数据结构。相反&#xff0c;它会在需要修改的节点被多个引用的时候才进行复制。当要对某个节点进行写操作&#xff08;添加子节点或者继续向下insert&#xff09…

修改多选框el-checkbox样式, 大小,背景色

修改多选框el-checkbox样式, 大小,背景色 /* 背景透明 */ .el-checkbox__inner {background: transparent;border: 1px solid #00ffe5; } /* 选中样式 */ .el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {b…

灸哥问答:分布式系统中数据一致性的问题如何解决

在分布式系统&#xff0c;数据一致性的问题是一个老生常谈&#xff0c;必须面对的一个问题&#xff0c;而且又极具挑战和复杂度的一个问题&#xff0c;针对数据一致性的问题&#xff0c;没有一个简单的单一的解决方案可以圆满解决&#xff0c;是需要结合具体的场景&#xff0c;…

人工智能技术在教育行业有哪些应用?

人工智能技术在教育行业有以下几个主要应用&#xff1a; 1. 个性化学习&#xff1a;人工智能可以根据学生的学习情况和特点&#xff0c;提供个性化的学习内容和教学方法。通过分析学生的学习数据和行为模式&#xff0c;AI 可以给予针对性的建议和反馈&#xff0c;帮助学生更好地…

环境准备-VMware安装

照顾到很多人不是很会环境搭建&#xff0c;我这里会将搭建的步骤讲的细致点 第一步&#xff0c;VMware下载。目的是通过VMware搭建Linux服务器&#xff0c;因为大家大部分还是Windows的电脑&#xff0c;我们先下载虚拟机搭建一个Linux系统的服务器 下载完成之后&#xff0c;点…

Java Synchronized 和 ReentrantLock

目录 介绍 synchronized synchronized 修饰实例方法 修饰静态类方法 synchronized 修饰代码块 实现细节 ReentrantLock ReentrantLock 基本使用 公平锁实现 读写锁&#xff08;ReentrantReadWriteLock&#xff09; 1. 创建读写锁对象&#xff1a; 2. 通过读写锁对象…

LeetCode 2807. 在链表中插入最大公约数

给你一个链表的头 head &#xff0c;每个结点包含一个整数值。 在相邻结点之间&#xff0c;请你插入一个新的结点&#xff0c;结点值为这两个相邻结点值的 最大公约数 。 请你返回插入之后的链表。 两个数的 最大公约数 是可以被两个数字整除的最大正整数。 示例 1&#xf…

Vue前端文字效果:如何让一段文本像是手动一个一个字打出来的

效果展示 自己做的AI聊天机器人界面&#xff0c;我觉得比微信还好看 由于这个前端略微复杂&#xff0c;下文用最简单的例子来展示&#xff1a; 分析需求 对于AI聊天工具的前端&#xff0c;如果AI生成的文本像是一个一个字打出来的&#xff0c;就会让AI看起来更像真的人&…

MySQL主从复制案例实现

使用Sharding-JDBC实现读写分离&#xff1a; 1、导入maven坐标 2、 在配置文件中配置读写分离规则 3、在配置文件中配置允许bean定义覆盖配置项 1、导入maven坐标 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jd…