java中可以用浮点作为循环变量吗_Java千问:Java循环语句的几个冷门知识点你都知道吗?...

我们在进行Java开发的时候,经常会用到循环结构,但是有几个关于循环的“冷门”知识点,不知道你是不是都已经掌握了呢?我们一起来看看

一、大括号可以不写吗?

我们都知道,如果每次循环过程中要执行的语句只有一条,那么就可以不用写大括号。但事实真的如此吗?请看下面的代码:

5dd2086d527af98d92cadb0c26838c51.png

大家可以看到,在循环中只有一条语句,但是并不能通过语法编译。这是为什么呢?因为Java语言规定:循环语句中重复执行的语句不能是一条单独的局部变量定义语句。这里所说的“定义局部变量语句”也可以指创建对象的语句,例如以下代码也不能通过编译:

f86312c65076fa89b0cb4d4107c65a2f.png

同时,这个规律还可以延伸到条件语句,也就是说,if语句中也不能只有一条单独的局部变量定义语句,例如以下代码:

04262ebe9d968e346e899996c82f88dd.png

如果我们在以上三段代码中,给循环或条件语句都添加了大括号,语法错误自然就消失了:

049440a1b9b62cf81ae486954887c9d6.png

二、如何定义多个循环变量?

我们平时定义的循环往往只有一个循环变量

96f3227767c314f6cba967257e7fc48d.png

例如在这个循环中,变量i就是一个循环变量。但是,如果开发过程中,需要我们在一个循环中定义并操作多个循环变量该怎么办呢?这时候,我们可以把多个循环变量的定义语句用逗号隔开,并且对循环变量的操作语句也用逗号隔开就可以了。我们以定义并操作两个循环变量为例作为示范,请看以下代码:

ea3e9fa2e0c946287a779389c9d9b5d7.png

需要说明的是:for循环结构只能有两个分号(;),并且明确规定第一个分号前面的部分是用来定义并初始化循环变量的。我们知道,一个分号其实就表示一条语句的结束。所以说,第一个分号前面定义并初始化循环变量的语句只能有一条。既然只能有一条语句来定义循环变量,那么如果需要定义多个循环变量的话,这些循环变量只能同属一种类型,因为多种类型的循环变量必须要用多条语句来定义。如果实在需要定义多个类型不相同的循环变量,我们可以干脆在循环语句之前就把这些变量都定义好。

三、能否以浮点数作为循环变量?

我们通常都会把循环变量定义为整数类型,如果把循环变量定义为浮点数可以吗?我们来做个实验,请看以下代码

7054f41c73f6a0c9a6f7f443f5ee0c05.png

这段代码想必大家都能看懂,那么这段代码能否正常执行呢?答案是没问题,它的执行效果如下:

f3195e745b1629e04098839a81802a6e.png

很多人通过这个实验就下定结论认为以浮点数作为循环变量没有什么问题,但是我们必须清楚:当一个浮点数大到一定程度的时候,就会导致精度的丢失,从而出现一些奇怪的错误。比如,我们把上面代码中start变量的初始值改成999999999;在这种情况下,重新运行程序,你会发现程序没有任何输出。为什么没有任何输出呢?变量f的初始值是start,而浮点数大到一定程度的时候,因为丢失了精度,会导致虚拟机错误的以为”f”与”start+5”的值是相同的,所以”f

但是,如果我们把循环条件从” f

我们通过这个例子想告诉大家:如果没有十分的必要,不要使用浮点数作为循环变量,即使非要用浮点数充当循环变量,也一定要注意数值范围不能太大,否则会因为精度丢失而出现一些奇怪的现象。

四、内层循环如何控制外层循环?

我们都知道,在Java语言中,有两个能够控制循环执行的关键字,分别是break和continue。通常情况下,这两个关键字所控制的都是本层循环的执行,并不能控制到外层循环。但如果我们希望通过这两个关键字控制外层循环的执行,可以先给外层循环添加一个“标签”,通过在break或者是continue后面加标签,达到控制外层循环的目的。我们来看如下代码:

