当前位置: 首页 > news >正文

Java入门基础学习笔记41——实体类

实体JavaBean/实体类:

就是一种特殊形式的类。

1)这个类中的成员变量都要私有,并且要对外提供相应的getXXX,setXXX的方法。

2)类中必须要有一个公共的无参的构造器。其他的构造器可写可不写。

右键菜单中,选择:Generate选项:

选择Getter and Setter:

使用shift键或者ctrl键,选择name和score:

也可以自动生成有参构造器。

那么,还是需要自动生成无参构造器。Select None。

package cn.ensource.javabean;public class Student {private String name;private double score;// 必须为类提供一个公开的无参数构造器public Student() {}// 有参构造器public Student(String name, double score) {this.name = name;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
package cn.ensource.javabean;public class Test {public static void main(String[] args) {// 目标:掌握实体类的书写要求、特点、应用场景Student s1 = new Student();s1.setName("播妞");s1.setScore(99);System.out.println(s1.getName());System.out.println(s1.getScore());}
}

运行结果:

实体类有什么特点:我们可以看出来,实体类中,只有成员变量和getter、setter方法,实体类仅仅是一个用来保存数据的java类。其中没有其他处理数据的方法,所以,我们只能用它存取数据。就是用来保存某个事物的数据的。

JAVAWEB阶段会有应用,主要是数据的实体,作为CRUD的载体。

实体类有什么应用场景?

实体类只负责数据存取,而对数据的处理交给其他类来完成,以实现数据和数据业务处理相分离。

这是一种流行的开发模式。

 

package cn.ensource.javabean;public class Student {private String name;private double score;// 必须为类提供一个公开的无参数构造器public Student() {}// 有参构造器public Student(String name, double score) {this.name = name;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}
package cn.ensource.javabean;public class StudentOperator {private Student student;public StudentOperator(Student student) {this.student = student;}public void printPass() {if (student.getScore() >= 60) {System.out.println(student.getName() + "学生成绩及格");} else {System.out.println(student.getName() + "学生成绩不及格");}}
}

package cn.ensource.javabean;public class Test {public static void main(String[] args) {// 目标:掌握实体类的书写要求、特点、应用场景Student s1 = new Student();s1.setName("播妞");s1.setScore(99);System.out.println(s1.getName());System.out.println(s1.getScore());StudentOperator operator = new StudentOperator(s1);operator.printPass();}
}

运行结果:

实体类对应的是软件开发里现在比较流行的开发方式,数据和数据的业务处理相分离。

面向对象的综合案例:

模仿电影信息系统:

需求:

展示系统中的全部电影:(每部电影展示:名称和价格)

允许用户根据电影的编号(id)查询出每个电影的详细信息。

目标:

使用所学的面向对象编程实现以上两个需求。

package cn.ensource.demo;public class Movie {private int id;private String name;private double price;private double score;private String director;private String actor;private String info;public Movie() {}public Movie(int id, String name, double price, double score, String director, String actor, String info) {this.id = id;this.name = name;this.price = price;this.score = score;this.director = director;this.actor = actor;this.info = info;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public String getDirector() {return director;}public void setDirector(String director) {this.director = director;}public String getActor() {return actor;}public void setActor(String actor) {this.actor = actor;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}

 

package cn.ensource.demo;public class MovieOperator {private Movie[] movies;public MovieOperator(Movie[] movies) {this.movies = movies;}// 业务需求:展示全部电影信息public void printAllMovies() {for (int i = 0; i < movies.length; i++) {System.out.println("----系统全部电影如下----");Movie movie = movies[i];System.out.println("编号:" + movie.getId());System.out.println("名称:" + movie.getName());System.out.println("价格:" + movie.getPrice());System.out.println("-----------");}}// 根据电影的编号(id)查询出每个电影的详细信息public void SearchMovieById(int id) {for (int i = 0; i < movies.length; i++) {Movie movie = movies[i];if (movie.getId() == id) {System.out.println("电影详细如下:");System.out.println("编号:" + movie.getId());System.out.println("名称:" + movie.getName());System.out.println("价格:" + movie.getPrice());System.out.println("得分:" + movie.getScore());System.out.println("导演:" + movie.getDirector());System.out.println("主演:" + movie.getActor());System.out.println("其他信息:" + movie.getInfo());return;}else {System.out.println("没有该电影信息!");}}}
}

 

package cn.ensource.demo;import java.util.Scanner;public class Test {public static void main(String[] args) {// 设计一个电影类// 电影的操作类进行业务处理// 准备全部电影数据Movie[] movies = new Movie[4];movies[0] = new Movie(1, "水门桥1", 38.9, 9.8, "徐克", "吴京", "12万人观看");movies[1] = new Movie(2, "出拳吧", 38.9, 9.8, "徐克", "吴京", "12万人观看");movies[2] = new Movie(3, "月球损落", 38.9, 9.8, "徐克", "吴京", "12万人观看");movies[3] = new Movie(4, "一点就到家", 38.9, 9.8, "徐克", "吴京", "12万人观看");MovieOperator movieOperator = new MovieOperator(movies);Scanner scanner = new Scanner(System.in);while (true) {System.out.println("==电影信息系统==");System.out.println("1. 查询全部电影信息");System.out.println("2. 根据ID查询某个电影的详细信息展示");System.out.println("请您输入操作命令: ");int command = scanner.nextInt();switch (command) {case 1:movieOperator.printAllMovies();break;case 2:System.out.println("请您输入要查询的电影的Id: ");int id = scanner.nextInt();movieOperator.SearchMovieById(id);break;default:System.out.println("您输入的命令有问题!");}}}
}

运行结果:

==电影信息系统==
1. 查询全部电影信息
2. 根据ID查询某个电影的详细信息展示
请您输入操作命令: 
1
----系统全部电影如下----
编号:1
名称:水门桥1
价格:38.9
-----------
----系统全部电影如下----
编号:2
名称:出拳吧
价格:38.9
-----------
----系统全部电影如下----
编号:3
名称:月球损落
价格:38.9
-----------
----系统全部电影如下----
编号:4
名称:一点就到家
价格:38.9
-----------
==电影信息系统==
1. 查询全部电影信息
2. 根据ID查询某个电影的详细信息展示
请您输入操作命令: 
2
请您输入要查询的电影的Id: 
3
电影详细如下:
编号:3
名称:月球损落
价格:38.9
得分:9.8
导演:徐克
主演:吴京
其他信息:12万人观看
==电影信息系统==
1. 查询全部电影信息
2. 根据ID查询某个电影的详细信息展示
请您输入操作命令: 

其中:扫描器放在while语句外边,如果放在while里面,就会每次都会创建一个扫描器,浪费空间。

成员变量和局部变量的区别?

如果有C++的基础,这块还是很好理解的。

Field:成员变量,对象的属性。

相关文章:

Java入门基础学习笔记41——实体类

实体JavaBean/实体类&#xff1a; 就是一种特殊形式的类。 1&#xff09;这个类中的成员变量都要私有&#xff0c;并且要对外提供相应的getXXX&#xff0c;setXXX的方法。 2&#xff09;类中必须要有一个公共的无参的构造器。其他的构造器可写可不写。 右键菜单中&#xff0…...

【Linux】信号之信号的保存和处理详解

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64f;如果内容有误或者有写的不好的地方的话&…...

基于Django的图书管理系统

文章目录 前言一、页面展示1.登录2.前端页面3.后端页面 二、项目上传&#xff08;1&#xff09;导入数据库&#xff08;2&#xff09;导入项目&#xff08;3&#xff09;数据库密码修改&#xff08;4&#xff09;进入网站 总结 前言 本网站调用Django编写了图书管理网站&#…...

js实现元素根据鼠标滚轮滚动向左右上下滑动着从模糊到清楚显示出来

html代码 <div ref{test} id"animatedElement" className"not-animated"> <div style{{width:"100px",height:"50px",backgroundColor:"red"}}> </div> </div> JS代码 const te…...

yocto学习

bitbake命令单独编译u-boot&#xff1a; $ bitbake -c compile -f u-boot-imx $ bitbake -c deploy -f u-boot-imx //部署编译生成的u-boot镜像到deploy bitbake命令单独编译kernel&#xff1a; bitbake -c compile -f linux-imx //编译内核 bitbake -c deploy -f linux-imx /…...

【IC设计】牛客网-序列检测习题总结

文章目录 状态机基础知识VL25 输入序列连续的序列检测VL26 含有无关项的序列检测VL27 不重叠序列检测VL28 输入序列不连续的序列检测参考资料 状态机基础知识 VL25 输入序列连续的序列检测 timescale 1ns/1ns module sequence_detect(input clk,input rst_n,input a,output re…...

python爬虫登录到海康相机管理页面

简述 1.最近接到个任务是在管理页面更改相机的某个参数&#xff0c;下载官方的sdk貌似没有提供这个接口&#xff0c;所以只能自己写爬虫登录发请求了。 1.主要步骤 1.1 发送get请求获取到salt&#xff0c;sessionID&#xff0c;challenge等信息 http://admin:123456192.168.…...

9.Docker网络

文章目录 1、Docker网络简介2、常用基本命令3、网络模式对比举例3.1、bridge模式3.2、host模式3.3、none模式3.4、container模式3.5、自定义网络 1、Docker网络简介 作用&#xff1a; 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接进行网络通信而不受到影…...

Windows VS2022 C语言使用 sqlite3.dll 访问 SQLite数据库

今天接到一个学生C语言访问SQLite数据库的的需求: 第一步,SQLite Download Page下载 sqlite3.dll 库 下载解压,发现只有两个文件: 于是使用x64 Native Tools Command Prompt 终端 生成 sqlite3.lib 和 sqlite3.exp文件 LIB -def:sqlite3.def -out:sqlite3.lib -machin…...

java库和包的概念

在Java中&#xff0c;"库"和"包"是两个不同的概念&#xff0c;但它们之间存在着密切的关联。 库&#xff08;Library&#xff09; 定义&#xff1a;库是一组已经编写好的代码和资源&#xff0c;用于解决特定的问题或提供特定的功能。它可以包含一个或多个…...

mysql内存结构

一&#xff1a;逻辑存储结构&#xff1a;表空间->段->区->页->行、 表空间&#xff1a;一个mysql实例对应多个表空间&#xff0c;用于存储记录&#xff0c;索引等数据。 段&#xff1a;分为数据段&#xff0c;索引段&#xff0c;回滚段。innoDB是索引组织表&…...

Python | Leetcode Python题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; class Solution:def minDepth(self, root: TreeNode) -> int:if not root:return 0que collections.deque([(root, 1)])while que:node, depth que.popleft()if not node.left and not node.right:return depthif node.left:que.appen…...

c++二进制输出

输入一个数&#xff0c;输出n个数&#xff0c;数可以是0或1&#xff1b;输入&#xff1a;4输出&#xff1a;0010&#xff1b;提示&#xff1a;本题要用到rand(),srand(time(0));代码如下&#xff1a;#include<bits/stdc.h> #include<windows.h> using namespace s…...

5. C++网络编程-UDP协议的实现

UDP是无连接的。 UDP Server网络编程基本步骤 创建socket&#xff0c;指定使用UDP协议将socket与地址和端口绑定使用recv/send接收/发送数据 由于UDP是无连接的&#xff0c;直接侦听就行使用close关闭连接 这个UDP接收数据的时候用的API是recvfrom,发送数据是sendto 客户端 …...

Altium Designer 中键拖动,滚轮缩放,并修改缩放速度

我的版本是AD19&#xff0c;其他版本应该都一样。 滚轮缩放 首先&#xff0c;要用滚轮缩放&#xff0c;先要调整一下AD 设置&#xff0c;打开Preferences&#xff0c;在Mouse Wheel Configuration 里&#xff0c;把Zoom Main Window 后面Ctrl 上的对勾取消掉&#xff0c;再把…...

python从入门到精通04

一、编写英文月份词典 month_num int(input("请输入您想要查询的月份&#xff1a;")) month_list [January,February,March,April,May,June,July,August,September,October,November,December] print("您查询的月份单词是&#xff1a;", month_list[mon…...

tomcat三级指导

版本 ./catalina.sh linux version.bat win 1.确认是否使用了tomcat管理后台 我们先找到配置文件&#xff1a;tomcat主目录下/conf/server.xml 可以查看到连接端口&#xff0c;默认为8080 然后查看manager-gui管理页面配置文件&#xff0c;是否设置了用户登录 配置文件…...

不知道是该怎么引用多个函数片段?具体示例如代码

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…...

P3128 [USACO15DEC] Max Flow P题解(树上差分,最近公共祖先,图论)

前言&#xff1a; 题目链接&#xff1a;P3128 [USACO15DEC] Max Flow P - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 讲解&#xff1a; 这一题含金量真算高的&#xff0c;包含了建树&#xff08;用了图论的知识&#xff09;&#xff0c;求最近公共祖先&#xff08;倍增法…...

在Linux上面部署ELK

注明&#xff1a;一下的软件需要自己准备 一、准备环境&#xff1a; 1.两台elasticsearch主机4G内存 2.两台elasticsearch配置主机名node1和node2(可以省略) #vim /etc/hostname #reboot 3. 两台elasticsearch配置hosts文件 #vim /etc/hosts 192.168.1.1 node1 192…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...