从零开始学Java(三)操作符与流程控制

1Java中与流程控制相关的关键字包括:if-else,switch,while,do-while,for,return,break,continue。注意,其中并不包括goto

句,但是在Java中仍然可以进行类似goto那样的跳转。


2Java里唯一用到逗号操作符的地方就是for循环的控制表达式——使用一系列逗号分隔的语句,而且那些语句均会独立执行。


3foreach循环


1)使用场合

1)数组可以使用foreach,例如:


for(char c : “An African Swallow”.toCharArray()){
	System.out.print(c + “ ”);
}


2foreach还可以用于任何Iterable对象。


2)要使自定义类支持foreach循环

1)可以让该类实现Iterable<T>接口并重写其中的


public Iterator<T> iterator() //返回一个自定义Iterator对象;


2自定义Iterator对象可以通过在自定义类中作为一个内部类来写,该内部类需要实现Iterator<T>接口,因而必须重写其中的如下2

个方法


public boolean hasNext() 
public String next()


3)例子:


package com.hemeng.study.chapter4.demo;

import java.util.Iterator;

/**
 * 装有很多水果的果篮,用于练习Iterable接口
 * 
 * @author hemeng
 *
 */
public class FruitBasket implements Iterable<String> {
	private int size;
	private int currentIndex;
	private String[] fruit;
	
	public FruitBasket(){
		this.size = 20;
		this.currentIndex = 0;
		this.fruit = new String[size];
	}
	
	/**
	 * construct a basket with the specific size.
	 * 
	 * @param size
	 */
	public FruitBasket(int size){
		this.size = size;
		this.currentIndex = 0;
		this.fruit = new String[size];
	}
	
	/**
	 * add a fruit to the basket.
	 * 
	 * @param fruitName
	 */
	public void add(String fruitName){
		if(this.currentIndex < size){
			this.fruit[this.currentIndex++] = fruitName;
		}
	}
		
	@Override
	public Iterator<String> iterator() {
		// TODO Auto-generated method stub
		return new FruitIterator();
	}
	
	/**
	 * 内部类用作“public Iterator<String> iterator()”返回的迭代器
	 * 
	 * @author hemeng
	 *
	 */
	class FruitIterator implements Iterator<String> {
		private int index = 0;
		
		@Override
		public boolean hasNext() {
			// TODO Auto-generated method stub
			return index != fruit.length;
		}

		@Override
		public String next() {
			// TODO Auto-generated method stub
			return fruit[index++];
		}		
	}
}


4、在switch语句中,case后面的选择因子必须是intchar那样的整数值(也可以是枚举类型),而对于非整数类型(例如:字符串

或者浮点数)则必须选用一系列if语句来实现。


           

5continuebreak语句

1)不带标签时,这两个语句默认相对于当前循环(最内层while,do-while,forforeach循环)。continue语句表示跳过当前循环

本次循环的剩余语句,直接开始当前循环的新的一次循环,而break则表示跳过当前循环的剩余语句,并且不在执行当前循环的其它

次循环;


2)带标签。

标签的用法一般作如下限制:1)标签紧放在循环语句开始之前;2)标签通常只用于嵌套循环的跳转。

带标签的continuebreak语句不再以当前循环为默认循环,而是根据其后的标签所对应的循环进行跳转。例如:


label1:
outer-iteration {
	inner-iteration {
		//...
		break; //(1)
		//...
		continue; //(2)
		//...
		continue label1; //(3)
		//...
		break label1; //(4)
	}
}


(1)中,break中断内部迭代,回到外部迭代。在(2)中,continue使执行点移回内部迭代的起始处。在(3)中,continuelabel1同时

中断内部迭代,直接转到label1处;随后,它实际上是继续迭代过程,但却从外部迭代开始。在(4)中,breaklabel1也会中断所有迭

代,并回到label1处,但并不重新进入迭代。也就是说,它实际是完全中止了两个迭代。



参考资料:


《Java编程思想(第4版)》


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值