Java流程控制的陷阱——for循环和foreach循环的陷阱

别再手动算了!用Excel函数一键搞定AQI和首要污染物分析(附完整公式模板) 本文介绍如何利用Excel函数自动化计算AQI和首要污染物分析,大幅提升数据处理效率。通过构建标准化输入模板、智能计算IAQI、自动判定AQI与首要污染物,并生成可视化仪表盘,帮助环保工作者快速完成每日监测报告。 阅读详情

5、for循环的陷阱

5、1 分号的问题

public class SemicolonRight {
	public static void main(String[] args) {
		for ( int j = 1 , i = 0 ; i < 5 && j < 20 ; i++ , j *=2 ) {
			System.out.println(i + "-->" + j);
		}
	}
}
输出结果为:
0-->1
1-->2
2-->4
3-->8
4-->16
       根据Java语言规范,for循环里有且只有两个分号作为分隔符。第一个分号之前的是初始化条件;两个分号中间的部分是一个返回boolean的逻辑表达式,当它返回true是for循环才会执行下一次循环;第二个分号之后的是循环迭代部分,每次循环结束后会执行循环迭代部分。
注意:for循环的初始化条件可以同时定义多个变量,但由于它只能接受一条语句,因此这两个变量的数据类型应该相同。

5、2 循环计数器的问题

public class CareForCount {
	public static void main(String[] args) {
		for ( int i = 0 ; i < 10 ; i ++ ) {
			System.out.println("i的值为:" + i);
			i *= 0.1;
		}
	}
}
       上面程序试图控制循环10次,但是编译、运行上面的程序会发现输出一遍“i的值为:0”,然后一直输出“i的值为:1”,并且是一个死循环。下面分析一下程序运行的过程:程序开始时i=0,程序输出“i的值为:0”,然后执行i*=0.1;,这行语句相当于i = (int)(i * 0.1);,得到的结果依然是i=0。执行完迭代条件后i=1,因此程序看到输出“i的值为:1”,接下来执行i*=0.1;,这行代码使i再次变为0。以此类推,每次执行完循环体后i的值总是为0,执行完循环迭代部分之后i的值总是为1,因此这个程序就是一个死循环。
提示:尽量避免在循环体中改变循环计数器的值,如果循环体内需要根据访问修改循环计数器的值,则可以考虑额外定义一个新变量用来保存修改过的值。

5、3 浮点数作为循环计数器的问题

public class FloatCount {
	public static void main(String[] args) {
		final int START = 99999999;
		for ( float i = START ; i < START + 50 ; i ++ ) {
			System.out.println("i的值:" + i);
		}
	}
}
       编译并运行上面的程序,一直输出“i的值:1.0E9”,并且是一个死循环。导致这个结果的原因是:定义的START是一个int类型整数,而且数值还比较大,当程序把这个int类型整数赋给float类型变量时,float类型变量无法精确记录这个值,会导致精度丢失。

6、foreach循环的陷阱

       从Java5开始,Java增加了foreach循环用于遍历数组、集合的每个元素。使用foreach循环遍历数组和集合元素时,无须获得数组和集合长度,也无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每个元素。当使用foreach循环来迭代输出数组元素或集合元素时,系统将数组元素、集合元素的副本传给循环计数器。由于foreach循环中的循环计数器本身并不是数组元素、集合元素,它只是一个中间变量,临时保存了正在遍历的数组元素、集合元素,因此通常不要对循环变量进行赋值,虽然这种赋值在语法上是允许的,但是没有实际意义,而且容易引起错误。
import java.util.ArrayList;
import java.util.List;

public class ForEacheErrorTest {
	public static void main(String[] args) {
		List<String> books = new ArrayList<>();
		books.add("book1");
		books.add("book2");
		books.add("book3");
		for (String book : books) {
			book = "BOOK";
			System.out.println(book);
		}
		System.out.println(books);
	}
}
输出结果为:
BOOK
BOOK
BOOK
[book1, book2, book3]
注意:使用foreach循环迭代数组、集合时,循环计数器只是保存了当前正在遍历的数组元素、集合元素的值,并不是数组元素、集合元素本身,因此不要对foreach循环的循环计数器进行赋值。




人像抠图 + OpenGL ES 还能这样玩?没想到吧(附带源码) OpenGL ES 利用抠图算法实现人像留色。 阅读详情

相关推荐

