当前位置: 首页 > 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…...

AI开发-python-langchain框架(--自定义Tool )夹

起因是我想在搞一些操作windows进程的事情时&#xff0c;老是需要右键以管理员身份运行&#xff0c;感觉很麻烦。就研究了一下怎么提权&#xff0c;顺手瞄了一眼Windows下用户态权限分配&#xff0c;然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧&#xff…...

解锁知识自由:kill-doc工具让30+平台文档获取效率提升300%

解锁知识自由&#xff1a;kill-doc工具让30平台文档获取效率提升300% 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;该脚本就是为…...

别再手动传文档了!Unity+Coze知识库自动上传与进度监控全攻略

UnityCoze知识库自动化上传与进度监控实战指南 在游戏开发中&#xff0c;剧情文本、设定文档等资源的管理往往需要频繁更新和版本控制。传统的手动上传方式不仅效率低下&#xff0c;还容易出错。本文将带你构建一个完整的自动化解决方案&#xff0c;实现从Unity到Coze知识库的…...

为什么 OXE 中 VLA 训练时 state 给关节,而预测的 action 是 xyz 加欧拉角

为什么 VLA 训练时 state 给关节&#xff0c;而预测的 action 是 xyz 加欧拉角 核心结论 在 VLA 训练中&#xff0c;state 使用关节状态&#xff08;joint state&#xff09;&#xff0c;而 action 预测为 xyz Euler&#xff0c;这通常不是冲突&#xff0c;而是两者承担的角色…...

嵌入式C语言宏配置技巧与实战应用

1. 嵌入式C语言宏配置的核心价值在嵌入式开发中&#xff0c;资源受限是常态。我曾参与过一个智能家居网关项目&#xff0c;FLASH只有128KB&#xff0c;RAM仅32KB。在这种环境下&#xff0c;传统的配置文件解析库根本装不下。这时宏配置就展现出独特优势——零运行时开销、编译期…...

Git多Gitee账号独立管理方案(单电脑双项目场景)

Git多Gitee账号独立管理方案(单电脑双项目场景) 一、适用场景描述 版本控制:Gitee/GitHub/GitLab都可。 本文以Gitee为例。 在日常开发工作中,很多开发者会遇到同一台电脑,需要管理两个不同Gitee账号,分别对应两个独立项目的场景,具体场景如下: 个人开发项目与公司工…...

WePush邮件推送完全手册:从基础配置到批量发送的完整流程

WePush邮件推送完全手册&#xff1a;从基础配置到批量发送的完整流程 【免费下载链接】WePush 专注批量推送的小而美的工具&#xff0c;目前支持&#xff1a;模板消息-公众号、模板消息-小程序、微信客服消息、微信企业号/企业微信消息、阿里云短信、阿里大于模板短信 、腾讯云…...

告别在线转换!用PowerShell+FFmpeg批量把FLAC无损转成ALAC(附完整脚本)

打造高效音频工作流&#xff1a;PowerShellFFmpeg批量转换FLAC到ALAC全攻略 每次整理音乐库时&#xff0c;最头疼的就是格式兼容性问题。上周我帮朋友迁移他的2000多首FLAC音乐到苹果设备&#xff0c;原本打算用在线转换工具&#xff0c;结果光是上传就花了整整一天——这还不算…...

DAMOYOLO-S赋能工业视觉:基于OpenCV的自动化零件缺陷检测方案

DAMOYOLO-S赋能工业视觉&#xff1a;基于OpenCV的自动化零件缺陷检测方案 在工业制造的生产线上&#xff0c;零件质检一直是个让人头疼的活儿。传统的人工目检&#xff0c;不仅效率低下&#xff0c;容易受工人疲劳、经验差异影响&#xff0c;导致漏检、误判&#xff0c;而且成…...

OpenClaw配置备份:Qwen3-14b_int4_awq环境迁移与恢复指南

OpenClaw配置备份&#xff1a;Qwen3-14b_int4_awq环境迁移与恢复指南 1. 为什么需要备份OpenClaw配置 上周我经历了一次痛苦的教训——因为系统重装&#xff0c;丢失了精心调校的OpenClaw配置。那些花了几周时间调试的模型参数、飞书机器人集成设置、自定义技能模块全部归零。…...