嗨，我叫莫什，我将成为您这门Java课程的讲师
当然，您将学到开始使用Java进行编程所需的一切
我们将首先安装所有必要的工具来构建Java
应用程序，然后您将学习将要学习的Java基础知识
如何执行Java代码，您将学习如何构建简单的算法，以及
在整个课程中，我将与您分享许多技巧和捷径
我多年的经验，我会教你如何像
专业的开发人员，因此我们将最终观看本课程，您将获得一个
Java的坚实基础，并准备学习我拥有的高级Java功能
如果您是初学者，则为想要学习Java的任何人设计了本课程
别担心，我将使Java变得超级简单，并在整个过程中全力以赴
当然，您年龄不大或太小，您将用以下代码编写第一个Java程序
分钟，我叫莫什，我是一名软件工程师
拥有二十多年的经验，我已经教了超过300万人如何编码
以及如何成为专业的软件工程师我在代码学院学习
与大众交流，在那里您可以找到很多课程来帮助您进行编码
技能提升到新的水平，我希望您能继续学习并学习这一美丽
和强大的编程语言，现在由该视频赞助商授予
经营在线业务的人我不能足够强调
保持在线安全，这就是为什么dashlane伸出援手让我如此兴奋的原因
我，如果您不知道-Lane是密码管理器和VPN推荐的
苹果和谷歌，这是保留您的信息的绝佳保障
确保您的第一台设备完全免费使用，因此请转到-Ling
comm /marché-如果您想升级到高级版以获得VPN或
暗网监控，您可以使用促销代码mosh享受10％的折扣
的-今天9点，让自己安全上网现在回到课程
在本Java教程中，我们将下载并安装必要的工具
构建Java应用程序，因此打开浏览器并搜索jdk下载
jdk是Java开发工具包的缩写，基本上是一种软件
用于构建Java应用程序的开发环境，它具有编译器
有一堆我们可以重复使用的代码，在
一堆其他东西，所以在这里您可以在Oracle com Java se上看到此页面
Java标准版的简称，现在请点击这里
这个图标现在在此页面上，我们可以看到各种Java开发工具包
像Linux Mac OS和Windows这样的平台我在Mac上，所以我要下载
这个dmg文件现在在这里，在我们首先执行此操作之前，我们需要接受许可
现在同意所有协议，让我们下载dmg，让我打开它，我们要说
这个包让我们双击它，在这里我们看到这个安装向导
超级简单，只需单击“继续”并安装，您必须输入
电脑的密码，然后还算不错，所以我们可以将其移至
现在我们需要的下一个软件是代码编辑器
很棒的用于构建Java应用程序的编辑器
NetBeans Eclipse和IntelliJ在本Java课程中，我将使用IntelliJ，但是
如果您有喜欢的编辑，可以随时使用它来完成本课程
很好，让我们搜索IntelliJ下载就可以了
下载IntelliJ IDEA单击此处的链接，下载社区
这是完全免费的版本，对于本课程来说已经足够了
立即下载所有内容，让我们将其拖放到Applications文件夹中
很好，我们已经安装了所有必要的工具来构建Java
应用程序，所以接下来我们要看一下Java程序的剖析
在本Java教程中，我们将研究Java程序的结构
Java程序中最小的构件是函数
如果函数是一段代码，可以执行一个隐喻的任务
电视遥控器上的按钮，每个按钮执行一项任务
编程语言中的函数完全相同，例如我们可以拥有
向人们发送电子邮件的功能我们可以具有转换功能
某人的体重（以磅为单位），我们可以使用一个验证功能
用户输入等等，现在让我们看看如何开始使用Java编写函数
通过指定该函数的返回类型，某些函数返回一个值
像白天的数字，等等，其他函数不会返回任何内容
此函数的返回类型为void void是Java中的保留关键字
这就是为什么在返回类型之后，我现在在这里用蓝色编码的原因
函数的名称，所以在这里我们应该给函数一个适当的名称
描述性名称，例如发送电子邮件，此名称清楚地标识了
这个功能好了，现在名字后面有一对括号
这些括号中，我们为此函数添加了参数
参数以将值传递给我们的函数，例如我们的发送电子邮件
函数应具有参数，例如谁是接收者，对象是什么
该电子邮件的内容是什么，以此类推。
我们不用担心参数，以后我们会再看它们
现在在括号后面，我们有一对花括号，在这些括号内
我们现在编写实际的Java代码，我希望您注意一件事
这是在Java中，我们将左括号放在我们定义的同一行上
我们在其他编程语言（例如C Sharp）中的功能
常规将左大括号放在新行上，但我们在Java中不这样做，因此
我们将左花括号放在同一行，我们现在定义函数
Java程序应至少具有一个功能，并且该功能称为
main所以main是每当我们执行Java时程序的入口点
程序调用主函数，并在其中的代码
函数现在可以执行了，这些函数不再单独存在
应该始终属于一个类，因此一个类是一个或多个容器
相关功能，基本上，我们使用这些类来组织代码，就像
我们在超市中如何在超市组织产品
各个部分，例如蔬菜水果清洁产品等等
通过相同的令牌包含相关产品java中的类包含相关产品
现在每个Java程序都应该具有至少一个包含以下内容的类
main函数，您可以猜出该类的名称吗？main这就是我们
在Java中定义一个类，我们从一个class关键字开始，然后给我们的类一个
适当的描述性名称，然后我们在函数中添加一对花括号
我们在这些花括号之间定义的类别属于此类
准确地说，我们将它们称为方法，因此方法是一部分的功能
某些编程语言（如Python）中的类，我们可以有一个函数
存在于类之外，因此我们将其称为函数，但是当函数属于
到一个类，我们现在在Java中将它称为该类的方法
类和方法应该具有访问修饰符，访问修饰符是
确定此程序中其他类和方法是否可以使用的特殊关键字
访问这些类和方法，我们有各种访问修饰符，例如public
私有等等，现在大多数时候我们使用公共访问修饰符，所以我们
把它放在我们的类和方法声明前面，这是基本的
Java程序的结构至少要有一个主类，并且在其中
main class我们有main方法，现在您可能很好奇为什么我们有一个main方法
此类的名称为大写m，因为在Java中我们使用了不同的名称
命名我们的类的惯例和我们用来命名我们的类的方法
Pascal命名约定，这基本上意味着
与使用我们的方法命名的方法相比，每个单词都应大写
骆驼命名约定，这意味着每个单词的首字母应为
除了第一个疣的情况下操作案例
为什么我们在这个班级的名字上有一个大写的m
了解Java程序的结构，让我们创建一个新的Java项目并查看
您将在本Java教程中了解所有这些实际操作的构建基块
如何编写和执行第一个Java程序，所以我们在这里打开IntelliJ IDEA
在主屏幕上，让我们在左侧选择一个新项目。
java，并确保项目sdk不是黑色的，所以我们早些时候下载了jdk或
Java开发套件版本12，这就是为什么在以下情况下选择JDK版本12的原因
您看不到确保立即从此下拉列表中选择它
让我们单击此页面上的下一个从模板中选择创建项目，以便我们
将创建一个命令行应用程序，它是我们可以运行的应用程序
从命令行没有图形用户界面或GUI
现在我知道命令行应用程序不像具有
图形用户界面（例如移动应用或桌面应用），但请相信我
使用图形用户界面构建应用程序非常复杂，因此
现在，我们只是要构建命令行应用程序以正确学习Java
正确学习Java之后，您就可以学习构建桌面或
现在使用Java的移动应用程序让我们单击此页面上的下一个
必须给我们的项目起个名字，现在我们在这里打个招呼吧
可以看到该项目的位置，因此现在位于idea projects文件夹中
在下面，您可以看到设置为将该代码进行通信的基本软件包
在我的机器上使用Marsh，您的任务可能会成为交流点
打包这是什么，我们在这里谈到了我告诉你的类和方法
类是相关方法的容器，所以我们使用类来组织
同样，我们的代码也有一个叫做package的概念，我们使用
打包到相关类的分组，以便随着我们的应用程序的增长，我们将最终
有数百甚至数千个班级，所以我们应该适当地组织
现在按照惯例将我们归类为软件包
Java项目的基本软件包是贵公司在Reverse中的域名
所以我的网站是带有大众通信的代码，这就是为什么我要设置基础
该项目的软件包现在将与Marsh一起提供该代码，这并不意味着
您应该在互联网上注册一个实际的域名，这仅仅是一个
为我们的类创建名称空间的方法，所以现在我们每个类
在这个项目中创建将属于这个包，我们将要谈论
软件包的详细信息，因此现在只需输入一个基本软件包即可
您的项目可能会变成您的名字或其他名称
没关系，让我们继续前进，这是我们的第一个Java项目
现在，这个代码编辑器乍看起来可能有点吓人，但请相信我
这真的很容易，您将在本课程的整个过程中了解它
左侧我们有项目面板，在这里我们可以看到所有文件夹和
项目中的文件，例如在顶部，我们有hello word项目
在此项目中，我们有源文件夹，在其中有以下源代码
现在在此文件夹中有一个项目，我们还有另一个可以使该代码平静的文件夹
Marsh是我们基本软件包的名称，在此软件包中，我们拥有
class main，所以您可以在此处看到右侧打开的主文件
该文件的名称主要是Java，因此所有Java文件都应具有
Java扩展现在可以通过单击此按钮来折叠项目面板
更好的图标，因此请查看此文件顶部的内容
包声明，用于指定此类所属的包
因此，我们在这里拥有的主类现在属于此程序包
语句以分号终止，因此在Java中，只要有一条语句，
应该用分号终止该语句，这完全类似于c-sharp
或C ++，现在在此包语句下方，我们的主类就像
您在上一教程中看到了，所以我们有一个公共类main和一个
此类中的花括号我们有我们的main方法，所以它是一个公共方法
可能可以从此其他部分访问
程序是静态的我们没有谈论静态金属，但是我们将谈论
他们将来只是记住程序中的主要方法
应始终为静态，此方法的返回顶部为空，这意味着
方法不会返回值，在括号中，我们有一个
该函数的参数，我们可以使用这些参数将值传递给我们
再次编程，我们以后将在此参数之后对此进行研究
如您所见，左括号是我们在此处编写代码的地方
方法现在默认情况下，我们具有带两个斜杠的行前缀，表示
我们使用这些注释向其他人解释我们的代码
现在不执行注释，让我们删除此注释并写一些
代码在终端上打印一些东西，所以在这里我们将使用系统类
在Java中，因此在此工具提示中的大写S系统中，您可以看到系统类是
在此包中定义的Java点Lang或语言也可以在
左侧表示该类中有一个类
成员，我们可以使用点运算符来查看系统中定义的成员
现在上课，我们将要访问的成员不在此图标上
成员F是字段的缩写，您将要讨论字段中的字段
未来，当我们谈论类和面向对象的编程时，现在是什么
有趣的是此字段的类型，您可以在右侧看到
一边是打印字符串，所以打印字符串是另一个已定义的类
在Java中，因此我们再次使用点运算符查看方法或
打印流类中定义的成员，我们将使用的方法是
打印Ln（它是行的缩写），请查看此方法的图标，因此M表示
现在按ENTER的方法，IntelliJ自动添加这些
括号和分号，所以现在有了第六行的代码
我之前告诉过你在内部调用或执行打印线方法
这个圆括号可以将值传递给我们的方法，在这里我们要打印
在终端上打个招呼字，让我们输入double
引号和这些引号内的内容是您好世界，所以您好词是文字
Java中的数据，无论何时处理文本数据，都应始终围绕
他们用双引号引起来，现在我们说我们有他的字符串，所以字符串是
好的字符序列，所以我们现在完成第一个程序
执行此操作，我们可以单击工具栏上的此图标，查看
Mac的ctrl + RI总是喜欢使用快捷键，因为它们更快，所以ctrl
+ R现在IntelliJ正在构建我们的应用程序，我们可以在
这个小终端窗口，所以这是我们的工作信息，这就是
第一个Java程序接下来，我将解释如何执行Java代码
在引擎盖下，嘿，沼泽，我只是想让你
我知道你真的不需要在这个课程中记住任何东西
整理完整的备忘单，并附上摘要说明，您可以下载
在此视频下面，所以我尽力创建了尽可能最好的Java课程，并且
如果您喜欢并分享我的支持，我将不胜感激
您经常使用的社交网络上的视频也请务必订阅并
启用通知，以便下次我上传视频时您会收到通知，谢谢
你这么多，让我们继续看
现在，让我们看看我们跑步时引擎盖下到底发生了什么
IntelliJ中的Java程序基本上涉及两个步骤
在这里，编译和执行步骤IntelliJ使用Java
编译器将我们的代码编译成另一种称为Java字节码的格式
该Java编译器随附了我们从以下位置下载的Java开发工具包：
本课程的开始让我向您展示，所以在这里我们可以右键单击
Java的主菜单，在此上下文菜单中，我们有一个名为open in terminal的项目
不幸的是它在下面，在我的录制窗口中看不到
在Mac上称为在终端上打开，并可能在命令提示符下打开
Windows，所以我们打开它可以打开该终端窗口或命令提示符
Windows，我们目前位于Maj的此文件夹代码中
我们有了主Java文件，现在我们可以像这样调用Java编译器了
Java C并将名称或Java文件作为参数传递，因此如果您是
在Mac或Linux上，请确保使用大写M拼写，因为这些
系统区分大小写，所以现在输入让我们看一下该文件夹的内容
在Mac或Linux上，我们可以在Windows上键入LS，然后键入dir，让我们来看一下
在此文件夹中，我们现在有一个新文件主类，这是字节码
现在，让我使用IntelliJ来运行此Java文件的表示形式的Java程序
此类文件存储在其他位置，让我向您展示，回到
在我们项目的项目面板中，我们有此源文件夹
我们的源代码，我们有这个文件夹，其中有
编译，因此在此文件夹中，我们在其中有生产
hello world与hello world中的项目同名，我们有comm
这个包中的顶级包的名称，我们有一个子包，
是Marsh的代码，这里有我们的主要dat类文件，所以这是
现在的编译步骤我们在此文件中拥有的Java字节码是平台
独立的，这意味着它可以在Windows Mac Linux或任何操作系统上运行
如果您转到java.com，则具有Java运行时环境的系统
下载我们可以下载Java或更准确地说是Java运行时环境
Java Runtime环境中的各种操作系统都有一个软件
组件，称为Java虚拟机或JVM，该JVM接收我们的Java字节码，
将其转换为基础操作系统的本机代码，因此，如果您
在Windows计算机上，此Java虚拟机将Java字节码转换为
Windows可以理解此架构的本机代码是
Java应用程序可移植或独立于平台的原因，我们可以
在Windows计算机上编写Java程序，然后在Linux Mac上执行该程序，或者
具有Java运行时环境的任何其他操作系统
c-sharp和python也具有相同的架构，这就是为什么
现在也让我向您展示如何调用此Java虚拟平台
机器来运行Java程序，所以回到这个终端窗口让我扩展它
目前，我们在Marsh的此文件夹代码中，在此文件夹中，
现在有这个类文件，让我们上一层，这样CD点和另一时间
所以现在我们在源文件夹中，我们可以像这样调用Java虚拟机
他们输入Java，然后我们输入完整的通行证到我们的主类文件
我是说，很早之前，我们用Marsh定义了该程序包comm
而这个主类是这个包的一部分，所以完整的路径
此类是带有Marsh点主要内容的冷静点代码，请确保使用大写M
这里是因为这是区分大小写的，现在当我们按Enter时，Java将查看
这个文件夹在这个文件夹内比较平稳，它将与其他文件夹代码一起查看
沼泽，然后它将在该文件夹中找到该类的主体，它将加载
字节码并将其转换为我们正在使用的操作系统的本机代码
使用一下，让它执行了我们的程序。
使用IntelliJ的程序，所有这些步骤对我们都是隐藏的，我们看不到
编译或执行步骤
因此，您已经了解了Java的实际应用，现在让我告诉您有关以下五个有趣的事实
Java Java是James Gosling于1995年在Sun Microsystems开发的。
后来于2010年被甲骨文收购，原名橡树后叫oke
站在高斯林办公室外面，后来改名为绿色，
最终受到Java咖啡的启发而重命名为Java，这就是其徽标看起来像
这有四个Java版本，用于构建不同类型的应用程序
我们有Java标准版，这是Java的核心平台
我们在本课程中使用它包含每个Java的所有库
开发人员必须了解我们拥有Java Enterprise Edition
用于构建超大型和分布式系统，它建立在
Java标准版，并提供了用于构建故障的其他库
容忍的分布式多层软件，我们有Java Micro Edition
这是专为移动设备设计的Java标准版的子集，因此
它具有特定于移动设备的库，最后还有Java卡
在智能卡中使用的Java的最新版本是Java标准版
12几个月前于2019年3月发布，Java已经接近9
全球有100万开发人员，目前大约有30亿部手机运行Java
的确有1.2亿台电视机和每个蓝光播放器
在美国，Java开发人员的平均年薪刚刚超过100,000美元
因此我们可以看到Java无处不在，这对您意味着更多的机会
现在被聘为专业程序员
我如何组织本课程的概述，以便您可以充分利用本课程
本课程是我完整的Java教程（共四部分）的第一部分，每个部分
大约需要三到四个小时，因此可以在一两天内轻松完成
在第一部分，这是您正在观看的内容，您将学习
在下一部分中，您将学习Java编程的基础知识
Java中的类型系统，您将学习如何使用各种类型，例如
在本节末尾将字符串boolean和数组放倒，您将构建一个
抵押计算器，这是您的第一个Java项目，它将对此进行改进
计算器点对点的路由器课程接下来，您将了解控制流程
我们将要讨论的用于构建算法的语句
在本节后面的各种类型的条件语句和循环中，我们将
将数据验证添加到我们的抵押计算器，以强制用户输入
此时，您可以建立有效的值
很好，但是成为一个好的程序员需要
知道如何编写干净，表达力强的优质代码
将优秀的程序员与普通的程序员分开，因此在
下一节我们将讨论干净的编码，我将向您展示各种
专业程序员用来使代码干净整洁的技术
可维护的，最后在最后一部分中，您将学习如何查找和
修复Java程序中的错误以及如何对其进行打包以便部署
其他人可以使用它们，因此第一部分中的材料将为您提供坚实的基础
在第二部分中，我们将介绍如何启动Java编程的基础
关于面向对象的编程，这是大多数情况下使用的一种编程风格
并非所有Java应用程序，无论您是想使用Java来构建Web移动版还是
您需要了解面向对象编程的桌面应用程序
好吧，因为否则你将在第三阶段不断遇到障碍
我们将要讨论的核心Java API是应用程序编程
接口，您将了解标准Java中的许多有用的类
库，最后一部分，我们将介绍高级
Java中的功能，例如流线程数据库编程等等，所以我希望
您将加入我的旅程，并掌握Java最受欢迎的编程
数百万个应用和网站背后的语言
[音乐]
你
[音乐]
交集，我们将看一下Java编程的基础知识
您将了解有关变量和常量的原始类型和引用类型
您将学习有关转换或类型转换的知识，您将学习如何工作
数字字符串和数组，以及如何从用户读取输入
一旦你学会了所有这些，我就会给你一个项目，你将建立一个
自行计算抵押贷款计算器，因此请务必特别注意
您将要学习的材料，因为您将在其中使用大多数材料
项目已经准备好了，现在让我们开始学习本教程吧
我们将讨论Java中的变量，我们使用变量来临时存储数据
在计算机的内存中，这是一个示例，您想在此程序中
将某人的年龄存储在内存中，所以我们声明一个像这样的蚂蚁年龄的变量
等于30，所以int或integer是此变量的类型，因此在此变量中，
只能存储整数，例如1 2 3 4整数
现在在Java中有一个小数点，我们要讨论几种不同的类型
关于它们，在下一个教程中，所以首先我们指定变量的类型，然后
我们给它起一个名称或标签，也称为标识符，因为我们使用
它用来标识我们的变量，这个等号称为赋值运算符
而30是我们分配给该变量的初始值，因此我们在
第6行，我们正在初始化此变量，这意味着我们要给它一个初始值
值，您始终必须在读取变量之前初始化我们的变量，因此
在这行中，我们将30号存储在计算机内存中的某个位置，
现在在第7行将此标签分配给该内存位置，而不是
打印hello world我们可以打印age变量的值
我要使用ctrl + R运行该程序，现在您可以看到30
美丽的终端，我们还可以更改变量的值，所以在我们完成之后
初始化每个房子，我们现在可以将其更改为35再次运行该程序时
我们看到它35漂亮，我们也可以在
同一行，但是我不建议这样做，因为它会使您
代码丑陋且难以阅读，这是一个示例，我们可以声明另一个变量
例如温度，并将其设置为20，因此使用逗号可以声明多个
现在即使在同一行上的变量，即使在技术上是可行的，
不是我推荐的东西，所以总是最好在上面声明一个变量
像这样的每一行，我们也可以在此处将一个变量的值复制到另一个变量中
是一个例子，让我删除这些变量并声明一个新变量
叫我的年龄，我们将其设置为30，然后声明另一个变量，例如她的年龄
然后将其设置为我的年龄，所以现在当我们打印她的年龄时，我们将看到30
看起来在第七行重新获得了价值
这个变量变成另一个变量现在我要你付钱
注意这里是我用来命名变量的约定
告诉过您之前这被称为驼峰符号，所以我们应该
除第一个单词外，每个单词的首字母大写，因此在此
第一个单词我的全都小写，但第二个单词开始
加上大写字母，这就是声明和初始化
在下一个教程中，我们将讨论各种类型的变量
在本教程中的Java中，我们将讨论Java中的各种类型
基本上我们有两类类型，我们有原始类型
存储简单值和非原始类型或引用类型以进行存储
复杂的对象，因此在基本类型的类别中，我们有白色的
占用一个字节的内存，一口气，我们现在可以存储从128到127的值
字节越多，我们可以存储的数字越大，所以接下来我们有
短，占用两个字节，因此我们最多可以存储32,000个值
接下来我们有一个整数，在整数取四个字节之前
内存并允许我们存储多达20亿的值，那么
占用八个字节，因此我们现在可以存储更大的数字
类型用于存储没有小数点的整数（如果需要）
要存储具有小数点的数字，必须使用浮点或双精度
浮点数需要四个字节，双倍需要八个字节，所以显然我们要加倍
接下来可以存储更大的数字，我们有char用于存储单个字符，例如
ABC和这张图表我占用了两个字节，因此它们支持国际字母
最后我们有布尔值来存储可以为true或
假，就像英语中的是或否一样，现在让我们看几个例子
之前我们使用整数来存储某人的年龄，但是如您所知
整数占用四个字节，允许我们存储不超过20亿的值
需要四个字节的内存来存储某人的年龄我们只需要一个字节
因为一口就能存储多达127个值，所以我要改变
这个字节更好，现在让我们看另一个例子，假设我们
想存储观看YouTube视频的次数，因此我们
定义一个称为views count的整数，我一直在使用有意义的
我的变量的名称，因为这些名称有助于我们了解这段代码
我见过有人使用像V或V 1或n这样的变量名没人知道吗
这些变量作为最佳做法的用途始终是有意义的，
您变量的描述性名称，因此视图很重要，我们将其设置为较大
每当您处理大型邮件时，Java中的数字现在就像1 2 3 4 5 6 7 8 9
这样的数字，您可以使用下划线将每三个分隔
就像我们如何在文档中使用逗号使数字更数字一样
可读，我们可以在Java中使用下划线，因此我们可以存储整数
价值高达20亿，但让我们说这部影片的
看了三十亿，所以我在这里有三个
表示错误，我将鼠标悬停在上面
此工具提示的整数太大，因此我们需要更改此类型
变长，但是错误仍然存​​在，这里发生了什么
我们收到此错误的原因是，默认情况下，Java将这些数字视为
整数，因此即使我们已将此变量的类型定义为long Java
编译器将此值视为整数，并且他认为该值太大
对于要解决此问题的整数，我们需要添加L作为后缀
数字，我们可以使用大写或小写的L，但是如您所见
小写的L看起来像1，所以最好使用大写L
是整数的示例，现在让我们声明一个用于存储数字的变量
小数点后加倍，我们将其设置为1099，显然是
变量太大，无法存储产品价格，因此我们可以更改
浮动是更好的，但您在这里有编译错误
不兼容的类型需要浮动，但发现原因是我们看到的两倍
此错误是默认情况下Java将这些数字视为带小数点的
因此，即使我们将此变量的类型设置为float，Java也会看到它
作为一个双精度数字，就像我们向该数字添加后缀的方式一样
将其表示为长，我们需要在此处添加后缀以将该数字表示为
浮点数，后缀为F再次可以使用大写或小写F
这些是数字的例子，现在我们存储一个字符，我们称之为char
它的字母，我们将其设置为一个音符，我们应该始终包围单
带单引号的字符和带多个字符或字符串的字符
双引号好了，所以char只代表一个
字符串代表一系列字符，最后让我们看一下
布尔值的示例，因此我们定义了一个布尔值变量，它是合格的
这个人是否符合贷款条件，我们说的是对还是错，这些是
布尔值现在请注意，所有这些用橙色编码的单词都保留了
Java中的关键字就像public static void class
打包这些都是保留关键字，因此我们不能使用这些保留关键字
在您上一次学习的教程中将我们的变量类和方法命名
我们使用原始类型来存储简单值，例如数字布尔值
值或单个字符相反，使用引用类型存储复杂
像数据对象或邮件对象之类的对象现在都是复杂的对象
在Java中，您已经在其他所有类型中看到过八种原始类型
类型是引用类型让我为您展示一个示例，因此在此程序中
首先，我要声明一个原始类型，假设现在白人年龄等于30岁
声明和初始化引用类型与
原始类型让我告诉你，所以现在在这里输入日期
工具提示框（称为智能感知），我们可以看到具有
以他们的名字注明日期，以便IntelliJ帮助我们通过以下方式完成代码
现在建议这些类名，我们在此包Java中有一个日期类
实用程序，因此此程序包包含许多实用程序类，这些类在
很多程序在不同的Java包中也有一个日期类
续集，用于对数据库进行编程，因此这是
包，我们可以具有相同的类，但是在不同的包中，它们没有
发生冲突，因此包在这种情况下现在可以为我们的类创建名称空间
我们选择第一个日期类，然后按Enter键或IntelliJ选项卡会自动添加
这行对我们来说是导入Java，直到现在为止，因为目前我们
在此软件包中，以便使用我们需要的其他软件包中的类
导入它，所以在这里我们要导入这个包中的日期类
关于软件包的详细信息，请回到我们的date变量
现在给这个变量一个名字，现在我们在这里设置我们需要使用
新操作符为该变量分配内存，这是其中之一
声明基元时基元和引用类型之间的差异
我们不需要分配内存的类型内存是由Java分配和释放的
运行时环境，但是在处理引用类型时，我们应该始终
现在分配内存，我们不必释放该内存Java Runtime
环境会自动处理该问题，因此我们使用新的运算符
然后在这种情况下重复我们班级的名称，然后添加
在此示例中，我们在此变量后加上小括号和分号
这里定义的是date类的实例，因此该类是定义的模板
或用于创建新对象新实例的蓝图作为另一个示例，我们可以
有一个叫做人类的类，我们可以有像约翰·鲍勃·玛丽这样的物体
因此，对象是类的实例，现在是该对象或此类
有我们可以使用点运算符访问的成员，因此我们现在可以输入点
这些都是此类或该对象中定义的所有成员
我们有一个叫做get time的方法，它返回这个的时间分量
对象，这是原始类型和引用之间的另一个区别
类型这些原始类型没有成员，所以如果您键入年龄点，我们不会
看到的所有这些项目您在这里看到的都不是其代码的年龄成员
允许我们快速生成代码的代码段，例如我们可以选择
对我来说，这会自动为我们生成此代码块
关于这个，所以这个年龄变量是原始类型，不是
对象它没有任何成员，这就是为什么当我们使用点运算符时
我们现在在这里看不到任何内容，让我们删除此行，而是打印
这个数据对象的值，所以我们可以再次键入system这是一个类，所以我们
可以使用点运算符访问其成员，这里我们是
字段，此字段的类型是打印字符串，它是
Java，因此我们可以再次使用点运算符并调用打印行
功能，现在让我向您展示一个非常酷的快捷方式，而不是键入所有这些内容
可以使用以下代码片段之一，因此我们键入s，哦，您会看到并按tab
现在为我们生成这段代码，让我们传递数据对象
在此请注意，我没有将此变量用双引号引起来，因为
这是一个字符串，如果您运行该程序，我们现在将在终端上看到
你去那里我们不想要这个，你想要的价值
我们的数据对象不是标签，所以我们删除运行程序的引号
再次，这是我在机器上的当前日期，我学到了一点
关于原始类型和引用类型之间的差异，因此您
知道我们使用原始类型来存储简单值和引用
存储复杂对象的类型，但有一个非常重要的区别
就内存管理而言，这两种类型之间是
我们将在本教程中讨论的内容
所以我要声明一个原始变量X并将其设置为1，然后
将要声明另一个变量，例如Y并将其设置为X，因此在此示例中，我们
有两个不同的变量x和y，这两个变量位于不同的位置
内存位置，因此它们彼此完全独立
如果我更改XY的值不会受到影响，请让我告诉你
我要将X更新为2，然后再打印Y，所以让我们来看一下
这样运行就可以看到Y不受影响，因为x和y完全相同
彼此独立，但是当我们使用参考时间时，此行为是
让我们来看一下，以便我删除
Java中的所有代码，我们都有一个在此定义的点类
打包awt的Java，所以我们按ENTER，现在我们有了这个import语句
最漂亮的顶部让我们声明一个像点1这样的变量并将其设置为new
指向此处，我们可以传递x和y的初始值，所以我要传递1
和1这样的智能现在会自动添加这些标签x和y，就像
在我要声明另一个变量点2并将其设置为点1之前
这就是执行Java Runtime环境时有趣的地方
第8行，首先要分配一些内存来存储该点对象，让我们
看看该内存位置的地址是否为100，那么它将
分配内存的单独部分，并将此标签附加到
该内存位置中的那个内存位置点1将要存储
点对象的地址，所以这是
当我们声明一个基本变量（如字节）时，使用基本类型和引用类型
我们分配给该变量的值将存储在该内存中
位置，但是当我们使用此类点类型的引用类型时，我们的变量
将要在内存中保存该点对象的斧头，而不是
实际的指针对象现在看第9行，这里我们复制的是
将此变量包含在另一个变量中，以便您学习的价值是
不是点对象是地址或指向点对象的引用
内存，这就是为什么我们将这些磁贴称为引用类型的原因，因为它们
不存储实际值，它们存储对对象的引用
内存，因此在此示例中，第一点和第二点引用的是精确的
内存中的同一点对象我们只有一个点对象，所以这两个变量
彼此不独立，它们引用的是同一对象，并且
这意味着如果我通过这些变量之一更新该点对象，
更改将对其他要显示给您的变量可见，因此使用
第一个变量点一个我们将更新x的值，所以我们使用点
运算符，在这里我们可以看到该对象X的成员都是Y
是存在于类中的变量，所以我们说X就像常规
变量设为另一个值现在说两个，因为第一点和第二点
如果我们打印第二点，我们将引用完全相同的对象
看一下刚才所做的更改，让我们打印S或ut标签
指向要在那里运行的程序，以便可以看到更改，因此请记住
此引用类型由引用复制，而原始类型为
由它们的值复制，并且这些值彼此完全独立
在本教程中，我们将在本课程的前面介绍Java中的字符串
我们在终端上打印了hello world消息
这是一个字符串或更准确地说是一个字符串文字
这意味着现在要从此处提取一个字符串值，并将其存储在
字符串变量，因此在此行之前剪切，我们键入字符串，现在看该字符串
在Java中定义的那个Lang包类，有趣的是我们
没有导入语句来导入此包或此类
因为此包是自动导入的，所以我们可以使用
是在此包中定义的，现在我们声明一个名为message的变量，
因为这是一个引用类型，所以我们应该使用
新运算符，所以Neal字符串，在括号中，我们键入消息hello
世界，但是在这里，我们有这个小警告，看看新的字符串是
冗余，因为在Java中，有一种较短的初始化字符串的方法
变量让我向您展示，因此我们不用设置新的运算符
现在表面上看起来像原始类型的字符串文字
因为我们没有使用new运算符，但这只是
初始化字符串变量字符串是Java中的引用类型，但是因为我们
经常使用它们有一种创建它们的简短方法
现在让我们将消息传递给打印线方法并运行我们的程序
与美丽之前完全相同的结果现在让我们来看一些
您可以使用字符串来做的有趣的事情，我们可以串联或连接一个字符串
使用加号运算符与另一个字符串组合在一起，因此在这里我们可以将其组合
与另一个带有两个感叹号的字符串，这是现在的结果，因为
字符串是一个类，它具有可以使用点运算符访问的成员，因此我们
可以键入消息点，这些都是方法或函数
例如，在字符串类中查找，我们在此方法以和结尾
我们可以检查字符串是否以字符或序列结尾
例如字符，我们可以传递其字符串以查看消息是否结束
现在带有两个感叹号，而不是打印消息
让我们在这里打印此表达式，让我们运行我们得到的程序，这样
我们在这里调用的此方法返回一个布尔值，该值可以是
是或否，我们还有另一种方法开始，现在让我们看一下
在这种情况下，我们会得到错误的信息，因为我们的信息不是以两个开头
感叹号是另一个有用的方法，即长度，因此我们可以称其为
字符串的长度，即字符数，因此消息点的长度
在这个字符串中，我们有13个字符
这在需要检查长度的情况下很有用
用户输入的内容，例如您可能有一个带有用户名的注册表单
字段，您可以检查某人的用户名长度，并给他们一个
如果用户名的长度超过20个字符，则错误
也有另一个方法是index，它返回index的索引
例如，如果我们第一次在此处传递字符或字符串，
您传递H时，H的索引为0，所以我们在那里运行程序，如果得到，则为0
您通过e我们得到1，因为此消息中第一个II的索引现在为1
如果您传递此消息中不存在的字符或字符串该怎么办，让我们
说斯凯，我们得到负1，所以用这种方法，我们可以检查一下字符串
包含某些字符，单词或句子，等等。
方法是replace，用这个我们可以替换一个或多个字符
例如，我们可以将任何感叹号替换为
假设有一家商店，所以这种替换金属有两个参数，一个是目标
另一个是替换，这里我们为这些参数传递两个值
这是第一个值，这里是第二个值，我们将它们分开
现在在编程术语中使用逗号表示的值，我们将此值称为
参数很多程序员都不知道参数之间的区别
和arguments参数是我们在方法arguments中定义的漏洞
是我们传递给这些方法的实际值，因此在这种情况下为target和
替换或参数，但是带有感叹号和星号
参数，现在让我们运行该程序，看看会发生什么，所以我们的解释
现在用星号代替了标记这里重要的是这种方法
不修改我们的原始字符串，它返回一个新字符串，因此如果我们打印我们的
SRU T选项卡消息后的原始字符串，您可以看到原始字符串
不会更改，因为在Java中字符串是不可变的
我们无法对其进行突变，我们无法对其进行更改，因此任何修改字符串的方法
总是会返回一个新的字符串对象，好吧，我们还有另一个有用的方法
小写让我们看一下
因此将其转换为小写字母会将所有字符转换为小写字母，再次可以看到
原始字符串不受影响，因为此方法返回一个新字符串
好的，我们还有两个大写字母，另一个有用的方法是修剪修剪和
有了这个，我们可以消除多余的空格，这些空格可以在开头或
字符串的结尾，有时我们的用户在表单字段中键入不必要的空格
因此，使用修剪方法，我们可以摆脱这些空白，让我向您展示
现在，当我们修剪时，我要在消息前后添加几个空格
这些空白将被删除看看吧，这是
原始字符串，您可以在开头看到两个空格，这是我们的
修剪后的字符串，所以这些是字符串类中的一些有用方法，但是
这种玻璃杯比我们没有时间讲更多的方法
但是当我们完成本课程时，您将了解有关字符串类的更多信息
Java中的其他有用类第三次将在
我们的字符串，例如制表符或换行符或反斜杠或双引号，因此在此
本教程将向您展示如何在您的广告中包含这些特殊字符
字符串，所以这里有字符串hello Marsh，假设我们要包围
如果在此处添加双引号，那么带双引号的沼泽现在是问题所在
Java编译器认为这是我们字符串的终止，所以它不会
站在那之后我们拥有的就是这就是为什么我们有一个编译错误的修复
问题，我们需要在此双重代码前加上反斜杠
因此，使用此反斜杠，我们又避开了双引号，让我们
现在在这里添加反斜杠双代码，让我们运行程序，看看会得到什么
我们得到Marsh的双引号很漂亮，所以双引号是其中之一
您需要知道的其他特殊字符
是反斜杠，假设我们要将通行证存储到Windows上的目录中
机器，看起来像这个C盘
反斜杠Windows反斜杠现在无论您要将其存储在字符串中如何
需要转义每个反斜杠，让我告诉你，所以C驱动器反斜杠现在我们
Java编译器认为我们在逃避
此处使用double代码，因此它认为我们的字符串未以另一个double结尾
代码，但这不是我们想要的，您想要在此处添加反斜杠，因此我们需要
给我们的反斜杠加上另一个反斜杠的前缀，现在我们再输入一次Windows
时间，让我们运行程序，即使我们有两个反斜杠
我们的代码实际上在其他转义符的终端窗口中看到一个反斜杠
序列反斜杠N，我们使用它在字符串中添加新行，因此
将其更改为反斜杠N并运行程序以查看现在发生了什么
字符串由第一行分为C行
那么我们就拥有Windows，因此无论我们在哪里使用反斜杠n Java都会插入一个新的
行，我们还可以在字符串中添加一个制表符
因此，如果您在此处添加反斜杠T，将出现一个选项卡，表示C驱动器和
Windows让我们看一下，所以C驱动器在这里有一个选项卡，然后是Windows
在Java中，我们还有其他一些转义序列，但老实说，它们是
很少使用，因此请记住我们在本节中介绍的这四个转义序列
教程
在本教程中，我们将讨论Java中的数组，我们使用数组来
存储项目列表，例如数字列表或人员列表或列表
消息让我告诉你，所以在这里我们有一个要转换的整数变量
这是一个整数数组，所以在int之后，我们添加了方括号，现在我们有了一个
编译错误，因为我们在此数组中存储了一个数字，以便修复
我们需要删除一个，因为数组是我们需要的引用类型
在这里使用new运算符，然后再重复一次输入a，然​​后在这里
在方括号中，我们指定此数组的大小或长度
我们要包含在该数组中的项目假设还有五个
从第二个数字更改此变量的名称，因为我们正在处理
带有项目列表，因此请始终注意变量的名称
现在您可以使用索引访问此数组中的单个项目，因此我们键入
数字方括号引用第一个元素或第一个项目，我们使用零
现在我们可以将其设置为类似1的值，我们可以将第二项设置为
2现在如果我们使用无效索引怎么办呢？假设10这个数组没有10
项目，所以让我们看看当我们运行10时，我们说3时发生了什么
程序，我们得到一个异常异常是Java报告错误的方式，因此在
这种情况下引发了异常，我们的程序崩溃了，我们将讨论
本课程稍后将详细讨论异常，因此现在让我们删除最后一行，
treinta对不起，所以标签号让我们看看我们
得到我们得到这个奇怪的字符串
数组中的项目是我们打印数组Java时默认的原因
返回基于此对象地址的字符串
内存，所以如果您有另一个数组并且我们打印出来，我们将看到一些东西
不同，因为每个对象现在都将位于不同的内存空间中
我们如何才能很好地看到此数组中的实际项目，我们在Java中有一个类
所谓的数组让我向您展示数组，因此此类是用Java定义的
那个util包，让我们现在按ENTER键。
因此我们可以使用点运算符访问此类的成员，这里我们有一个
如您所见，该方法现在称为两个字符串，该方法实现了多个
因此，在第一个实现中，此方法会在
第二种实现需要一个整数数组，依此类推
此方法实现的基本类型和引用类型
多次，这就是我们所谓的方法重载，现在我们可以称之为
方法并传递我们的整数数组，这将返回字符串
该数组的表示形式，因此我们可以从此处剪切它，并将其传递给我们
这样的打印方法现在让我们再运行一​​次程序，这是我们的
数组很漂亮，因此前两个项目被初始化，其他项目设置为0
默认情况下，因为如果您有一个整数数组，我们在这里处理整数数组
布尔数组所有项目，如果您有一个默认值，为什么将default初始化为false
字符串数组，所有项目均初始化为空字符串
好的，现在这种用于创建和初始化数组的语法有点
繁琐且语法较旧，如果存在以下情况，则有更新的方法可以初始化数组
我们在这种情况下提前知道了这些项目，所以我要删除这些项目
两行我也要删除新的运算符，在这里我们使用花括号和
在这些括号内，我们将所有元素添加到该数组中，假设现在是2 3 5 1＆4
我们有5个项目，所以这个数组的长度将是5我们可以读到
使用长度，所以如果我们输入数字点，请看这里
充满了，看看它是一个F图标，这是一个像
类中的变量，并且此字段的类型为整数，因此返回
该数组中的项目数让我们获取并使用我们的打印方法进行打印
像这样看一下，所以我们现在得到了五个Java数组，它们的大小是固定的，所以一次
我们创建它们后，我们无法向其中添加或删除其他项，因为它们具有
如果您希望能够添加或删除其他内容，则为固定长度
数组，您应该使用我们将要讨论的集合类之一
在本课程的稍后部分，我要记住的是数组有一个
固定长度，目前我们的数组未排序，这些数字在某些位置
一种随机顺序，我们可以使用
数组类让我告诉你，所以我要删除此行并调用数组
点排序再次，您可以看到此方法被重载，因为它
用不同的参数类型实现，因此我们调用此方法并传递
现在，当我们运行该程序时，我们的数字数组可以看到
我们的数组很漂亮
是的，我了解到我们使用数组在Java中存储对象列表
也可以创建多维数组，例如，我们可以创建一个
二维数组来存储矩阵，或者我们可以创建三维
数组，用于存储多维数据集的数据这些在科学计算中很有用
向您展示，所以在这里，我们有一个一维数组将其转换为
二维数组，我们现在需要添加另一对方括号
出现编译错误，因为我们需要在另一个上重复这些括号
因此，假设我们要创建一个2 x 3矩阵，所以我们需要2行3列
在这里添加其他括号并将这些长度更改为2和3，所以现在我们有了
现在需要2行3列来访问此数组中的单个项目
提供两个索引，首先提供该行的索引，以便我们可以转到第一行
然后将第一列并将其初始化为1现在我们将其打印为
所以您再次点击我们使用数组类点字符串并传递此
对象再看一次，我们变得很奇怪
字符串，因为这里我们要处理一个多维数组来解决这个问题
问题，我们需要在此类中使用另一种称为“深度使用字符串”的方法
这是用于打印多维数组的，现在来看一下
有两行的矩阵，每一行有三列，我们也可以
创建一个三维数组，我们要做的就是添加另一对
括号并指定尺寸的长度，现在非常简单
花括号语法让我告诉你，让我们将其恢复为两个
维数组，我们将摆脱新的运算符，并使用花括号
现在让我们说在这个矩阵中，我们将有两行三列
行本身就是数组，因为它是项目列表
所以我们在这里添加另一个数组，假设1 2 3然后用逗号添加第二行
这是该行的另一个数组，我们将有3个数字4 5＆6
现在让我们删除此行，我们不再需要它并打印此数组，因此
这是最终结果，您已经了解了很多有关变量的知识，您了解到，当
声明它们，我们需要初始化它们，我们可以随时更改它们
在我们程序的整个生命周期中更有价值，但是有时
我们不想改变变量的值，例如，让我们
声明一个名为pi的变量并将其设置为3.14现在我们需要在其中添加一个F
将此表示为浮点数，因为默认情况下Java编译器会看到此数字
作为小数，现在您知道我们使用pi来计算圆的面积
如果在我们计算圆的面积之前我来到这里并键入pi等于
1然后我们所有的计算都搞砸了，我们不希望这样
发生这种情况的时候我们使用常量，所以如果我们在此处键入final，Java编译器将
将此视为常量，因此一旦初始化，就无法更改
稍后您可以看到这里的值，我们有一个编译错误，它说不能
为最终变量pi赋值，因此pi现在是最终变量或常量
按照惯例，我们使用所有大写字母来命名常量，因此这应该是PI
现在很美丽，我在我的一门早期课程中告诉您一个小故事
在几年前创建的那是初学者的c-sharp基础知识
教常量概念的同一示例，但我将此单词发音为P
而不是Pi，不管你信不信，今天人们都为我取笑
说P而不是Pi，但这就是我们在伊朗重新学到的方式，
作为P，我认为希腊人也说P，但无论如何我只是想分享
这个视频可以改变心情，现在您已经完成了常量操作，接下来我们将
谈论算术表达式
在本教程中，我们将讨论Java中的算术表达式，因此
在Java中，我们拥有与数学中相同的算术运算符
加减乘除和模是
除法的其余部分，让我们看一些示例，以便我声明一个
整数，称为结果，在这里我们可以在打印结果时键入10加3
你去那将是13个非常简单的地方，所以这也是我们
有减法乘法除法是一个有趣的事情，让我们来看看
所以这里的结果是一个整数，因为在Java中将两个数相除
如果要在此处获得浮点数，则整数就是整数
您需要将这些数字转换为浮点数或双精度数，让我告诉您
所以我们给这个数字加上括号，然后在括号中输入
现在，我们正在将该数字转换或转换为类似的两倍
应该在这里做，现在我们有一个编译错误，因为在左边
一边我们声明了一个整数，但是这里这个表达式的结果是一个double
顺便说一句，表达式是一段产生值的代码，所以我们
这里有一个表达式，因为它产生一个值，因此可以解决此问题
我们需要在运行该程序时将其更改为现在的两倍
浮点数很漂亮，所以这些是算术运算符，而这些
我们在这里拥有的数字称为操作数，我们也有增量和
减量运算符让我告诉你，所以我要声明一个新变量int X
我们现在将其设置为1，如果您想将x的值增加1，我们使用
增量运算符现在让我们在终端上打印它，以便我们得到2
我们可以将此运算符用作后缀或前缀，我们得到相同的结果
结果也看一下，但是如果我们使用这个
在赋值运算符的右侧，我们得到了不同的结果
告诉你，所以我要声明另一个变量Y，我们将其设置为X plus plus in
这种情况是因为我们首先将增量运算符用作后缀
x的值将被复制到Y，所以Y将为1，然后X将为
加1，所以如果您打印x和y，x将是2，Y将是1
看起来X等于2，Y等于1，但是如果将其用作前缀
第一个X将增加1，因此它将是2，然后将其复制到
Y，所以在这种情况下，两个X＆Y都会一起看，所以我们得到两个
现在有两个，如果您想将X增加一个以上，该怎么办
通过两种方式，有两种方法可以执行此操作，让我们删除不需要的Y
它可以写出x等于x加2了，所以首先我们将2加到X上，结果将是
是三个，然后三个将被复制到X中，另一种方法是使用
增强或复合赋值运算符，因此我们可以写X加等于
我们在第8行上拥有的两个与我们拥有的完全相同
如您所见，第七行还比较短，所以这是一种更好的书写方式
现在是相同的代码这是我们拥有的增强赋值运算符之一
其他算术运算符的增强赋值运算符，因此我们可以
类型X减等于2，这会使x的值减少2，我们也有
乘法和除法，所以这些是增强或复合分配
运算符现在我在这里有一个问题要问您，我们已经声明了
变量X变为10加3乘以2您认为这是什么结果
表达式的结果是16让我们运行该程序并查找，以便在那里运行
你走了，我们有16岁，但是为什么这是一个非常基本的数学概念，
不幸的是，很多人在数学上不知道乘法和除法
运算符具有更高的优先级，因此在此示例中，它们首先被应用
表达式3乘以2，首先计算结果为6，然后将6加到
10就是为什么如果您想更改这些运算符的顺序，我们现在得到16
您可以始终使用括号，例如，如果您希望此表达式
首先被评估，我们将其括在括号中，就像现在这样
编译器将首先对该表达式求值，结果将为13并且
然后13乘以2，我们得到26
你去那里，所以要知道这些操作括号的顺序总是
最高优先级，那么我们就有乘法和除法，最后
我们将在本教程中进行加减运算
转换和类型转换，所以我要声明一个简短的变量调用X并设置
将其设置为1，然后我将声明一个名为Y的整数并将其设置为X加2
在本例中，我们将整数添加为short，您认为结果如何
会好起来的，让我们看一下，所以让我们打印Y，我们得到3
您的期望是什么，但让我解释一下
之所以要执行该表达式，是因为我们要处理两种不同的类型
的值之一是短整数，另一个是整数，这些值之一应该是
转换为另一种类型，所以它们相等现在我有一个问题要问你
我们在短变量中有多少个字节，我们有2个字节，多少个字节
我们是否有一个整数4字节，所以我们存储在short变量中的所有值
也可以存储在一个整数变量中，这样当
代码将要执行，这就是首先要看的Java
这个变量的值是1，它将分配另一个变量
内存中某个地方的匿名变量，我们不知道那是哪里
不知道该变量的名称，它没有一个匿名名称，
变量是整数，然后Java将x的值复制到
该内存空间，然后它将这两个数字加在一起，这就是
我们称之为隐式强制转换，让我在此处键入隐式强制转换，这意味着
自动转换或自动转换，我们不必担心
只要有值就可以将其转换为数据类型
较大的转换或转换会隐式或自动发生，因此
字节可以自动转换为short，也可以转换为int
现在好了，浮点数呢
让我们看一个示例，我将其更改为双1点
现在在这里我们有一个编译错误，因为在
赋值运算符，我们有一个浮点数
左侧，我们有一个整数，所以我们需要将其更改为现在的两倍
执行此代码，我们将得到3.1让我们验证一下，现在开始吧
看看在这种情况下，投射在这里是如何发生的。
整数整数不如双精度，因为在双精度中我们可以拥有
小数点后的数字，因此在此示例中，Java将
自动将此整数转换为双精度数，以便成为零的两点
然后将两点零加到一个点就可以了，所以回到此链
在这里，我们要浮起来，然后再加倍，这是一般的经验法则
每当您不丢失数据时都将发生隐式强制转换
现在要解决数据丢失的问题，如果您希望Y为整数，那么在此示例中，我们
不要在意小数点后的数字
终端我们应该如何做到这一点，这是我们应该显式转换
结果，因此我们应该将X强制转换为这样的整数，将其括入int这是
显式转换我们将X转换为整数，因此结果将为1
如果没有小数点，则将1加到2，将Y加上3，取一个
看那里，所以这就是隐式和显式转换的全部
显式转换只能在兼容类型之间发生，因此所有这些类型都是
兼容，因为它们都是数字，但是我们不能将字符串转换为数字
换句话说，如果X是这样的字符串，那么说1
我们不能将鸡蛋转换为整数，因为它们不兼容，如何
我们对所有这些原始类型都做得很好吗
已经了解到您有包装器类，因此在Java中，我们有一个类
引用类型，称为整数，此类在Java Lang包中定义，并且
在此类中，我们有一个称为parse int的方法，因此该方法需要一个字符串
并返回一个整数，因此integer是int基本类型的包装器类
我们也有short，在这个类中我们有parse short，所以它需要一个字符串
并返回类似的short，我们有float和double，显然是名字
这些元数据是不同的，所以这里我们解析浮点数，回到这个例子
假设我们以字符串形式获取X，并将其转换为整数，这是
我们如何做到整数点解析int我们在这里传递X
然后添加它看看，我们得到3您可能会好奇为什么这很重要
我们为什么要解析或将字符串转换为数字以将其添加到其他内容
在大多数用于构建用户界面的框架中，无论您是
建立我们一直以来的桌面，移动应用程序或Web应用程序
从用户那里接收作为字符串的输入，因此，如果您有一个包含一堆字符串的表单
文本框或下拉列表中，几乎总是以字符串形式获取值，因此
这就是为什么我们需要将这些字符串转换为数字表示形式的原因
好的，现在如果X是浮点数怎么办？
将此解析为整数，让我们再次看一下
异常，这就是Java向我们的程序报告错误的方式
将来详细讨论异常
因此，如果用户输入一个点，我们将无法使用此方法，而应该
使用float或double可以说double，因为这样更容易进行double解析
double，因此我们将此数字解析为double，然后将其加2，然后存储
导致翻倍，然后我们将得到3.1
美丽的下一个我们要看数学课
在本教程中的操作中，我们将看一下用于执行的数学类
数学运算，因此在Java中，我们具有在
Java那个Lang包，所以它总是存在，我们不需要显式导入
现在该类有许多有用的方法，我要展示的第一个方法
您是四舍五入方法，因此我们可以将浮点数四舍五入为
整数，因此您可以看到此方法已重载，这意味着
在第一个实现中实现两次，它需要一个浮点数，
返回一个int和第二个实现，它需要一个double和
返回一个日志，因此让我们将1.1作为float传递给此方法并存储
结果是这样的整数现在我们打印结果，我们得到一个
美丽的另一种有用的方法是密封或密封，返回的最小
大于或等于此数字的整数，因此1.1的上限为2
现在这里出现编译错误，因为此方法返回一个double值，但
我们将结果存储在整数中，因此在这里我们需要显式转换
到一个整数，现在您可以看到这个数字的上限是2
另一个有用的方法是下限，因此数字的下限是最大的
小于或等于此数字的整数，在这种情况下将为1
让我们看一看，您可以使用另一个有用的方法max来返回
两个值中的较大者，此方法再次被重载，因此在
第一个实现我们得到两个整数，我们很久没有其他实现
浮动和加倍，所以我们在这里传递两个整数，一和二将
返回更大的数字是2，你去类似于这个我们有分钟
非常简单，有用的方法是随机的
再次生成介于0和1之间的随机值，我们会收到编译错误
因为此方法返回一个double，所以我们将其更改为现在每个
当我们运行该程序时，我们得到一个不同的数字，这个数字是
现在，如果要在0到1之间的数字，该怎么办？
假设是100而不是0到1，那么我们只需将其乘以100
因此，每次运行此命令时，如果
我们不希望小数点后的这些数字可以四舍五入
数字或将其转换为整数让我告诉你，以便我们可以这样算算
并传递这个表达式的结果，所以我要把这个加括号切成
调用round方法，然后粘贴该表达式，现在让我们运行此代码
所以每次我们加倍时，这里仍然有分数，因此我们可以更改
类型为INT现在我们有一个编译错误，因为
方法返回一个long，但在这里我们声明了一个整数，这是其中之一
因为我们有一个值是
表示为8个字节的内存，您想将其存储在
只有4个字节的内存，因此隐式强制转换不起作用，但是我们可以使用
显式强制转换，因为我们知道此表达式的结果是一个数字
在0到100之间，因此我们可以肯定地将其存储为整数，因此我们将int添加
现在在这里，让我们再次运行它，你现在走，如果我们不使用回合
方法，让我们看看会发生什么，所以我要删除对回合的调用
方法，然后简单地将这个转换应用到这里，让我们看看我们现在得到了什么
每次我们运行该程序时，我们都会得到0，您知道为什么吗，因为在这里
将此转换应用于此方法调用的结果，而不是全部
正如您在前面每次调用random方法时看到的那样，它会生成一个
0到1之间的数字，所以当我们将该数字转换为
整数，我们将失去分数，我们总是得到零，零乘以100是
零以解决此问题，我们需要将整个表达式包装在
括号，因此我们在此周围加上括号，现在让我运行它，我们得到一个
当我们处理数字时，通常需要0到100之间的整数
将它们格式化为货币值，例如，我们可能会有这样的数字
想象这是产品价格，向您想要显示给用户的价格
在此处添加美元符号，并用逗号分隔每三个数字，或者
您可能有一个像0.1这样的数字，我们想用百分比来表示
值，而不是0.1，您想显示10％，所以在本教程中
将向您展示如何使用Java格式化数字，我们拥有此类的数字格式
用Java定义的文本包中的文本包我们有很多类
用于处理文本日期数字等等，所以我们在这里按ENTER
重要的是，现在我想声明一个变量，所以让我们给
这个变量是一个名称货币，我们现在需要实例化这个新数字
格式，但是这里出现编译错误，让我们看一下数字
格式是抽象的，无法实例化，因此在Java中
抽象类的概念，所以有些类是抽象的，它们是
基本上就像一个半生的蛋糕，我们不能使用new运算符来创建
它们的实例，我们将讨论抽象类以及它们为什么
存在于课程的后期，请记住，我们无法创建
数字格式类的实例，因为它是抽象的，所以有
让我向您展示另一种方法，该类有许多以开头的方法
得到，所以我们得到了货币实例，当我们调用此方法时，
创建数字格式类的实例并返回它，而不是使用
我们将在这里使用此方法的新运算符，这就是我们所说的
工厂方法，因为就像创建新工厂一样
现在，对象将查看此方法的返回类型，它是一个数字格式的对象
好吧，我们现在调用此方法，我们得到返回值并将其存储在
类型数字格式的变量称为货币好吧，我可以说缩放不正确
出来，这样您就可以看到所有代码，在右侧
赋值运算符，我们正在调用get Currency实例方法，
结果是来自对象的数字并将其存储在此变量中
我要放大，以便您可以看到一个清晰的名字
好了，现在更好了，这个对象有一个格式化值的方法
再次您可以看到此方法已重载，我们有多个
我们可以给它加长或加倍，等等，我称之为
这种方法并传递一个像一二三四五六七点的值
八九一，所以我们在小数点后还有三位数和其他几位数
现在，此方法将返回此数字的字符串表示形式
格式化为货币，让我们获取并将其存储在字符串变量中
像结果一样，然后我们将在终端上打印结果，看看得到了什么
所以我们用逗号将美元符号每三位数分开
我们小数点后只有两位数字，所以此类非常
在将数字格式化为货币时很方便，我们还有另一种方法
将数字格式化为百分比，然后立即获取百分比实例
它返回专门用于格式化的数字格式类的实例
数字作为百分比，因此我们需要将此变量从Currency重命名为
现在我们不想手动更改此百分比，因为有多个
对该变量的引用，该其他引用未更新，因此让我展示
如果您右键单击此处，则可以为您在intellij中重命名对象的正确方法
看到这个重构菜单，这里我们已经重命名了，现在在
不幸的是，它在我的录制窗口中不可见，但在右侧
Mac是Shift + F，我一直使用快捷键，因为它们
更快，所以让我们按下shift和f6键，现在我们得到一个红色框，下面是红色框
可以看到一些更好的名字的建议，我们可以选择其中之一或选择
我们将使用自己的名字将其更改为百分比，并注意在输入
其他参考会自动更新，因此这非常有帮助
现在让我们按Enter好吧，我们已经完成了重命名。现在让我们
在这里传递一个不同的值，所以假设我们有一个像0.1这样的数字
将其格式化为百分比让我们运行程序，您得到10％
现在让我给你展示一个很酷的技巧
确实需要这个百分比对象，因为我们在一个地方使用了它
如果您有多个变量，将其作为单独的变量将是有意义的
引用它，所以我们在这里可以做些什么，我们可以完全摆脱这个对象
因此，让我们删除这段代码，我们基本上是在调用此方法
如您所知，数字格式类此方法返回数字格式对象，因此
在调用此方法之后，在分号之前，我们可以使用点
操作员访问数字格式对象的方法或成员，以便
在这里，我们立即调用format方法并传递我们的值，这就是我们
调用方法链接我们将多个方法链接在一起，所以这是一个
方法，这是另一个方法，现在它返回一个字符串，因此我们可以存储它
在这个结果变量中，让我从此处剪切此表达式并将其放在
现在我们这里有双分号，我要删除其中一个
好的，在本教程中，我将向您展示如何从中读取输入
在Java用户中，我们具有在Java did util中定义的此扫描程序类
包让我们导入它并创建一个扫描仪对象，所以现在这里有新的扫描仪
在此括号内，我们需要指定要从中读取数据的位置
我们将从终端窗口中读取它我们将从文件中读取它
或使用终端窗口的方式，我们在其中键入系统点是
我之前告诉您的系统类中的字段就像一个变量，
我们在一个类中定义，因此我们拥有系统，我们也拥有系统
我们以前在终端上打印一些东西，现在让我们使用
输入并以分号终止该语句，现在该对象有一堆
读取数据的方法，所有这些方法都从next开始，因此我们有了next
字节，用于读取一个字节，我们有下一行字节，用于读取我们的下一行，
布尔值以结束布尔值，依此类推，所以我们调用下一个字节方法，
看看我们得到什么返回一个字节值，所以我们可以
将其存储在字节变量中，假设某人的年龄，然后将其打印在
终端说你加h，所以在这里我们将一个字符串和一个字节连接起来
在这种情况下，我们将具有隐式强制转换或隐式类型
转换，因此Java会在此处托盘自动转换此字节变量
字符串，以便可以将它们添加在一起好吧，现在让我们运行该程序，看看
发生了什么，所以在终端窗口中，我们可以输入20 enter，它说
您的20个漂亮，但这很无聊，让我们在此处添加标签并询问
例如，用户在读取数据之前先键入一些内容，我们将其称为
打印行方法并说出年龄：现在让我们运行程序，以便我们得到
标签在这里，但是我们键入的任何内容都会出现在下一行，这是因为
打印线方法在此标签后由苏联人添加新行
回想一下打印方法，现在让我们再运行一​​次程序，
弹出框，因为我们的程序尚未完成执行，所以我们需要告诉
您想要立即停止并重新运行该程序的IntelliJ
类型出现在此标签的前面美丽ENTER，我们现在20岁了
如果我们输入一个像20点1这样的浮点数，则会得到一个异常，因为
如果要获取浮点，则此方法只能解析白色值
我们需要打电话给下一个float或下一个double如果您想阅读我们的数字
我们没有下一个字符串我们有下一个和下一行我们来看一下
差异，所以首先我要在这里调用下一个方法
编译问题，因为此方法返回一个字符串，我将更改此字符串
串起来让我收起来更好
我们还应该重命名该变量，所以快捷键Shift + f6现在是什么
让我们训练一个名字，输入一个漂亮的名字，最后一次我们也应该更新
标签名称运行程序，所以我要在此处键入我的名字
这次您的Amash会再下一次我要输入我的
全名玛哈·马达尼（Maha Madani），但我们没有姓氏，这是这些的原因
我们在这里进行的战争每次称为下一场战争时都称为令牌
它读取一个令牌的方法，所以这里有一个空间，我们有两个令牌，我们
我们第一次需要调用两次next方法来获取全名
叫它返回沼泽，第二次我们叫它返回Hamid ani，然后我们
需要将这套西装结合在一起，这是不理想的，所以当我们使用
使用此方法的下一行方法，我们得到用户未输入的反行
不管有多少空格或制表符，马什
逗号Donny，我们现在得到全名，如果我在我的空格之前输入几个空格怎么办
名称，让我们看看会发生什么，以便那些空格也出现在此处，
这看起来有点奇怪，这是我们使用trim方法的地方，请记住
修剪，我们可以删除字符串之前或之后的所有这些空白，因此
下一行方法返回一个我们要存储在此变量中的字符串
现在在将结果存储在此变量之前，我们可以使用点
运算符访问此字符串对象的成员，因此我们调用trim方法
然后将结果再次存储在此变量中
这里有多种方法，让我们运行程序，以便在Maharani和您之间留一些空格
得到这个美丽的输出
现在是时候进行一个项目了，我希望您使用从中学到的知识
部分并构建像这样的抵押贷款计算器，以便在您运行该程序时
我们有几个问题，第一个问题是本金或金额
我们想获得的贷款金额为100,000美元，第二个问题是
年利率让我们说三点九百分之二三
问题是几年的期限，假设您想获得三十年的贷款
因此，此程序会计算我们的每月付款并将其显示为货币
这是锻炼您学习所有材料的绝佳练习
现在开始本节之前，我想给您一些提示，这里是
我在此页面上计算抵押或每月付款的公式
Wiki上的comm是如何计算抵押贷款付款的，所以让我们看看
工程抵押贷款等于P或本金，或者我们要贷的金额乘以
用R（这是我们的每月利率）非常重要，因此该数字
我们到达这里是我们的年利率，我们还需要将其除以12
考虑到此数字表示为要计算的百分比
您需要将该数字除以100的实际利率
例子利率是零点零三九二二所以无论用户
输入除以100，然后除以12得出月利息
现在我们有这个月利率我们需要乘以这个
在这里表达式，我们需要将这个利率加1并提高到幂
的n，其中n是付款次数，因此我们需要将此数字乘以12
或12个月来计算现在的付款次数，以将该数目提高到
n的幂需要使用数学类的幂方法，因此此数学
类具有此power或power方法，该方法带有两个参数或两个值
和B，所以继续练习十到十五分钟，
你做完了回来看看我的解决方案
好吧，让我们看看我在这里做了什么，顺便说一句，不用担心你的外套
与我的不同，我们都认为和穿着不同
如果您的代码不同，那会很好
看看我的外套，看看我在这里做了什么，看看是否有办法
改善你的外套是很重要的，所以在这里
首先，我声明了两个最终变量或常量
第一个是一年中的几个月，我将其设置为12，第二个是
我将其设置为100的百分比我声明此常数的原因是
不想在代码中包含幻数，所以在这里我们
计算每月的利息，我们得到的年度利息除以百分比
然后几个月的时间里，这段代码非常不言自明
阅读此代码，我们将毫无疑问地了解这里发生了什么
如果您有一个神奇的数字，例如12除以
其他人阅读此代码会想知道在这里做什么是什么
对您来说很明显12是一年中的月份数
相信我，有时候其他人看不到这个，所以最好
练习避免代码中的幻数始终使用常量或最终形式
变量来描述它们，所以让我们将其恢复原样吧
声明此常量后，我在这里创建了此扫描器对象
第一个问题原理，我们将答案读为
我认为整数是一个很好的数据类型
存储原理是因为短是不够的，短我们可以存储一个
最高$ 32,000这还不够，如果有人想找到我们
$ 1,000,000，所以int是好的，它使我们可以存储高达20亿的值
接下来，我们问第二个问题，即年利率
在这里我可以使用double，但是利率是一个很小的数字，所以float是
足够了，我们真的不需要加倍，所以我们得到了年度利息，
然后基于此我们可以计算出每月利息
为我的变量命名所有变量都有一个适当的有意义的名称，没有
像MI这样的魔术词，它是每月利息的缩写
或m1或m2不要使用魔术名称，因为您的变量始终使用有意义的
描述性名称好，接下来我们得到以字节为单位的句点
因为我们要支持的最大数目是30，所以一个字节就足够了
根据年数存储数字30或现在更小的数
我们计算付款次数请注意我在这里用大写的骆驼符号
每个单词的第一个字母（第一个单词除外），因此我们得到了地球的
x个月再次在这里的代码是非常不言自明的
一旦我们收集了所有这些数据，便计算出抵押贷款，因此我们得到了
主体乘以该表达式，然后除以另一个
表情让我们快速浏览一下现在看起来有点复杂
因此，如果您不下载我的源代码，请看下面的视频
供您下载，最后在计算抵押金后，我们使用数字
format类，用于将该值格式化为货币，因此我们将结果存储在
这个字符串抵押格式化它并在这里打印出来，这里我们也可以避免
声明这个变量，然后在这里简单地添加这个表达式，但是它决定了
这样做以增加此代码的可读性，否则此行将
这么长，但这只是我个人的喜好，您不必遵循这一点
好吧，这就是我对抵押计算器的实现
但是该程序有很多问题，第一个问题是输入
验证，因此如果我们运行此程序并输入非数字值（例如XYZ），则程序
崩溃或作为另一个示例，如果我们在程序中输入负值
将无法正常运行，所以这就是条件语句
在下一节中我们将讨论条件语句
将学习如何使用这些语句来验证由
用户，这使我们到本节的结尾，希望您能学到很多知识，
谢谢你的收看
因此，在本节中，您将学到所有关于变量和常量的知识
关于基本类型和引用类型，您将了解基本类型存储简单
值，但引用类型包含对复杂对象的引用，这就是为什么
我们称它们为参考类型，您还将了解有关转换和类型转换的信息
您将了解隐式和显式两种类型的转换，您将学习如何
使用数字字符串和数组，最后您学会了如何读取输入
我希望从航站楼学到很多东西，到目前为止我一直很喜欢这个课程
在下一节中，我们将研究条件语句
控制我们程序的流程，以便在下一节中介绍您
[音乐]
嘿，玛西娅，我只是想快点
宣布您一直在观看的这门课程实际上是我的开始
在本课程中完整的Java系列文章中，我们仅讨论基础知识，但是在我的课程中
完整的系列文章，我们会做得更多，所以如果您对Java认真的话
寻找Java开发人员的工作我强烈建议您注册我的
完整的Java系列，它的结构完全相同，质量相同，但是
有更多内容的途径，您还将获得结业证书，可以
添加到您的简历，所以如果您有兴趣，我将链接放在您下方
可以打折获得该课程，如果由于任何原因您不满意，您可以
可以在前30天内要求退款，所以我希望能在课程中见到您
在本节中，我们将研究控制流程或控制流程
执行我们的程序，您将从谈论比较开始
用于比较值的运算符，然后我将讨论诸如
逻辑与逻辑或与逻辑不，我们将这些运算符用于
实施现实世界的规则，然后我们将讨论三种不同的
我们将要讨论的条件控制语句类型
在程序中做出决策的声明，然后我们将讨论
循环重复执行代码，最后我们将重新讨论
抵押计算器并向其中添加错误处理
因此，如果用户输入的值无效，我们会继续要求他们再次尝试
现在让我们开始吧，我们将通过谈论开始本节
关于比较运算符，我们使用这些运算符来比较原始值
例如我们在y上的x相等或不相等，所以我要声明两个整数x和y
现在让我们比较一下，看看它们是否相等
所以首先我要添加此打印行语句以比较这些变量
我们输入x等于y，所以这里有两个等号，这就是等式
运算符不要将此与我们用于的单个等号混淆
分配是在这里使用的运算符好，所以两个等号
我们运行时立即修复Equality运算符
这个程序之所以成立，是因为这些值等于这个表达式，
这里有一个布尔表达式，所以我之前告诉过你一个表达式
是一段产生值的代码，这段代码产生一个布尔值
值true或false这就是为什么我们将其称为布尔表达式
有不等式运算符，所以当我们运行该程序时，我们将看到false
让我们看一下我们得到的是假的，因为这两个变量相等，所以
表达式X不等于Y返回false我们也有大于大于
小于等于小于和小于等于所以如果我将Y更改为2
由于X小于或等于Y，因此表达式将为true
看一看，然后继续，我们将讨论逻辑
在上一教程中，您将了解一个布尔表达式会产生一个
布尔值现在有些时候我们想合并多个布尔值
表达式让我告诉你，所以我将声明一个称为温度的整数
并将其设置为22接下来，我们声明一个布尔变量为暖，现在我们想
检查温度是否大于20且小于30，所以我们写了一个
布尔表达式，例如温度大于20，在这里我们需要使用
最终运算符，因此这两个“＆”号代表逻辑和
Java之后，我们添加第二个条件
如果这两个条件都成立，则温度现在低于30
这个布尔表达式将是正确的
否则，如果其中至少一项为假，则结果为假。
看一下，我将在终端上打印温暖
结果是正确的，但如果您将温度更改为12
将是错误的，这就是它的工作方式Java将评估此表达式
从左到右首先查看第一个条件，第一个条件是
否，因为温度不大于20，所以因为此表达式是
false和and运算符Java将忽略之后我们拥有什么都没关系
其他表达式，因为如果两个操作符和操作符都将返回true
条件是正确的，现在让我们看看另一个运算符
运算符，所以我将删除所有这些代码，并以一个新示例开始
声明布尔值高的收入，我们将其设置为true，而另一个布尔值的高收入
信用，我们也将其设置为true，所以说我们正在构建一个应用程序
为了处理贷款，我们想看看新申请人是否有资格获得贷款或
不是，所以我们声明另一个布尔值是
合格，顺便看看我为这些变量使用的名称
它们非常有意义且具有描述性，因此这是申请人的规则
如果他们具有高收入或良好信誉，并且符合以下条件之一，则符合条件
没错，他们有资格，所以我们写的收入很高，所以这两个垂直
条形代表或运算符，因此，如果他们的收入较高或信誉良好
那么他们符合资格，所以如果至少一个条件是
true在本示例中，当Java评估结果为true时，结果为true
从左侧开始的表达式，此布尔变量为true，因此它
紧随Java之后的其他内容，我们不会评估其余的内容
表达式，它只是返回true，但是如果此变量为false，则Java
会继续评估此表达式，希望下一个布尔值
值或下一个布尔表达式为true，因此这是or运算符，
最后，我们有一个not运算符，我们用它来反转一个值，让我告诉你
怎么运作的
让我们声明另一个布尔变量具有犯罪记录，我们将其设置为false
所以这是我们要实施的规则，以便某人有资格
他们应该是高收入或良好信用的贷款，他们应该
没有任何犯罪记录，所以让我们看看如何执行此规则
已经实施了第一部分，他们应该有高收入或良好
现在，我们要确保他们没有任何犯罪记录，所以我们
需要使用以下方法将此表达式的结果与此布尔值进行组合
and运算符，因此我们首先将此表达式用括号括起来，然后应用
最终操作员，您要在此处添加犯罪记录
确保他们没有犯罪记录，这就是我们使用not运算符的地方，因此
not运算符将反转此布尔变量或表达式的值
在这种情况下，此变量设置为false，因此当我们应用not运算符时
对于它，结果将为真，因此，如果第一个条件为真，第二个条件为真
条件为真，则该人有资格获得新贷款，因此您可以
看到这些逻辑运算符在实现实词规则中非常有用
接下来，我们将讨论本教程中的if语句
查看Java中的if语句if语句非常重要
因为它们使我们能够构建可以基于某些因素做出决策的程序
条件这是此文件中的一个示例
温度大于30，也许您想显示两条消息到
用户在炎热的日子里要喝大量的水，否则，如果介于20和
30您想打印这是一个美好的一天，否则我们想打印这是一个寒冷的日子
今天，让我们看看如何在Java程序中实现这些规则
我们的主文件首先声明一个可变温度，现在将其设置为32
我们在其中使用if语句，后跟一对括号
括号中，我们键入一个表达式或布尔值，所以
假设现在temp大于30如果条件成立
在执行if语句之后我们拥有的，所以让我们打印一下
一天，我们运行程序，因为温度更高，我们会收到此消息
现在超过30，如果您想打印另一条消息，例如喝大量
在这里水，我们应该添加花括号来定义代码块，所以如果这种情况
是的，我们在此块中拥有的所有代码都将执行，
在这里添加另一条消息喝水好，所以这是我们现在的第一个条件
让我们添加第二个条件，以便在右大括号之后再次键入LS
我们添加括号，并在这些括号内键入一个布尔表达式
如果10大于20并且小于或等于30
您想在这里打印另一条消息，例如美丽的一天，我还没有
添加了花括号，因为我们只有一个语句，所以花括号仅
如果我们现在有多个语句是必需的，这有点争议
有些人认为无论是否有一个，我们都应该加括号
声明或其他不喜欢我的人相信这会造成不必要的影响
本教程代码中的噪音我要先添加大括号，然后再添加
删除它们，这样您就可以看到区别，让我们添加一对卷曲的
在这里支撑，最后是我们的最后一个条件，所以如果这两个都不
条件是真实的，让我打印不同的消息，所以我们在这里键入
LS我们没有其他条件了，所以我们添加一个代码块并冷打印
现在让我定义一些术语这里我们有一个if语句
语句包含三个子句或三个部分，这是这里的第一个子句
第二条和第三条要注意格式化
这个if语句，所以首先我们有if子句，else if
而else子句放在这些右括号之后，因此我们有某种
在这里，我们有一个父级，后面是两个孩子，现在让我们开始
消除这些不必要的花括号并重新格式化我们的代码以查看区别
所以我要去掉else子句的花括号，在这里再删除一次
更好，现在我们可以简化这个布尔表达式了
需要这段代码，这是第一个条件不是的原因
true这表示温度小于或等于30
所以这里的表达式是不必要的，让我们删除它并简化我们的代码
现在最好查看一下如何在顶部显示此代码的格式（如果
否则，如果条款有点缩进，但其他条款没有缩进，则为
与if子句处于同一级别，这看起来有点难看，代码是
不对称的，所以如果您想摆脱花括号，是一种更好的方法
格式化此代码就像这样，所以不要添加else if or else类
花括号之后，我们将它们添加到新行中，现在所有这些子句都位于
相同级别的代码在本教程中更易于阅读，我将向您展示一个非常
简化if语句的很酷的技术，所以让我们首先声明一个
变量称为收入，现在将其设置为120,000，我们可以使用
在这三个数字之间加下划线以使我们的代码更具可读性，现在让我们
说如果我们想声明一个布尔变量，该变量具有高收入，
收入超过$ 100,000，您需要将此设置为true，否则我们希望
将其设置为false，以便在这里我们可以编写一个if语句，如果收入为
大于100,000美元，我们想要设置的收入很高，但是我们得到了
编译错误在这里，让我们看一下声明
在这里允许，所以我们不能在这里声明变量
只能在这里的代码块内声明变量
要声明此变量，我们需要添加大括号以定义新的代码块
现在我们有一个不同的问题，我们定义的这个变量的作用域
到此代码块，因此仅在此处可用，我们无法访问它
在这个区块之外让我告诉您，如果我们打印的收入高，您可以看到
我们有一个编译错误无法解析符号具有高收入，因为
该变量在声明它的块之外不可用，因此
为了解决这个问题，我们可以在设置此块后声明此变量
布尔值很高，然后我们现在可以在此块中将其设置为true
我们不再需要这些花括号，因此我们简化代码，添加一个else
子句，否则我们说过高收入来虚假，让我们删除此打印方法
我们不再需要它，所以这是实现此方案的一种方法，但是
代码看起来很业余，专业的程序员不会写
这样的代码让我们逐步改进它，一种改进方法是
这个布尔变量是一个初始值，例如我们可以将其设置为false
最初，然后我们执行此条件，因此，如果收入大于
$ 100,000，然后我们将此变量设置为true，我们不再需要其他
条款，这是一个改进，但它是
在这种情况下还是不理想的，如果
此处的声明让我向您展示，而不是硬编码为false，我们在此处输入
表达式收入大于$ 100,000，所以这里有一个布尔值
如果此布尔表达式的计算结果为true，则为此布尔变量
将是正确的，否则它将是错误的，所以这是最简单的
现在最优雅，最专业的方法来实现此方案
在完成本教程之前，我还有更多改进
个人更喜欢将此表达式用括号括起来，即使
从技术上讲，我们这里不需要括号，但是这些括号构成了我们的代码
更清晰，更易读，让我向您展示，以便将其包装在
括号现在很明显，我们显然在这个右边
赋值运算符在本教程中，我们将有一个布尔表达式
看一下Java中的三元运算符，所以我们将继续该示例
在上一个教程中，我们有这个收入变量，想象这是
收入或客户现在取决于他们的收入
您想将这些客户的收入分成不同的类别
超过100,000美元，您想将它们放在头等舱，否则我们想
将他们纳入经济舱，所以这是实施方案的一种方法
声明此字符串变量的类名称，请注意，我们无法调用此类
因为class是保留关键字，所以类名现在我们写第一个
条件，如果收入大于$ 100,000，我们说的是班级名称
否则我们将其设置为经济
现在，当您在上一教程中学习时，此代码看起来非常业余
专业的程序员不会像这样写代码，所以一种简化的方法
这是给这个变量一个初始值，所以我们假设它们在
经济舱，然后我们检查此条件是否为真
将它们放在第一类中，这样我们就可以摆脱掉else子句
现在更好，在上一个教程中，我向您展示了如何简化
更进一步，但是您在此处学到的技术无法在这里使用
我们不能在这里增加超过100,000美元的收入，因为在这里我们有一个
布尔表达式，但在左侧我们声明了一个字符串变量，因此我们
想要根据此结果将其设置为其他字符串
表达式，这是我们使用三元运算符的地方，所以我们从我们的
条件，然后我们输入一个问号，如果此条件为真，则添加
值，否则我们添加另一个值，因此此问号和冒号是
Java中的三元运算符首先有三个部分
如果此条件为真，则将返回此值并将其分配给我们
类名为变量的类，否则将返回该其他值，现在我们可以
完全摆脱此if语句，因此将三元运算符放入您的工具中
框非常有用，接下来我们将在Java中查看switch语句
在本教程中，我们将介绍Java中的switch语句，我们使用三个
语句根据代码的值执行代码的不同部分
表达式有点类似于if语句让我向您展示，所以说
我们将编写一个程序并检查当前用户的角色，然后
我们将打印不同的消息或为它们提供不同的功能，具体取决于
在他们的行上，所以让我们声明一个名为role的字符串变量，然后在此处进行设置
现在要管理员检查用户角色，我们可以编写一个if语句
像这样，如果角色等于管理员，那么也许
我们想打印您现在是管理员，您可能想知道为什么我们有这个
这里的条件很明显，因为我们有
将角色设置为管理员，但这仅是为了在实际程序中进行演示
不会在这里硬编码这个管理员，所以我们将阅读当前的角色
来自其他地方的用户，我们不知道当时的情况
编写代码好，所以这里有一个条件
让我们写另一个条件，如果角色等于主持人，也许我们想
显示不同的消息，以便您是主持人，最后，如果该角色是
您不想打印这些值，您是访客，所以这是一种方法
使用if语句实现这种情况，我们也可以实现
使用switch语句，有时看起来更干净一些
向您展示，所以我们从switch语句开始，然后添加括号和
在此括号内，我们在此案例行中添加变量，然后定义
一段代码，在这一段中，我们添加一个或多个case子句，因此我们有一个
管理员的情况下，我们现在在此处添加冒号，如果
角色是管理员，您要打印，您是管理员，所以我要复制此行
从这里开始，然后将其粘贴到这里，在此行之后，我们需要添加一个
break语句可以跳出该开关块，然后添加另一个
案例子句，所以案例主持人再次让您有了冒号，我们将在这里
打印此其他消息，以便我们将其粘贴在此处，然后我们将断开
现在可选地，我们可以在此处有一个默认子句，因此如果这些都不是以前的
案例应用我们在本节中编写的代码将被执行，因此在这里我们
要打印您现在是客人，我们不需要休息
声明，因为我们位于switch块的末尾，所以它将自动
相反，如果我们在这里不使用该break语句，则跳出该块
Java将在此处继续执行这些其他行，因此，如果该角色首先是管理员
它将执行此行，然后将跳转到此case块，它将
执行另一行，然后在执行该break语句后将
跳出这个switch块好吧，这就是我们使用switch语句的方式
现在将此与wave语句进行比较有些人更喜欢使用if语句
其他人则喜欢使用switch语句，现在再完成一件事
在本教程中，我们将比较角色和字符串的值，但我们也可以
使用除long类型之外的其他整数，因此，如果roll是一个字节的short或整数
我们的案例看起来像是这种情况，一种情况是两种，依此类推，现在在这里，我们有一个
编译错误，因为roll是一个字符串，让我们将其更改为整数
我们可以将其初始化为一个，这样您就可以通过甜美的语句看到
根据表达式的值执行不同的代码
现在是该练习的时候了我要给你的练习是
流行的面试问题，所以我希望您编写一个行为类似的程序
如果可以将这个数字除以五，我们应该在这里输入一个数字
因此，如果您再次运行该程序并再次输入10，我们现在可以适应
这个数字可以被3整除如果这个数字可以被3整除，我们将得到嗡嗡声
五个和三个，就像十五岁或三十岁，或者我们得到的嗡嗡声，如果这
数字不能被五或三除尽，就像两个一样，我们得到的数字相同
在终端上，所以继续练习，花五到十分钟
您接下来会看到我的解决方案
可以先读取号码，我们需要使用扫描仪对象
扫描器，我们将其导入并实例化，如您所知，我们需要通过
系统从终端读取数据，现在我们打印一条消息，所以我们
我们将使用打印方法而不是打印行，在这里我们添加一个标签
数字，然后我们将下一个int称为扫描仪以读取一个数字，并将其存储在此数字中
可变数字好了，所以第一部分现在完成了，我们需要检查是否
这个数字可以除以五，所以我们可以写一个if语句，例如
如果这里是数字，我们使用模运算符，该运算符将返回
除法，因此我们将其除以五，如果余数等于零，则意味着
这个数字可以被5整除，所以我们现在打印嘶嘶声
否则，如果此数字可被3整除，我们将打印嗡嗡声，我们需要另一个
条件，如果这个数字可以被5和3整除，那么这里我们使用and运算符
被3整除的数字等于0在这种情况下，我们要打印嘶嘶声
否则，您现在要打印相同的数字，这不是
正确的解决方案，我将在第二秒钟向您展示，该程序有一本书，但是
我在学生中看到的非常普遍的解决方案，所以让我们运行
程序，看看这里出了什么问题好了，在这里，我们输入五个，我们得到了嘶嘶声
如果您输入十，那么十也会被五整除，所以到目前为止，我们很适合
好的被3整除的数字会引起嗡嗡声
我们输入一个可以被5和3整除的数字，例如15，我们得到Physcan为什么
这是执行此操作的原因，如果我们首先输入15
条件的评估结果为true，所以我们得到了其他的其他条款
被忽略，这就是为什么在某些情况下将不执行此行的原因
这样，您应该在顶部和
在这种情况下，最普通的位于底部
如果数字被5和3整除，我们将打印fizzbuzz，因此这
非常具体，否则，如果数字只能被5整除，我们将打印出嘶嘶声
否则，如果它可以被3整除，我们将打印嗡嗡声，最后，如果没有
条件为真，那么我们打印相同的数字，现在让我们运行程序
再过一次，我们输入15，我们的Fizzbuzz变漂亮了，这是一种
现在解决这个问题，我已经看到有人争论说我们已经重复了这个
表达式两次被5整除我们在第12行也有
作为编程的第14行，我们有一个叫做dry的概念，它是
不要重复自己，所以有人认为在这里我们重复了这个
表达，这不是一个好的解决方案，这是让我展示的另一种方式
你，所以我们要摆脱这第二个条件，相反，我们
要在这里添加一个代码块，所以如果数字可以被5整除
如果是这种情况，请检查数字是否也可被3整除
打印嘶嘶声，否则我们只打印嘶嘶声
这样，现在我们不再需要这两行，因为我们已经
在这里实现了这个概念，所以我们首先检查数字是否为
如果不能被五整除，我们检查是否可以被三整除
所以这是解决这个问题的另一种方法，但我认为这种方法
有点业余和丑陋，因为这些嵌套的if-else语句是
现在被认为是一种不好的做法，这还不是很糟糕，但是您嵌套的时间越多
这些L语句会使您的代码对其他人更加混乱
所以我个人更喜欢先前的解决方案，即使我们有一些
代码中的重复次数越多，您编写的程序就越多，构建的软件就越多
此外，您意识到没有办法构建理想的软件编程，并且
解决问题的关键在于权衡取舍，每个解决方案都有一定的优势，
该解决方案的某些弱点没有重复或重复
代码，但它具有嵌套结构，这些嵌套结构使我们
难以阅读和理解的代码以前的解决方案有一点
重复，但结构平坦，此处没有嵌套，此代码
更干净，更容易阅读有些时候我们想重复一个或多个
举例说，我们在这里有这个世界问候。
我们想在终端上打印五遍，我们不想重复
这样的代码看起来非常丑陋，这是我们在Java中使用循环的地方
有几种不同类型的循环我将要讨论的第一个循环
本教程中的是for循环，所以让我们看看如何在这里使用for循环
要删除所有这些代码，请先输入for关键字，然后输入
括号内，在这些括号内，我们需要先做三件事
声明一个循环或计数器变量，所以我们声明一个名为I和
将其初始化为0退出经常使用变量名（例如IJ和K）进行循环
接下来，我们添加一个分号来终止第一个语句，然后我们
编写一个布尔表达式，确定此循环的次数
要被执行，所以我比五岁，只要我小于五岁
这个循环将再次执行，我们添加一个分号，最后我们增加
我一个这样，所以这是for循环的基本结构，现在我们可以
使用此for循环重复一个或多个语句，以便我们添加问候世界
像这里这样的消息，我们只有一个语句，所以我们不需要大括号，但是如果
您有多个语句要重复，我们需要定义一个代码
现在阻止在这里，我要删除它，因为您真的不需要它们，所以
让我们运行这段代码，看看能给您带来什么，您将获得五次打印的hello world
现在在美丽的终端上，让我解释一下如何在以下情况下执行此代码
Java首先看到此for循环，它将执行此语句，因此在这里
将I初始化为零，然后Java评估此条件是这个
条件为真，显然是因为零小于五，所以控制
移至第七行，此行现在在此结尾处执行
迭代或循环结束时，控件移至此处
所以我增加了一个现在我们在第二个迭代的开始
再次评估这种情况是小于五分之一，显然是这样
再次循环的主体现在在末尾快进
第五次迭代，我将变成五个五不小于五个，所以循环
条件将为false，并且控制权现在移至该for循环之外
如果要执行五次操作，则需要记住一件事
您可以将循环计数器或循环变量初始化为零，然后使用
比运算符这里的另一种方法是将其初始化为一个，然后使用
现在小于或等于运算符使这个更有趣，让我们
在这里打印我，所以在这里我们添加一个空格，然后用I连接此字符串
看一看，如果我们对比一下，我们得到一个二三四五的问候
将我初始化为零并使用小于运算符
我们会得到你好词零一二三四我们也可以打印这些
以相反的顺序编号，因此我们将I初始化为5并执行
只要我大于零就循环，但在这里我们不递增
递减它，我们得到世界五四三二一的问候
所以这就是所有关于for循环的内容，接下来我们来看一下while循环
我们将讨论Java中的while循环的while循环
在功能方面类似于for循环，但它们的区别在于
语法术语让我向您展示，因此我们将继续从
在上一个教程中，我将使用while循环重写此代码，因此首先
声明一个循环变量，然后将其初始化为零
接下来，我们输入while并在括号中输入循环条件
当我大于零时，我们将在此块内执行代码
所以我要从这里复制它，将其粘贴到此块中，最后我们需要
我喜欢这样递减，所以在每次迭代结束时我们都喜欢递减
我们的for循环，如您所见，我们可以使用for循环实现相同的功能
或while循环，但是使用for的实现
循环更轻更清洁，因此在您提前知道的情况下
您想执行一次或多条语句的次数最好是
使用for循环，而在我们不完全了解的情况下，循环会更好
您想重复多少次，例如说我们
将要编写一个程序并要求用户连续输入内容
直到他们键入quit之后，我们才会终止
程序在这种情况下，我们不知道用户要去多少次
输入一些东西，让我们使用while循环编写该程序
我要从这里删除所有内容
好吧，我们将从while循环开始，现在是什么循环
条件，在此示例中，我们没有计数器变量，而是
检查用户是否输入退出，所以在这里我们可以声明一个字符串
调用输入并将其初始化为空字符串，然后我们可以写一会儿
这样的循环，而输入不等于退出，现在此代码将不再
因为输入是一个字符串，这是一个引用类型，所以我们不能使用
比较引用类型之间的运算符，因为这些运算符将
比较地址或字符串对象而不是它们的值，因此如果您有两个
字符串退出并退出，但存储在不同的内存位置以具有
不同的地址，因此我们可以使用不等式运算符比较它们的地址
值，我们需要使用字符串对象的equals方法，因此我们想
现在检查输入是否等于退出，这里我们需要应用not
运算符，只要输入不等于退出，我们就将不断
要求用户输入内容，以便在此处我们可以打印输入标签，然后
我们可以使用扫描仪对象从终端读取内容，因此
创建一个扫描器对象，并使用我未调用的系统点实例化它
扫描仪，接下来它将返回一个字符串，因此我们可以将其存储在此输入中
现在，在每次迭代中使用此实现变量，我们将创建一个
新的扫描仪对象，因此，如果用户输入10个数字，我们将创建10个扫描仪
内存中的对象，这是不必要的，实际上是一种不良做法，因为
它会污染我们的内存，所以最好创建扫描仪对象
在while循环之外，然后在这里简单地使用它，在这里我们假设
用户正在以小写形式键入所有内容，因此如果他们键入quit
大写字母或小写和大写字符的任意组合
阅读后，逻辑无法按照我们想要的方式工作
来自终端的东西，我们将其称为
字符串对象的小写方法，现在将其转换为小写
程序更有趣，让我们回显用户输入的内容，因此我们只需
现在在终端上打印它，让我们运行它，看看会发生什么
所以我要输入您输入的数字1 2＆3是否得到一个
返回代码，但是在我们键入quit的那一刻我们的程序终止，所以while循环
在我们不知道多少次的情况下很有用
要重复Java中的某些内容，我们有另一种称为do-while的循环
循环与while循环非常相似，但至少让一次执行
我告诉你我的意思，所以我要使用do-while重写相同的代码
循环，我们从do关键字开始，然后在此结尾处创建一个代码块
我们在循环条件之后输入的代码块，因此输入点不等于
退出，然后我们现在在它的主体内部使用分号终止它
循环，我们将简单地复制所有这些行
现在将这两种类型的循环与while循环进行比较，我们检查条件
首先，如果条件为假，那么第一次循环将永远不会得到
与do-while循环执行相反，我们最后检查条件，所以do-while
循环总是至少执行一次，即使条件为假，即
大多数情况下，我们使用while循环do-while时唯一的现实差异
循环很少使用，但是在某些情况下，请注意
其中的大多数时间更喜欢使用线环
我们将继续该程序的上一个教程中的示例
已经写了一个小问题，让我告诉你，所以我要运行这个输入
几个数字这些数字得到回声美丽
如果我们键入quit，程序会终止，但是quit这个词也会回显
这有点怪异，所以让我们看一些解决这个问题的想法
回到我们的代码中，解决此问题的一种方法是先检查输入
打印它，因此如果输入不相等，我们可以在此处键入if语句
退出，然后我们将其打印出来，因此在这种情况下，不等于输入点等于退出
是真的，那么我们将打印输入，让我们看一下以便退出
美丽，我们解决了这个问题，还有另一种解决这个问题的方法，
好吧，让我告诉你，我们可以扭转这种情况，所以如果用户类型退出了你
可以立即使用break语句跳出循环，所以我要
如果用户类型退出，请删除螺母运算符，我们将打破
循环，否则我们将继续执行并将此输入打印在
终端，因此当Java看到break语句时，它将忽略其他所有内容
之后，它将终止循环，让我们运行程序
再次输入几个数字，然后退出美丽，所以这是
break语句我们还有连续的语句来控制
到循环开始，让我向您展示，让我们想象一下，如果用户键入
通过我们不想回声，但我们也不想终止循环
想让用户再尝试一次，所以在阅读输入内容之后，我们可以
检查输入是否等于传递，这是我们使用连续语句的地方
当Java看到这一点时，它将把控制移到循环的开始，因此
所有其他这些语句将被忽略，而用户键入的不是
要在终端上打印，让我们运行程序并查看实际运行情况
所以我们输入1 2 pass不会再回响一次，最后
退出以便重述break语句终止循环并继续
语句现在将控制权移至循环的开始
在此实现中完成本教程，我们并不需要
循环条件，因为在用户类型退出时，此break语句将
插入并终止循环，因此我们可以通过使用true作为来简化此代码
我们的循环条件，因此这始终是正确的，并且此循环将被执行
直到用户类型退出，这永远是一种非常常见的技术
在专业程序员中，只要记住您是否正在使用此技术
确保有一个break语句，否则您将得到一个
永远执行的无限循环永远不会终止，这可能非常
就内存消耗而言，这是危险的，因此如果您在使用true的同时确保
您的循环中有一个break语句
我们要查看的最后一种循环类型是用于Java的每个循环
每个循环都要遍历数组或集合，让我告诉你，所以我要
首先声明一个名为fruit的字符串数组，然后使用
三个项目，比如说苹果芒果和橙子，现在我们想迭代
在这个数组上并在终端上打印每个项目，我们可以使用任何循环
可以像for循环或while循环那样早点学习，但是我们也可以使用for
每个循环都比较容易，让我先向您展示，我将使用for
循环遍历此数组，因此我们在此处输入声明循环
变量或循环计数器变为I，只要我小于
结果，我们每次迭代后将I加1
在这里，我们简单地打印出我的成果，让我们运行程序，看看我们
得到，所以我们将每条商品换成新的漂亮行，现在还有另一种方式
使用for每个循环编写相同的代码，我们在括号中键入
与声明和循环变量，但此变量的类型应基于
数组中项目的类型，所以这里有一个字符串数组，这意味着
该数组中的每个项目都是一个字符串，因此在这里我们应该声明一个字符串变量
我们在这里称它为fruit，我们输入一个冒号，然后是数组fruits的名称
现在在每次迭代中，水果将在此数组中保留一项的值，因此
在这里，我们不必声明数字计数器，而不必编写布尔值
这样的表达，我们不必增加我们的计数器，这很容易
现在遍历数组如果我们打印水果，我们得到的结果与
在看之前，所以前三项来自我们
for循环，这是每个循环的结果
所以这是每个循环的，但是每个循环都有两个
局限性局限性之一是它总是向前转发，因此我们不能迭代
相比之下，从头到尾在这个数组上我们可以轻松地做到
这个带有for循环，所以在这里我们可以将I初始化为该长度的结果
我们将此运算符更改为大于并将该值替换为零，以便
只要我大于零，我们就将第二个递减
每个循环的局限性在于，这里我们无法访问索引
我们所拥有的每一个项目都是这个循环变量，它保存每个项目的值
与此数组相反，在我们的for循环中，我们可以访问两个索引
和实际项目，因此我代表每个项目的索引和I的成果
返回给定索引处的项目，因此，如果您需要索引，则将有
使用for循环，否则使用for循环要容易得多
现在，让我们回到抵押贷款计算器并实施一些
基本错误处理，因此在这里我通过以下方式更改了此问题
添加此标签以标识我们可以输入的值的范围，以便
我们可以获得的最低贷款额为1,000美元，最高为100万美元
因此，如果我在此处输入1，则会收到此消息，请输入一个介于1000和
一百万，现在我又被问到这个问题
输入无效值现在我被问到相同的问题，让我们输入一个有效值
价值一百万美元，接下来我们必须输入年利率
现在在这里我们需要输入一个大于0且小于等于的值
到30，所以如果我输入0，我们将得到此消息，输入一个大于0的值，然后
小于或等于30再次被问到这个问题
更多的时间，所以让我们输入一个有效值，例如3.9，这里我们需要输入
值介于1到30之间，因此如果您输入0，则会收到错误消息，并要求我们
相同的问题，所以让我们输入30，最后我们得到的结果是我们的
抵押或每月还款，所以继续花五到十分钟
通过添加错误处理来扩展此抵押计算器
我的解决方案X
好吧，让我告诉你我将如何逐步解决这个问题，因此
我们想要验证用户输入的每个问题的值（如果该值
是无效的，您想继续问同样的问题，所以这是我们可以
使用无限循环让我告诉你，所以这是我的第一个问题委托人
要将这两行包裹在一个无限循环中，而true
因此我们将继续询问相同的问题，直到用户输入有效的
值，因此在阅读原理之后，我们可以编写一条if语句
如果原理大于或等于1000并且小于或等于
等于一百万，在这里我们可以使用下划线将这些数字分开
使我们的代码更具可读性，因此，如果用户输入有效值，则我们可以
打破这个无限循环，否则我们将打印一个错误
消息，因此请输入1001百万之间的值
在右侧，您可以看到此红色条形表示错误，此处
在此预览窗口中，您可以看到下面的确切错误信息
在第30行，我们在其中计算抵押贷款，因此，如果您单击此红色栏
我们跳过这里，校长以红色突出显示，所以这里有一个
编译错误无法解决符号原理，这是因为
我们将这几行包装在while循环中，之前我告诉过你
当您声明一个变量时，该变量作用于块中
它是定义好的，所以我们在这里声明了主体变量，
它的作用域是此块，在该块之外不可用
为什么我们得到这个编译错误，所以要解决这个问题，我们需要声明
在while循环之外，我们可以在使我们根除
常量，所以我们说int原理，现在我们可以将其初始化为0
从这里开始声明，错误消失了，我们需要重复相同的操作
与其他问题的模式如此快速，这是我们的第二个问题，
我们再次读取年度利息，然后添加无限循环
现在我们读取年度利息的那一刻使数据无效，所以如果
年利息大于或等于一个，而小于或等于
等于30，那么我们将摆脱无限循环
现在在这里，我们还应该计算每月的利息，这样正确的方法
就像这样，如果用户输入有效值，我们在此处添加一个代码块
首先我们计算每月利息，然后跳出循环
如果出现以下情况，我们会打印一条错误消息，请输入1到30之间的值：
右边又有两个编译错误，每月利息是
尚未解决，因为我们已在此代码块中声明了它，所以让我们移动
在此处进行顶部声明，我们删除float关键字，然后每月进行声明
对这里的兴趣更好，最后是最后
再问一次我们要把它包装在这个无限循环中
这是我们读取年数的地方，在此行之后，我们需要
进行我们的数据验证，因此如果您的数据大于或等于1，并且
小于或等于30，这里我们添加一个代码块，这是我们计算的地方
付款数量，然后我们实际上中断了，我忘了在这里键入S
否则，如果用户输入无效值，将只显示错误消息
现在输入1到30之间的值，这里再次出现编译错误
因为付款数量无法解决，所以我们删除了声明
从这里开始，我们将在这里到右上角的付款次数，所以这就是
我们向该程序添加数据验证，问题是该代码
里面的主要方法现在变得有点太长，这伤害了
我们程序的可维护性，其他人必须阅读此代码，
在所有这些陈述中找出正在发生的事情，这是我们需要
将此代码分解为更小的可读性和更容易理解的块
这就是我接下来要告诉你的
因此，在本节中，您将学习如何控制执行流程
我们从谈论比较运算符开始的程序
原始值，然后我们讨论了逻辑运算符，例如和或和
我没有告诉你如何使用这些运算符实现实词
规则，然后我们讨论了三种类型的控制流语句
了解条件语句，例如if并切换为
我们的程序，然后您了解了反复执行代码的循环
在四种类型的循环中，while循环，dos-while循环和每个循环
最后我们看了一下break并继续声明break或
跳到循环的开始，希望您学到很多东西并一直在享受
到目前为止的课程
正如马丁·福勒（Martin Fowler）所说，任何傻瓜都可以编写计算机可以理解的代码
程序员编写人类可以理解的代码，如果您
看过我的任何课程，您可能都知道，我非常重视
编写干净的代码，所以我将整个部分专门用于干净的代码
我们将继续扩展抵押贷款计算器并添加新功能
一路上，您将看到我们的代码开始变得混乱且难以理解
保持，所以我将向您展示一些更改结构的技术
代码，使代码整洁漂亮准备好了，让我们进入并获取
开始了
嘿，在这里，我要祝贺你学习的决心，我
如果您喜欢并分享我的支持，我将不胜感激
视频也订阅了我的频道并启用了通知，所以下次我
上传视频，如果您想了解更多信息，请立即得到通知，我鼓励
您可以参加我之前在YouTube上告诉您的终极Java系列
如果您认真学习，本教程是本系列的前两个小时
Java，并希望成为开发人员的专业工作，我强烈鼓励您
如果您有兴趣，请参加本系列文章，我在下面将链接放在
描述框感谢您度过了愉快的一天
[音乐]