Java -- 增强for循环(foreach)
增强for循环
相对于经典for循环, foreach可以减少代码量,但不是所有情况下foreach都可以代替for循环
当需要修改元素的值或和下标相关的操作需要使用标准for循环
foreach格式
for (数组元素类型 临时变量: 遍历的对象) {}
临时变量代表的是数组的元素,而非下标
foreach对对象进行只读访问, 具有一定的安全性, 因此对数组/集合遍历时优选增强for循环
// 经典for循环
import java.util.Random;
int[] arr = new int[5];
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(100) + 1;
}
for (int i = 0; i < arr.length; i++) {
int tem = arr[i];
tmp *= 10;
System.out.print(tmp + " ");
}
System.out.println();
以上代码可简化为:
int[] arr = new int[5];
Random r = new Random;
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(100) + 1;
}
for (int i: arr2) {
System.out.print((i *= 10) + " ");
}
找出数组中的最值并求和
int max, min, sum;
max = 0x80000000;
min = 0x7FFFFFFF;
sum = 0;
for (int i: arr) {
max = max > i? max: i;
min = min < i? min: i;
sum += i;
}
System.out.println("max: " + max + " min: " + min + " sum: " + sum);
删除列表中指定下标的元素, 并缩减数组
// Person.java
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String say(Person person) {
return person.name + " " + person.age;
}
}
// Student.java
public class Student extends Person{
private String sno;
public Student() {}
public Student(String sno) {
this.sno = sno;
}
public Student(String sno, String name, int age) {
super(name, age);
this.sno = sno;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public void say() {
String str = super.say(this);
System.out.println(this.sno + " " + str);
}
}
// Demo.java
Student[] studentArr = new Student[5];
studentArr[0] = new Student("001", "小一", 17);
studentArr[1] = new Student("002", "大二", 18);
studentArr[2] = new Student("003", "张三", 19);
studentArr[3] = new Student("004", "李四", 17);
studentArr[4] = new Student("005", "王五", 18);
int index = 2;
int count = studentArr.length - 1;
// 将删除元素的右侧所有元素左移
for (int i = index; i < studentArr.length - 1; i++) {
studentArr[i] = studentArr[i + 1];
}
// 最后一个元素置为null
studentArr[studentArr.length - 1] = null;
// 调用student的say方法
for (Student student: studentArr) {
if (student != null){
student.say();
} else {
System.out.println(student);
}
}
System.out.println("=====================");
// 缩减数组
Student[] studentArray = new Student[count];
for (int i = 0; i < studentArray.length; i++) {
studentArray[i] = studentArr[i];
}
// 将旧数组指向新数组地址
studentArr = studentArray;
for (Student student: studentArr) {
student.say();
}
Java -- 增强for循环(foreach)的更多相关文章
- “全栈2019”Java第三十二章:增强for循环Foreach语法
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java 增强 for 循环
Java 增强 for 循环 Java5 引入了一种主要用于数组的增强型 for 循环. Java 增强 for 循环语法格式如下: for(声明语句 : 表达式) { //代码句子 } 声明语句:声 ...
- java增强for循环中获取index
java增强for循环中获取index http://rensanning.iteye.com/blog/2003205
- java 增强for循环与泛型
一 增强for循环 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的.它的内部 原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作 ...
- Java中的增强 for 循环 foreach
foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理.能够提高性能,并减少代码出错的几率.在 J ...
- java 流程执行 循环 foreach循环
一. if分支 1. 结构 if else if else 2.执行原则 if if if 结构 会一直去执行()里的判断语句 if else if else if 结构 只要一条( ...
- 增强for循环 -- foreach循环
1 作用 简化迭代器的书写格式.(注意:foreach循环的底层还是使用了迭代器遍历.) 2 适用范围 如果是实现了Iterable接口的对象或者是数组对象都可以使用foreach循环. 3 格 ...
- JAVA增强for循环
作用:简化数组和集合的遍历 格式:for(元素数据类型 变量 :数组或者集合) 例子: Map map=new HashMap; for(Object obj :map.keySet()){ Obj ...
- java 增强for循环对于空集和null的判断
List<String> list = null; for (String str : list) {//会报空指针异常 System.out.println(str); } List&l ...
- Java基础系列(24)- 增强for循环
增强for循环 这里我们先只是见一面,做个了解,之后数组部分会重点使用 Java5引入了一种主要用于数组或集合的增强型for循环 Java增强for循环语法格式如下 for(声明语句:表达式){ // ...
随机推荐
- fiddler 实现跨域
static function OnBeforeResponse(oSession: Session) { ... if(oSession.uriContains("要处理的url" ...
- Springboot项目记录1配置环境
一.电脑商城项目: 项目功能:登录,注册,热销商品,用户管理(密码,个人信息,头像,收货地址).购物车(展示.增加.删除).订单模块. 二.开发顺序: 注册.登录.用户管理.购物车.商品.订单模块 三 ...
- Linux安装ODBC连接SQLServer数据库
操作系统:Centos7.2 1.下载ODBC安装包 unixODBC-2.3.9.tar.gz freetds-1.3.9.tar.gz 下载这两个压缩包的地址:ftp://ftp.freetds. ...
- 12.21linux学习第二十天
今天老刘讲最后一章,第20章使用LNMP架构部署动态网站环境.定制安装17个安装包,编译安装要花很长时间,需要漫长的等待. LNMP动态网站部署架构是一套由Linux + Nginx + MySQL ...
- 了解JAVA基本知识以及一下常用的dos命令
9月5日学习 常用的Dos命令 #盘符切换盘符名称: =>回车#查看当前目录下的所有文件dir#切换目录 cd change directorycd .. =>返回上一级目录#清理屏 ...
- 正确理解RestFul 接口
一.REST# REST,即Representational State Transfer的缩写,翻译过来就是"表现层状态转化".不得不承认,我在刚开始看到这个名词的时候是一脸懵逼 ...
- 位运算与MOD快速幂详细知识点
最近写的一些题目设计到了数论的取模 如下题 链接:https://ac.nowcoder.com/acm/contest/3003/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制: ...
- Eclipse离线安装svn插件下载
site-1.4.8.zip site-1.6.18.zip site-1.8.22.zip site-1.10.9.zip site-1.10.13-1.9.x.zip site-1.10.13-1 ...
- Lombok和MapStruct冲突
Lombok和MapStruct冲突导致无法生成正确的class文件. lombok自动生成getset等冗余代码. MapStruct对象copy.传统的BeanUtils.copy等利用的反射原理 ...
- MATLAB默认路径修改
笔者曾尝试在软件界面的"设置路径"或者Parallel中修改默认路径,但多次尝试均失败.后来经人提点,MATLAB默认文件夹路径可以在桌面图标属性中"起始位置" ...