java学习心得

来源:互联网 发布:choice数据机构荐股 编辑:程序博客网 时间:2024/04/20 12:40

       今天是周末,好久都没有写作业了,今天趁周末有空一口气写出来准备星期一就交。(说实在的,学计算机的做作业正是无聊,尤其是书后的练习。。。)
      不过,既然作了,还是有点收获的。毕竟java平台是最近一个月才转过来的,俺以前一直是搞VB和C#的。如果不是学习开了java课,可能暂时还不会转移到java平台。java 的开发工具实在没有 Visual Studio .NET2003 好用,就连 VS6.0都赶不上。<呵呵>当然,Eclipse、NetBeans IDE也是不错的开发工具,俺也打算今后采用 Linux+Apache+MySQL作系统了。C#将不会是首选了。

      下面把今天写的程序中,有用的几个列出了。
1-获取指定目录的信息(文件/文件夹)

     import java.io.*;
import java.util.Date;
public class Alone13_1 {
    public static void main(String[] args) throws IOException {
        File f=new File(new BufferedReader(
                  new InputStreamReader(System.in)).readLine());
        File []fs=f.listFiles();
        for(int i=0;i<f.length();i++)
        {
            if(fs[i].isDirectory())
                System.out.println("目录:"+fs[i]);
            else
                {
                System.out.print("文件:"+fs[i]);
                System.out.print(" 大小:"+fs[i].length()/1024+"Kbyte ");
                if(fs[i].isHidden())System.out.print("隐藏属性:是 ");
                else System.out.print("隐藏属性:是 ");
                System.out.print("日期:"+
                        new Date(fs[i].lastModified()).toLocaleString()+"/n");
                }
        }
    }
}

2-java中对象序列化并写入文件的例子(注意:未实现把对象从文件中读取,只实现了写入)
package lx;
import java.io.*;
public class P201_1 {
    public static void main(String[] args) throws IOException {
        student[] s=new student[100];
        int n=0;
        String fp="D://obj.data";
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(fp));
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String data=null;
        System.out.println("/n请输入名字及国语,英语,数学,科学的成绩。(eof:输入完毕)");
        while(true)
        {       
            data=br.readLine();
            if(data.equals("eof"))break;
            s[n]=new student(data);
            n++;           
        }
        System.out.println("写入文件的对象为:");
        for(int i=0;i<n;i++){           
            oos.writeObject(s[i]);
            s[i].get();    }
        oos.close();
        System.out.println("已将"+n+"个对象写入文件!");           
    }   
}
class student implements Serializable{
    private static final long serialVersionUID = 5297152510487875285L;
    String name;
    int[] record=new int[4];
    int total;
    float avg;
    String grade;   
    student(String data)
    {
        total=0;
        avg=0;
        set(data);
    }   
    public void set(String data)
    {
        int i=data.indexOf(" ");
        name=data.substring(0,i);
        data=data.substring(i+1,data.length());
        for(int k=0;k<4;k++)
        {
            int p=data.indexOf(" ");
            if(p!=-1){
                record[k]=Integer.parseInt(data.substring(0,p));
                data=data.substring(p+1,data.length());
            }
            else
                record[k]=Integer.parseInt(data);
            total+=record[k];
        }
        avg=total/4;       
    }
    public void get()
    {
       System.out.print("姓名:"+name+" 国语:"+record[0]+" 英语:"+
               record[1]+" 数学:"+record[2]+" 科学:"+record[3]+"/n");   
    }
}

今天一共写了12道题目,不过觉得只有上面2个题目最有意思。其他的几乎是在重复n年前学习C语言时的作业题。也许我国的教育就是喜欢用新式武器去处理陈年芝麻吧。。。

小结:
    从控制台输入数据的办法。(注意:java只能从控制台输入字符串,如果需要其他数据,需要自行转换)
例如:输入字符串(需导入  import java.io.*;)
        String s=null;
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        s = br.readLine();
   从控制台输入整数:
        int n1=Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
        System.out.println(n1);
   对象的序列化需要加入关键字implements Serializable,并且在类体中加入
   private static final long serialVersionUID = 5297152510487875285L;
  (至于原因嘛,今天偷懒了,没有仔细研究,等明天好好看看书。呵呵)