java学习笔记4——流程控制语句
来源:互联网 发布:mac 在线重装系统 编辑:程序博客网 时间:2024/04/30 03:32
这里简单讲解一下基本的流程控制语句,选择,循环等和其他语言一样,这里不多做介绍,讲一些容易出错的
一、for循环
在java中,除了for,还有一个增强型for循环,这是jdk5.0增加的新特性,下面介绍用法。foreach的主要格式为:
for(元素类型T 每次循环元素的名称O : 循环对象){ //对O进行操作}
此类方法拥有不错的性能,主要是用在遍历数组、集合上,但是和for还是有点区别的。所有的foreach都可以转化为for语句,但是for语句并不是所有的都可以转化为foreach的格式。其实本质上foreach还是一个for循环。还是直接来看代码:
public static void main(String[] args) { String[] test = { "1", "2", "3", "4", "5" }; for (String result : test) { System.out.println(result); } }
结果:
12345
其实简单一句话,就是对输入的test进行遍历,然后做相应操作,result就是每一次遍历test里面的元素。result前面的就是元素的类型,可以是基本数据类型,也可以是引用数据类型。
Attention:
在循环遍历的过程中,不能对数组进行增加删除操作,不然就会产生java.util.ConcurrentModificationException
。原因简单说一下,就是foreach的内部实现是以iterator迭代器实现的,在开始前会有一个count的大小统计,如果更改了遍历元素的size,会使得count的值发生变化,从而报错。有兴趣的同学可以去看一些foreach的具体实现以及iterator的源码。还有一个很有意思的就是这个错误也不是一定会出现的,这就留给同学们自己去发现了,这里不做阐述。
个人建议,如果要遍历数组或者集合,还是直接用iterator比较好。
二、三目运算符
java中的三目运算符,一般形式为
表达式1?表达式2:表达式3;
化成if-else语句的话,就是:
if(表达式1) 表达式2;else 表达式3;
看到这里,其实这个三目表达式很好理解,就是一个简化的选择语句嘛,那为什么要拿出来呢,因为他的结合方向。
在面试或者笔试的时候我们会遇到这样的题目:
public static void main(String[] args) { int a = 1, b = 2, i = 3, j = 4; System.out.println(a > b ? a : i > j ? i : j); //答案是4 }
一看到这样的题目的时候可能会懵,不过要知道,三目运算符的结合性是从右至左,就是说,在遇到相同优先级的运算中(java中三目运算符的优先级相同的只有它自己),最右边的先进行运算,然后再是左边的,所以,其实a > b ? a : i > j ? i : j
也可以看做是a > b ? a :( i > j ? i : j)
。所以,上题的答案是4,在实际开发中,为了避免这种会让自己懵的情况发生,要善于利用括号!
这里再看一道题目,或许在笔试的时候会碰到:
public static void main(String[] args) { int a = 1, b = 1; System.out.println(--a == b++ ? a++ : b++);//答案是2 int m = 1, n = 0; System.out.println(--m == n++ ? m++ : n++);//答案是0 }
总结:
仔细推敲一下,可以发现==,++,三目的优先级应该是++ > == > 三目,所以第一个运算判断条件应该是(a=0)是否和b相等,不相等那就是(b++),这时候要注意++的运算,是先使用后自加,所以输出b,那为什么是2呢,因为在前面判断的时候b++了一次,所以为2。看了解释还迷糊的同学可以转化成if-else的语句形式,就明了了,这里不再作解释。同理分析第二个运算,可以得到答案是0。
- java学习笔记4——流程控制语句
- Java学习笔记---流程控制语句
- Java学习笔记--控制流程语句
- (04)Java学习笔记——程序流程控制(控制语句)
- Swift学习笔记5——流程控制语句
- PHP学习笔记——特殊的流程控制语句
- Swift4学习笔记5——流程控制语句
- 黑马程序员——学习笔记03.java流程控制语句和函数
- J2SE学习笔记3 — Java基本语法(7)流程控制语句
- Java学习笔记:流程控制之分支语句
- JAVASE学习笔记:第三章 JAVA流程控制语句
- Java SE学习笔记:运算符、流程控制语句、循环
- java学习笔记(六)流程控制之选择语句
- java学习笔记(七)流程控制之循环语句
- C++学习笔记 4th —— 万能流程控制if语句
- java基础——流程控制语句
- 重修Java—流程控制语句
- Java学习笔记4-控制执行流程
- 详细解析H.264——帧内预测
- Redis+Jedis+Spring封装RedisManager类操作缓存(三)
- 作为产品经理,进阶路上的这些关卡你需要知道
- Python数据类型笔记
- C++ primer plus--第八章(一)
- java学习笔记4——流程控制语句
- 图片插入在css与html的区别
- 《分布式系统概念与设计》进程组和对象组
- ftp文件上传下载
- JAVA学习第七天
- WINDBUG常用命令
- Java项目打包为jar
- ant 使用指南
- php ajax提交字符串数据,出现转义符“\”