JDK 5 的for增强型循环问题。
private void test() {
Integer[] ii = new Integer[10];
for (Integer i : ii) {
i = 1;
System.out.print(i);
}
System.out.print( "\n ");
for (Integer i : ii){
System.out.print(i);
}
}
结果是这样:
1111111111
nullnullnullnullnullnullnullnullnullnull
更不用说把Integer[]改成int[]了,jdk5 的for 增强循环未免太差了点吧,本来以为只是基础数据类型数组没有作autoboxing,为什么对象数组也这样?
private void test() {
String[] ii = new String[10];
for (String i : ii) {
i = "1_ ";
System.out.print(i);
}
System.out.print( "\n ");
for (String i:ii){
System.out.print(i);
}
}
结果也是:
1_1_1_1_1_1_1_1_1_1_
nullnullnullnullnullnullnullnullnullnull
------解决方案--------------------for增强循环,这里取出来的值就好像参数传递中的一样,窃以为
String[] ii=new String[10];
for(String i:ii)
{
i= "1_ ";
}
等同于
for(int j=0;j <ii.length;j++)
{
String i=ii[j];
//这里进行赋值操作 i= "1_ " 只相当于对临时变量i赋值,i= "1_ ",而没有操作到ii[j]的实际内容,故赋值没有意义
}
------解决方案--------------------foreach 没法访问定位,也就没办法修改,删除 集合中的内容
不过它可以
public class Check{
public static boolean check(Object...objects){
boolean result=false;
for(Object obj:objects){
if((((String)obj).trim().equals( " "))
return result=true;
}
return result;
}
}
上面的程序是检查输入的n个参数是否是由空格组成
调用的时候可以输入多个参数
如:
boolean pd1=Check.check( "string1 ");
boolean pd2=Check.check( "string1 ", "string2 ");
boolean pd3=Check.check( "string1 ", "string2 ", "string3 ");
都可以
Object...objects中第一个Object表示行参类型 第2个objects是行参名 中间三个点是固定写法 大概是表示多个的意思吧 我猜的 HOHO~ ^_^