fda4a45b7e07b37c8d5e1177ca8c60eb.png

在这段代码中,我们给内外两层循环都加上了标签,分别叫做inner和outer。我们在内层循环中,当”j==4”的情况下执行continue语句,并且在continue的后面加上外层循环的标签outer,就能控制外层循环结束本次循环,直接进入下一次循环,因此循环代码执行过程中,不会在控制台上打印出”test”。其执行结果如下:

1c35f2539ee3cb2cb89b908726a974cb.png

同理,我们如果把代码中才”continue”换成”break”,也能够在内层循环中直接跳出外层循环。

虽然从技术角度来说,Java语言能够实现在内层循环中控制外层循环,但是从程序设计的角度来讲,并不提倡这么做,因为我们更希望每一层循环“各司其职”,完成好自己的工作,如果需要从内层循环中直接中止外层循环的执行,可以设置一个局部变量,内层循环修改局部变量,而外层循环通过判断局部变量的值来决定是否结束本层循环,这样代码的结构性和可读性都会更好。

如想系统学习Java编程,欢迎观看我在本站的视频课程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297194.shtml

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

相关文章

各个大学的录取通知书,哪个颜值最高?

近段时间,各大高校纷纷开始晒出自家的录取通知书,快来和小天一起评评哪家的颜值最高!北京工业大学北京科技大学东南大学复旦大学哈尔滨工业大学南京农业大学南开大学清华大学天津大学西安交通大学中国传媒大学北京航空航天大学这不仅仅是一纸…

有关堆栈溢出(in vs 2005)的读书笔记--堆栈中 申请大数组

部分原创 66下一步 Vs 堆栈 理论修改的上限是多少 ? 问题2: 全局变量去 最大的上限是多少? 堆栈(休养版本测试) 2012年3月31日17:31:27 3月 从 10^5到 10^6数组,导致vs… 当前:搭好脚手架…

烧脑又过瘾!这个被严重低估的学习方法,看完瑟瑟发抖!

▲ 点击查看科学家曾在基于脑科学和认知科学后得出一个“学习的金字塔”理论。就是下面这张图:最顶端的就是我们所谓的“知识”,但为了可以达到这个顶端,下面有一系列的支撑能力。而引申出来的核心概念,就叫“玩中学”。不要想当然…

为什么手机最后 10% 的电量很不耐,最后1%的电量最耐用?

全世界只有3.14 % 的人关注了爆炸吧知识手机电量这玩意一直都是个玄学问题。为什么我的小手机,最后 1% 的电量最耐用,每次都够我看完一个十分钟的视频。又或者是为什么我的小手机,最后 10% 的电量很不耐用。。。每次电池报警还有 10% 的电量&…

使用identity+jwt保护你的webapi(三)——refresh token

前言上一篇已经介绍了identity的注册,登录,获取jwt token,本篇来完成refresh token。开始开始之前先说明一下为什么需要refresh token。虽然jwt token有很多优点,但是它的缺点也是非常明显。由于jwt无状态的特性,所以j…

一个10*10的正方形里,最多可以放多少个直径为1的圆?为啥不是100个?

祝大家元宵节快乐知识君曾经给大家出了一道题。↓Q:在一个10*10的正方形里,最多可以放多少个直径为1的圆?为啥不是100个?关于这道题,后台就收到了许多留言,大家纷纷给出了不同的答案。五花八门的答案&#…

【开源框架】:解决方案级别的代码生成器 WebFirst

框架描述WebFirst 是一新代的 代码生成器,用法简单,功能强大,支持多种数据库 ,具体功能如下:一、 建库、CodeFirst方式在线建表,没用到CodeFirst的用户可以用工具轻松体验,支持公共字段二、导出…

在netbeans下使用调试PHP的插件XdeBug

本人的开发环境: wamp最新官网wampserver2.2d-x32版。 下载点:http://nchc.dl.sourceforge.net/project/wampserver/WampServer%202/WampServer%202.2/wampserver2.2d-x32.exe PHP:5.3.10 apache :2.2.21 要使用到NetBeans的调试功能&#xf…

