【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.hqwc.cn/news/318927.html

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

相关文章

基于决策树、随机森林和层次聚类对帕尔默企鹅数据分析

作者&#xff1a;i阿极 作者简介&#xff1a;数据分析领域优质创作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏&#x1f4c1;评论&#x1f4d2;关注哦&#x…

JMM到底如何理解?JMM与MESI到底有没有关系?

今天给大家分享一篇对于理解Java的多线程&#xff0c;特别重要的一个知识点&#xff1a;JMM。在JVM中增加线程机制&#xff0c;首当其冲就是要实现JMM&#xff0c;即Java内存模型。JMM也是大家真正理解Java多线程的基础。 但是大家对于JMM&#xff0c;可以说大多数小伙伴对其的…

3dmax灯光缓存参数应该怎么设置?

细分&#xff1a;用来决定灯光缓存的样本数量&#xff0c;样本数量以此数值的平方来计算。数值越高&#xff0c;效果越好&#xff0c;速度越慢。 一般出图建议1000到1800之间已经足够了 采样大小&#xff1a;用来控制灯光缓存的样本尺寸大小&#xff0c;较小的数值意味着较小的…

python统计分析——直方图(sns.histplot)

使用seanborn.histplot()函数绘制直方图 from matplotlib.pyplot as plt import seaborn as snsdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) &#xff08;1&#xff09;dataNone, 表示数据源。 &#xff08;2&#xff09;xNone, 表示直方图的分布垂直与x轴…

Pycharm恢复默认设置

window 系统 找到下方目录-->删除. 再重新打开Pycharm C:\Users\Administrator\.PyCharm2023.3 你的不一定和我名称一样 只要是.PyCharm*因为版本不同后缀可能不一样 mac 系统 请根据需要删除下方目录 # Configuration rm -rf ~/Library/Preferences/PyCharm* # Caches …

uni-app中实现元素拖动

uni-app中实现元素拖动 1、代码示例 <template><movable-area class"music-layout"><movable-view class"img-layout" :x"x" :y"y" direction"all"><img :src"musicDetail.bgUrl" :class&…

算法与数据结构之数组(Java)

目录 1、数组的定义 2、线性结构与非线性结构 3、数组的表现形式 3.1 一维数组 3.2 多维数组 4、重要特性&#xff1a;随机访问 5、ArrayList和数组 6、堆内存和栈内存 7、数组的增删查改 7.1 插入数据 7.2 删除一个数据 7.3 修改数组 7.4 查找数据 8、总结 什么…

SoapUI 怎么下载:实用指南

SoapUI Windows 版本下载 今天带大家过一遍 SoapUI 在 Windows 系统下的安装教程吧&#xff01;各位 开发小伙伴 们可以跟着我一起来~ 下载安装包 下载链接&#xff1a;www.soapui.org/downloads/s… 安装 安装非常简单&#xff0c;只需双击它即可启动&#xff0c;安装程序…

Java多线程<二>多线程经典场景

leetcode 多线程刷题 上锁上一次&#xff0c;还是上多次&#xff1f; 同步的顺序。 1. 交替打印字符 使用sychronize同步锁使用lock锁使用concurrent的默认机制使用volitale关键字 Thread.sleep() / Thread.yield机制使用automic原子类 方式1 &#xff1a;使用互斥访问st…

异步优势演员-评论家算法 A3C

异步优势演员-评论家算法 A3C 异步优势演员-评论家算法 A3C网络结构并行步骤 异步优势演员-评论家算法 A3C A3C 在 A2C 基础上&#xff0c;增加了并行训练&#xff08;异步&#xff09;来提高效率。 网络结构 A2C&#xff1a; A3C&#xff1a; 在这两张图之间&#xff0c;…

全解析阿里云Alibaba Cloud Linux镜像操作系统

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版&#xff0c;针对阿里云服务器ECS做了大量深度优化&#xff0c;Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS&#xff0c;Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

DataGear 4.7.0 发布,数据可视化分析平台

DataGear 4.7.0 发布&#xff0c;严重漏洞和BUG修复&#xff0c;具体更新内容如下&#xff1a; 新增&#xff1a;HTTP数据集新增【编码请求地址】支持&#xff0c;可用于解决请求地址中文乱码问题&#xff1b;新增&#xff1a;新增数据源密码加密存储支持&#xff08;开启需设…