无需云服务器:飞牛云NAS+Docker搭建本地WordPress站点全球访问

在数字化浪潮中,网站搭建已成为个人和企业在推广自身品牌与业务的首要选择。飞牛云新推出的fnOS,这款集多功能于一身的nas系统,以其卓越的性能和灵活性,成为理想的本地网站部署平台。本文将带你一探如何在飞牛云NAS上通过Docker部署WordPress,并利用cpolar实现全球访问。

LT15171009269的博客 6529

Java之foreach循环变量赋值问题

foreach循环变量赋值的问题

weixin_53132064的博客 3638

ROS下UR+Realsense相机进行手眼标定

手眼标定主要是用来确定相机坐标系和机械臂坐标系之间的转换关系,从而实现后续的抓取等任务。

weixin_42157689的博客 7573

编程日记12-06-28

今天的主要工作:继续编写菜品后台管理系统:C:\Program Files\apache-tomcat-8.0.52\webapps\foodManager。遇到的问题:1:根据ID修改菜品时,菜品修改不掉。原因是使用Map删除元素搞错了。在使用foreach循环遍历时使用remove(object key)方法不能元素。如果此时删除元素,因为删除了当前元素,下一个元素的指针丢失了。可能会导致异常...

WARGON的博客 315

11. TI MSPM0G3507 DMA传输实战:ADC数据自动搬运与电压采集

本文以TI MSPM0G3507为例,详细讲解了如何利用DMA(直接存储器访问)实现ADC数据的自动搬运与电压采集。通过实战演示,解放CPU资源,提升系统实时性与效率,适用于电赛备赛及嵌入式开发中的数据采集场景。

weixin_42465140的博客 132

【2024遥感应用组一等奖】基于时空融合和水量平衡法的若尔盖高原水源涵养功能评价

考虑到水源涵养的概念和尺度特征、数据的可获得性、模型的模拟精度等,构建了一种基于遥感、气象和水量平衡原理的草原湿地水源涵养评价方法,估算若尔盖湿地近23年(2000-2022)来的水源涵养量。若尔盖湿地是我国黄河源区的重要水源地,所以本研究以若尔盖湿地的水源涵养功能评估为科学问题,基于遥感数据、GIS数据等,利用水量平衡原理,发展计算简单、便捷、数据易获取的“水源涵养估算方法”,科学估算若尔盖湿地水源涵养服务量,探究其时空动态变化趋势及其影响因素;公式中,Z1和Z2为两个不同高度面的高度,u为摩擦速率;

JData_Engineer的博客 239

深究Java foreach循环的实现原理和其中的坑

集合、数组的遍历是必不可少的开发工具,foreach又是那么甜,二者走到一起会发生什么呢?这篇文章带你一起尝一尝其中的酸甜苦辣!

衷水木先生的博客 4429

Python爬虫实战:全方位解析前程无忧(51job)职位详情爬取及反爬破解

平台规模:覆盖全国各行业、数百万条岗位信息。数据特点:职位描述详细,职位标签丰富。数据价值:支持招聘趋势分析、职业发展研究、薪资行情调研。推荐Python 3.10+,支持最新async特性与库兼容。

2201_76125261的博客 1487

java-while循环-do while循环-死循环-嵌套for循环语句