老娘不就是没化妆吗?你几个意思?

1 可能是环境的原因唤醒了雪橇犬的祖传技能▼2 这是花仙子吧!怎么能生的出这么好看的崽▼3 你什么表情?老娘不就是没化妆吗▼4 我们是专业的,一般不会笑除非忍不住▼5 你知道小兔子会游泳吗▼6 狗子的快乐你体会不了▼7 谁能告诉我这到…

790页微软官方《.Net核心编程》高清版PDF,提供下载

本文档由微软技术专家编写,从1.1版本持续维护升级至今,开篇就详细对比了各版本中的差异,内容包含了ASP.NET Core、Blazor、WebAPI、SignalR、gRPC、EF Core、云原生,既是最权威的,也是最全面的,是学习跨平台…

真烧脑!60种小学奥数分类题型大汇编!做了几道题,感觉身体被掏空……

全世界只有3.14 % 的人关注了爆炸吧知识很多的家长都在问:小学奥数怎么学?有哪些重点?需要大量练习吗?其实,数学的题型万变不离其宗,了解题型,领悟题目的思路方法,一定胜过盲目狂练5…

保护我方Id | ASP.NET Core Web API使用加密Id

前言上次,我们介绍了hashids.net,可以将数值型Id加密成无意义的字符串,但是通过这些字符串又可以反向映射出真实的Id以供内部使用。比如B站的播放链接https://www.bilibili.com/video/BV1xK4y1VXXX应该就是这种实现方式。但是,我们…

用java写注册表单_利用HTML表单标签编写一个注册页面

今天我们来写一个注册页面form表单先来利用表单标签制作一个简单的注册页面,给大家说说标签的结构:页面结构大体就是这样子的~利用HTML表单标签编写一个注册页面表单标签:所有需要提交到服务器端的表单项必须使用包起来~form标签的属性:action:整个表单提交的位置(可以是一个页…

我被Dapr点燃

Dapr的热度个人认为才刚刚热起来,9月份我写了Dapr .NET Core实战一共10篇,从基础概念到简单的实战,但是有很多人感兴趣,具体表现在我个人维护的QQ群,人数从80人左右,增加到了155,将近增加了1倍…

Http Only Cookie保护AccessToken

【导读】JWT认证方式目前已被广泛使用,一直以来我们将token放在请求头中的Authorization中,若通过此种方式,一旦token被恶意窃取,攻击者可肆意对用户可访问资源进行任意索取我们大多都是通过登录成功后,响应AccessToke…

当女朋友生气了而你却没发现 !!!

1 当女朋友生气了而你却没发现。。诶,你咋不吃呢?2 会说话的尾巴。。尾巴:人呢!!3 小树枝:生命中不能承受之重!心疼小树枝!4 土耳其冰淇淋小哥终于被反杀了!天道好轮…

弱引用什么时候被回收_Java基础 强引用、弱引用、软引用、虚引用

前言在ThreadLocal源码中,其中嵌套类ThreadLocalMap中的Entry继承了WeakReferenc。Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收。强引用(StrongReference)…

再译《A *路径搜索入门》之四

2019独角兽企业重金招聘Python工程师标准>>> ■在A *方法总结 Summary of the A* Method 好了,现在你通过解释已经走了,让我们奠定了一步一步的方法,在同一个地方: Okay, now that you have gone through the explanat…

记一次 .NET 某电商定向爬虫 内存碎片化分析

一:背景 1. 讲故事上个月有位朋友wx找到我,说他的程序存在内存泄漏问题,寻求如何解决? 如下图所示:从截图中可以看出,这位朋友对 windbg 的操作还是有些熟悉的,可能缺乏一定的实操经验&#xff…

php 合成图片 透明,2020-05-19 php实现透明png多图合成

图片合成的流程一般是,获取图像资源——合成——输出。png图片,一般就用imagecreatefrompng()获取资源。不过这个资源获取后是有白底的。所以需要用imagesavealpha()进行图像处理,得到包含有透明背景的图像。//原始图像$dst "img/1.png…