在我的第一周我提到了关于OOP的一般主题,我能够在短时间内学到很多关于这些主题的知识时间量。然而,仍有一些话题需要讨论。考虑到这只是OOP的基础知识,我正在决定Java是否是我想要关注的语言100% ,即使大学毕业了,我也不得不说我对后端情有独钟,因为我有测试的经验,这可能是我决定的一个因素。
在第二周我没有太多时间来复习我的主题,例如线程、枚举或泛型已悬而未决。不过,我在一个模拟餐厅的小项目上取得了进展,可以在其中执行以下操作:
- 创建产品或膳食?
- 根据这些产品下订单并注明消耗了多少。
- 添加后显示单个订单。
- 显示所有订单,可以选择根据用户需要添加任意数量的订单。
我创建它主要是为了涵盖OOP的各个方面,包括数据验证,并不断练习逻辑。我已经快完成了,但仍在添加细节;准备好后我会将其上传到我的存储库。
此外,我介绍了另一个OOP主题和其他非常有用的主题。
哪些? 关系类、try and catch 和文件。
我将简要提及这些主题如何对我有用以及我如何理解它们的实际应用。
关系类
关系类是一个我花了一些时间来理解和使用的主题。然而,一旦掌握了窍门,它们就可以轻松实施。我最常使用这个概念的方式是1对N关系,它用于将类B的多个对象链接到类A。
例如,如果我想要一辆汽车拥有多个所有者,我需要从Owners类到Cars类的关系。
在Car类的构造函数中,需要传递一个list(我使用的是ArrayList),这个列表是根据Owner构造函数中的对象创建的。因此,所有者及其属性(名称、年龄、ID等)将链接到 Car 构造函数,该构造函数将能够创建具有这些属性的对象。
这是一个简单的示例,展示了如何应用1对N关系:https://pastebin.com/dX6SDWwp
当您需要将某些对象与其他对象“连接”时,这非常有用,以便您拥有直接关系并且它们不仅仅是通过数组或其他不同方法连接。
尝试并捕捉⚙️
在 Java 中使用 try 和 catch 是我比在我使用过的其他语言中实现的更多的东西。我认为这是因为我的 IDE 自动建议对某些需要它的异常使用 try 和 catch。
与 C 等其他语言相比,这个主题只是一个亮点,在其中我很少使用它,并且更喜欢其他技术来避免错误。不过,我逐渐习惯使用 try 和 catch 来预测错误并避免突然的系统崩溃。
文件 - JSON/GSON - 序列化和反序列化 ?
使用Java处理文件占据了我上周末70%的学习时间。尽管如此,我觉得与 C 相比,有更多的信息和示例,我还使用 矩阵 实现了文件使用,以维护数据而不重写它。
这对于以下系统很有用:
- 购物车
- 库存管理
- 订单,或任何需要数据保留的系统。
在这种情况下,使用Java,我需要使用对象,所以这就涉及到序列化和反序列化。
这里我注意到一个很大的差异,因为编写方式很大程度上取决于您想要的数据类型。我花费了数小时的研究的主要问题是,当我将字符保存到.txt文件时,它们在打开文件时以二进制格式出现,但它们显示为 控制台中的字符。
网上发现有两种方式读写数据:
- 通过字节
- 通过角色
我使用的方法是基于字节的,因为我直接传递对象。
我还没有足够的知识来分享使用 Writer 和 Reader 子类的各种方法之间的差异,但我正在做一个现实世界的练习我将使用存储在 ArrayList 中的对象并学习如何序列化和使用 GSON 反序列化 它们(以将对象在系统中的状态保存在 .json 文件中),然后将此数据写入 .txt 文件,将它们作为记录存储在 中有组织的方式。
结束
上周,我没有取得我希望的那么多进展,但是处理文件花了很多时间研究,应用 ,以及概念区分,从我审阅的每篇文章中提取一些内容,以达到最终结果,我将在“真实”项目中测试并分享进展如何。
值得一提的是,这种具体处理以及我在 GSON 和 .txt 中提到的场景是我大学需要做的事情。但是,还有其他方法,例如JPA或数据库来处理这个问题。并非绝对有必要使用 GSON 和 .txt 来维护系统中的数据。
没什么可补充的,如果有人对文件或我提到的主题有任何意见,请随时发表评论并分享您的建议!
编码愉快!?
以上是Java OOP:一周 OOP 冒险继续的详细内容。更多信息请关注PHP中文网其他相关文章!

Java如何缓解平台特定的问题?Java通过JVM和标准库来实现平台无关性。1)使用字节码和JVM抽象操作系统差异;2)标准库提供跨平台API,如Paths类处理文件路径,Charset类处理字符编码;3)实际项目中使用配置文件和多平台测试来优化和调试。

java'splatformentenceenhancesenhancesmicroservicesharchitecture byferingDeploymentFlexible,一致性,可伸缩性和便携性。1)DeploymentFlexibilityAllowsibilityAllowsOllowsOllowSorlowsOllowsOllowsOllowSeStorunonAnyPlatformwithajvM.2)penterencyCrossServAccAcrossServAcrossServiCessImplifififiesDeevelopmentandeDe

GraalVM通过三种方式增强了Java的平台独立性:1.跨语言互操作,允许Java与其他语言无缝互操作;2.独立的运行时环境,通过GraalVMNativeImage将Java程序编译成本地可执行文件;3.性能优化,Graal编译器生成高效的机器码,提升Java程序的性能和一致性。

效率testjavaapplicationsforplatformcompatibility oftheSesteps:1)setUpautomatedTestingTestingActingAcrossMultPlatFormSusingCitoolSlikeSlikeJenkinSorgithUbactions.2)contuctualtemualtemalualTesteTESTENRETESTINGINREALHARTWARETOLEALHARDOELHARDOLEATOCATCHISSUSESUSEUSENINCIENVIRENTMENTS.3)schictcross.3)schoscross.3)

Java编译器通过将源代码转换为平台无关的字节码,实现了Java的平台独立性,使得Java程序可以在任何安装了JVM的操作系统上运行。

ByteCodeachievesPlatFormIndenceByByByByByByExecutedBoviratualMachine(VM),允许CodetorunonanyplatformwithTheApprepreprepvm.Forexample,Javabytecodecodecodecodecanrunonanydevicewithajvm

Java不能做到100%的平台独立性,但其平台独立性通过JVM和字节码实现,确保代码在不同平台上运行。具体实现包括:1.编译成字节码;2.JVM的解释执行;3.标准库的一致性。然而,JVM实现差异、操作系统和硬件差异以及第三方库的兼容性可能影响其平台独立性。

Java通过“一次编写,到处运行”实现平台独立性,提升代码可维护性:1.代码重用性高,减少重复开发;2.维护成本低,只需一处修改;3.团队协作效率高,方便知识共享。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3汉化版
中文版,非常好用

记事本++7.3.1
好用且免费的代码编辑器

Dreamweaver Mac版
视觉化网页开发工具