while循环语句: 基本格式: while(判断条件语句){ 循环体语句; 完整格式: 初始化语句;; while(判断条件语句){ 循环体语句; 控制条件语句; } ①执行初始化语句; ②执行条件判断语句,看其结果是true还是false; 如果是false,循环结束;如果是true,继续执行; ③执行循环体语句; ④执行条件控制语句; ⑤返回②继续执行。 //基本格式: //while(判断条件语句){ //循环体语句; //完整格式:

她是不会无条件的!! 6202

Python 爬虫实战:在房天下抓取房产信息,分析房价走势

通过本次 Python 爬虫实战,我们成功地从房天下爬取了房产信息,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分区域的房产数据,且未对房产的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多区域的房产数据,并深入分析房产的多媒体内容、用户行为模式等,为购房者和房地产从业者提供更有价值的数据支持。

u014481728的博客 1368

Lammps不同亲疏水性粗糙表面的润湿行为模拟(包含in文件)

Lammps粗糙表面的润湿行为模拟(包含in文件)前言—润湿行为模拟一、物理模型构建二、具体in文件—in文件内循环亲疏水性三、具体in文件—分子模板构建初始模型以及平衡态模拟四、全部代码(基地粗糙表面只提供data文件) 前言—润湿行为模拟 润湿现象:当液体与固体接触时,液体的附着层将沿固体表面延伸。当接触角 θ\rm \thetaθ 为锐角时,液体润湿固体,若θ为零时,液体将展延到全部固体表面上。润湿现象的产生与液体和固体的性质有关。(来自百度百科) 润湿行为的本质是固液之间的相互作用,也就是分子间的范

Rockyoung 7093

kotlin遍历list

方法二:使用until。方法三:forEach。方法一 for in。

小牧在一直在学习,在前进的道路上大家一起学习,进步。 1098

ubuntu 20.04 搭建多用户远程桌面共享及同时在线使用

摘要:本文介绍了在物理机上配置远程桌面访问的完整流程。通过setup_xrdp.sh脚本自动安装xrdp服务,修改配置文件并开放3389端口。同时提供了用户管理脚本:add_rdp_users.sh用于创建带sudo权限的远程用户,del_rdp_users.sh用于删除用户及主目录。还包含批量操作脚本add_rdp_all.sh和del_rdp_all.sh,支持一次性创建/删除多个用户(如dev1-dev5),所有用户密码统一设置为111111。完整方案实现了远程桌面环境的快速部署和用户集中管理。

623

流程控制陷阱(Switch语句,标签,if语句,for循环,foreach循环的循环计数器)

1.  流程控制的陷阱1.1  Switch语句陷阱 Switch语句后可以指定一个表达式,系统根据表达式的值来决定执行哪个case分支的执行体。对于switch语句的表达式而言,只能是如下5种数据类型。 byte(字节整型),short(短整型),int(整型),char(字符型),enum(JDK1.5之后可以使用枚举型)。 绝不能是String类型,也不能是long,flo

BornForIT 2343

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java流程控制和数组

流程控制 Java中三种基本的流程控制结构:顺序结构,分支结构和循环结构。 顺序结构,任何编程语言中都会有的程序结构。 分支结构:Java语言中常见的两种, if语句和switch语句。   if语句,使用布尔表达式或者布尔值来作为分支条件来进行分支控制。   switch语句,用于对多个整型值进行匹配,从而实现分支结构。   switch语句由一个控制表达式和多个case标...

Ranger1866的博客 205

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

26、流程控制的陷阱

1、switch语句陷阱

YGingko的专栏 647

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java流程控制实战:if/switch/for/while详解

流程控制是编程语言中的核心概念,它决定了代码的执行路径和逻辑分支。通过if条件判断、switch多分支选择以及for/while循环等结构,开发者可以实现复杂的业务逻辑。在Java开发中,合理使用流程控制不仅能提高代码执行效率,还能减少空指针异常、数组越界等常见错误。本文以Java 8+为例,深入解析if语句的卫语句优化、switch的穿透特性、循环结构的边界控制等实用技巧,帮助开发者编写更健壮的代码。这些技术广泛应用于业务逻辑处理、数据验证、算法实现等场景,是每个Java开发者必须掌握的基础技能。

weixin_42554408的博客 274

Java流程控制:continue、break、return区别及Lambda陷阱

在Java开发中,循环控制与异常处理是构建稳定逻辑的基石,而continue、break、return则是控制程序走向最基础也最易混淆的三个关键字。理解它们的作用域差异,以及try-catch-finally中的返回机制,是高效排查问题的前提。然而,当引入Lambda表达式和Stream后,原本熟悉的控制流可能完全失效:forEach中的return并不能替代continue,break更是无法编译。本文从基础概念入手,逐步深入语法作用域、Lambda上下文以及短路操作,结合典型报错和踩坑案例,帮助开发者理

weixin_33796177的博客 353

No.6 流程控制的陷阱

1. switch语句 Only convertible int values, strings or enum variables ,即switch语句的表达式的类型只能是可以转换成int型的(向上转型,不丢失精度的),字符串类的和枚举类的 2.if语句 使用if...else语句:优先 把 包含范围小的条件放在前面处理 对于if语句而言,如果紧跟该语句的是花括号...

145

Java流程控制详解:分支、循环与跳转的高频考点与避坑指南

流程控制是程序执行的基本骨架,它通过顺序、分支、循环与跳转机制,让代码能够根据不同条件灵活决定执行路径。在Java开发中,分支语句(if-else、switch)与循环语句(for、while、do-while)的组合构成了几乎所有复杂业务逻辑的基础,也是算法题和日常编码中高频出现的核心能力。理解循环的边界条件、跳转语义以及分支结构的执行顺序,不仅能有效避免数组越界异常等典型运行时错误,还能显著提升代码的可读性与性能。无论是实现简易计算器、遍历集合数据,还是应对Java面试题中的手写排序与查找,扎实的流程控

weixin_33896726的博客 235

Java中流程控制语句中的陷阱

  我们都应该知道java有常见的流程结构。有顺序结构、分支结构与循环结构。这三种结构在编写程序中我们常常遇到,虽然用这点东西很简单,但是有时我们难免会犯小错。由此我与大家分享一下那些语句块中所存在的陷阱。   switch语句的陷阱: 在switch语句之后可以包含一个default分支,从字面意义上来讲这个分支是默认的分支,它是当其他条件都不满足的时候才执行。break语句的使用...

a304096740的博客 174

break、return、continue深度解析:从嵌套循环到跨语言陷阱

流程控制语句是编程语言中最基础也最关键的语法结构,其中break、return、continue分别承担着跳出循环、终止函数和跳过迭代的核心职责。理解它们的作用范围与底层执行原理,是写出可靠代码的前提。例如,嵌套循环中break只作用于当前层,而return则能直接终结整个调用栈;不同语言对这三者的语义设计也各有差异,像C++非void函数漏写return会引发未定义行为,Python中yield与return的配合改变了函数本质,Go的defer还能修改命名返回值。在实际开发中,无论是处理多层循环跳出、s

weixin_34094282的博客 311

疯狂Java程序员16堂课---第6课流程控制的陷阱读书笔记:

第6课流程控制的陷阱读书笔记: 1、 switch语句允许的表达式: ()里只能是如下5种数据类型:byte,short,int,char,enum  绝对不能是String,long,float,double等其他基本类型。 package com.trap; public class SwitchTest { public static void main(String[] a

纸上得来终觉浅 绝知此事要躬行 463

Java流程控制实战:条件分支、循环与跳转的细节与陷阱

在程序设计中,流程控制是决定执行路径的核心骨架,主要由顺序、分支与循环三种基本结构构成。条件分支与循环语句的细节往往决定代码质量,例如if/else中短路运算的执行时机、for循环的更新顺序、增强for底层迭代器在删除元素时可能引发的并发修改异常,以及break与continue在不同循环层次中的作用范围。理解这些机制不仅能帮助你写出更为健壮、可读的Java代码,还能在排查线上逻辑异常或应对Java面试时更加从容。无论是用卫语句替代深层嵌套,还是利用现代switch表达式简化离散判断,流程控制设计都直接体现

weixin_33391446的博客 227

《疯狂java讲义》第4章 流程控制与数组

第4章 流程控制与数组 4.1 循序结构 循序结构:程序从上到下逐行执行,中间没有任何判断和跳转。 4.2 分支结构 if语句和switch语句 4.2.1 if条件语句 if ( xx ){ xxx; } if ( xx ){ xxx; }else{ xx; } if ( xx ){ xxx; }else if ( xxx ){ xx; } 花括号括起来的多行代码称为代码块,也称为条件执行体。 代码块,以分号结束的一行语句,空语句,都可以为条件执行体。 else的含义是“否则”,el

weixin_43806049的博客 215

Java循环控制:break、continue、return与标签的深度解析与实战应用

在Java编程中,循环控制是程序逻辑的核心组成部分,它决定了代码的执行流程和效率。理解循环控制语句的原理,对于编写高效、健壮的代码至关重要。break、continue和return是Java中三种基本的循环控制机制,它们分别用于终止循环、跳过当前迭代和退出方法。这些机制在嵌套循环、switch语句和Lambda表达式中有着不同的应用场景和行为表现。掌握它们的使用技巧,可以帮助开发者避免常见的逻辑错误,如无限循环和switch穿透,并提升代码的可读性和性能。特别是在处理集合搜索、数据验证和复杂嵌套逻辑时,合

weixin_33785108的博客 301
上一篇: Java流程控制的陷阱——if语句和循环体的陷阱
下一篇: 面向对象的陷阱——instanceof运算符的陷阱
Never_Blue
博客等级 码龄10年 5粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值