首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

在ArrayList中存放的字符串数组为什么自动清空了?该怎么处理

2012-01-12 
在ArrayList中存放的字符串数组为什么自动清空了?Java codepublic static ArrayList ReadSqlConfing(Strin

在ArrayList中存放的字符串数组为什么自动清空了?

Java code
    public static ArrayList ReadSqlConfing(String str) throws FileNotFoundException, IOException{        FileReader myFileReader=new FileReader(str);        BufferedReader myBufferedReader=new BufferedReader(myFileReader);        String myString=null;        ArrayList<String []> myal=new ArrayList<String []>();                String mysql="";        String filename="";       //tempal[0]="";       //tempal[1]="";        //String tmpstr[]=new String[2];        /*while((myString=myBufferedReader.readLine())!=null)        { System.out.println(myString);        }*/                 int i=0;       while((myString=myBufferedReader.readLine())!=null)        { //System.out.println(myString.indexOf("//-->"));           if(myString.indexOf("//-->")>=0){                filename=myString.replace("//-->","");//取得要保存的文件名                //System.out.println(filename);               String tempal[]=new String[2];                tempal[0]=mysql;                tempal[1]=filename;                //myal.add(i,new String[2]);                myal.add(i,tempal);                i++;                System.out.println("i="+i+"  filename="+filename+" ");                mysql="";                filename="";                tempal[0]="";                tempal[1]="";           }           else{              mysql=mysql+myString;           }        }       myFileReader.close();              for(int m=0;m<myal.size();m++){           String tempal[]=new String[2];           tempal= (String[])myal.get(m);           System.out.println(tempal[0]);           System.out.println(tempal[1]);       }        return myal;    }

这段代码为什么在最后打出来的tempal[0]和tempal[1]都是空呢?

[解决办法]
Java code
while((myString=myBufferedReader.readLine())!=null)        { //System.out.println(myString.indexOf("//-->"));           if(myString.indexOf("//-->")>=0){                filename=myString.replace("//-->","");//取得要保存的文件名                //System.out.println(filename);               String tempal[]=new String[2];                tempal[0]=mysql;                tempal[1]=filename;                //myal.add(i,new String[2]);                myal.add(i,tempal);                i++;                System.out.println("i="+i+"  filename="+filename+" ");                mysql="";                filename="";                tempal[0]="";   //   删除这行                tempal[1]="";   //   删除这行           }           else{              mysql=mysql+myString;           }
[解决办法]
这些都是引用变量,如果你把它们赋给其它的话
修改任何一处都会导致原来的值被修改
[解决办法]
数组和对象都是存储引用的。

tempal和你list里的对象都是同一个,你可以通过==判断一下,因为它们是同一个引用,只是名称不同而已。
[解决办法]
探讨
数组和对象都是存储引用的。

tempal和你list里的对象都是同一个,你可以通过==判断一下,因为它们是同一个引用,只是名称不同而已。

热点排行