1、Java中的for循环
不严格的说,Java的第二种for循环基本是这样的格式:
for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体
借助这种语法,遍历一个数组的操作就可以采取这样的写法:
例1:遍历数组的简单方式
/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int i : integers) {
System.out.println(i);/* 依次输出“1”、“2”、“3”、“4” */
}
//这里所用的for循环,会在编译期间被看成是这样的形式:遍历数组的简单方式的等价代码
/* 建立一个数组 */
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int 变量名甲 = 0; 变量名甲 < integers.length; 变量名甲++){
System.out.println(变量名甲);/*依次输出“1”、“2”、“3”、“4” */
}
//这里的“变量名甲”是一个由编译器自动生成的不会造成混乱的名字。
例2:遍历一个Collection的操作也就可以采用这样的写法:
//遍历Collection的简单方式
/* 建立一个Collection */
String[] strings = {"A", "B", "C", "D"};
Collection list = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Object str : list) {
System.out.println(str);/* 依次输出“A”、“B”、“C”、“D” */
}
//这里所用的for循环,则会在编译期间被看成是这样的形式:遍历Collection的简单方式的等价代码
/* 建立一个Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Iterator 变量名乙 = list.iterator(); 变量名乙.hasNext();) {
System.out.println(变量名乙.next());//依次输出“A”、“B”、“C”、“D”
}
/*这里的“变量名乙”也是一个由编译器自动生成的不会造成混乱的名字。因为在编译期间,编译器会把这种形式的for循环,看成是对应的传统形式,所以不必担心出现性能方面的问题。*/
二、foreach()循环
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。
foreach的语句格式:
foreach(数据类型 标识符 in 表达式){
//引用了标识符的循环体
}
public void test1() {
//定义并初始化一个数组
int arr[] = {2, 3, 1};
System.out.println("排序前的一维数组");
for (int x : arr) {
System.out.println(x); //逐个输出数组元素的值
}
//对数组排序
Arrays.sort(arr);
//利用java新特性for each循环输出数组
System.out.println("排序后的一维数组");
foreach (int x in arr) {
System.out.println(x); //逐个输出数组元素的值
}
}
运行结果:
排序前的一维数组
2
3
1
排序后的一维数组
1
2
3
三、java中的instanceof
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object不是指定类的一个实例,或者 object 是 null,则返回 false。
例:
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = “I AM an Object!”;
boolean isObject = s instanceof Object;
我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为true。
4、js里的for循环定义如下:
for(var variable in obj) { ... }
obj可以是一个普通的js对象或者一个数组。如果obj是js对象,那么variable在遍历中得到的是对象的属性的名字,而不是属性对应的值。如果obj是数组,那么variable在遍历中得到的是数组的下标。
//例1
var v = {};
v.field1 = "a";
v.field2 = "b";
for(var v in v) {
console.log(v);
}
//控制台下输出:
field1
field2
//例2
var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"
for (var x in mycars){
console.log(x);
}
//控制台输出:
0
1
2