java学习20天总结7-31到8-4

xiaoxiao2021-02-28  67

周一,时间,Math,File。枚举

package lianxi20170805Datatime; import java.text.Format; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.MissingFormatArgumentException; public class Shijian {     public static void main(String[] args) throws Exception {         Date a = new Date();//new时,需要导入import java.util.Date这个包         System.out.println(a);         long b=a.getTime();//getTime()表示的是从1970年1月1日开始到现在的毫秒数         long c=a.getTime();         long t=c-b;        //通过时间相减可以得到时间差                  System.out.println(t);         System.out.println(a.getDate());//表示现在几号         System.out.println(a.getDay());//表示今天星期几         System.out.println(a.getMonth());//表示月份减一   ,现在八月,显示7         System.out.println(a.getYear()+1900);//getyear表示的是从1900到现在的时间,所以需要加上1900,才是现在的年份         //时间转字符串         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//时间格式化形式,创建一个对象                                          //Oracle类里面时间格式(“yyyy-mm-dd hh24:mi:ss”)         String f = sdf.format(a);    //对象去调用方法.format(),返回一个字符串f,输出f         System.out.println(f);            SimpleDateFormat sddf = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");         String ss = sddf.format(a);         System.out.println(ss);         //字符串转时间         String dsd="2017-10-18 15:17:56";//字符串要定义时间格式         SimpleDateFormat nsdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//simpledateformat遵循String定义的格式         Date ssss = nsdf.parse(dsd);  //调用parse方法,将字符串转为时间格式。         System.out.println(ssss);                  //**********************************************************************************************         /***          * 接下来是calendar          * calendar是抽象类,用于获取某个特别时间          *          *          */         Calendar ca=Calendar.getInstance();//抽象类只能用单例获取,         Date da = ca.getTime();  //对象调用方法,获取的是当前时间         System.out.println(da);         ca.set(2017, 9, 15 );    //设置时间         System.out.println(ca.getTime());//输出时间                  Math用的比较少,主要是他的PI,以及Math.random()来获取[0,1)的随机数。                       } }

****************************************************************************

File文件类,方法比较多

File a=new File("地址");  地址一般指方向,表明你要在哪动手。

方法主要有:exit(),  表明文件是否存在  isFile()  判断是否是文件   idDirectory()  判断是否是文件夹    

getPath()    得到相对路径            getAbsolutePath()得到相对路径            getName() 得到文件名字

  Delete()       删除文件       CreatNewFile()    创造新的文件夹       length()得到文件的大小

对应的练习有这些

package lianxi20170805Datatime; import java.io.File; import java.io.IOException; public class FileDemo { /**  * 这是文件类  * @throws IOException  */          public static void main(String[] args) throws IOException {     //File a=    new File("d:/ggg/abc.txt");                  File file = new File("d:/ggg");   //创建一个文件对象,并说明在哪里创建         File file2 = new File("d:/ser.txt");         System.out.println(file.getPath());  //得到文件的相对路径         File[] s = file.listFiles();   //得到文件的所有文件名,并以数组的方式存放         for(File ff:s){                          System.out.println(ff);   ///遍历循环,输出文件名         }         File f3 = new File("d:/ssd");         f3.mkdirs();         f3=new File("d:/ssd/123.txt");         f3.createNewFile();        /* File f3 = new File("d:/a/b");//创建一个对象 ,指明路径                  f3.mkdirs(); //创建相对应的文件夹         f3 = new File("d:/a/b/123.txt");//指明要创建文件         f3.createNewFile();     //创建文件 */                  //*********************************         //展现文件         File ssds=new File("d:/eclipse");          run(ssds);              }     //展现某路径下的全部文件     public static void run(File f){         if(null!=f){             if(f.isDirectory()){                 File[] fis = f.listFiles();                 for(File ff:fis){                     run(ff);                                      }                                               }else{                 //如果是文件,输出文件路径                 String s = f.getAbsolutePath();                 System.out.println(s);                                      }                  }         } } ========================================================================================枚举

package lianxi20170805Datatime; public enum EnumDemo {     nan, nv } package lianxi20170805Datatime; /**  * 练习枚举 1它是一个类,在同包的EnumDemo里面,只能定义常量,  *  * @author 27639  *  */ public class Student {     public EnumDemo sex; // 定义属性时,需要用枚举的类名来定义     public static void main(String[] args) {         Student s = new Student();         s.sex = EnumDemo.nv; // 枚举赋值时,需要用类名.属性来赋值     } }

周二,集合框架ArrayList   LinkedList     HashSet    TreeSet

package lianxi20170805Datatime; /**  * 集合list,方法的使用,要导入ArrayList包  */ import java.util.ArrayList; import java.util.Iterator; public class ArraylistDemo {  String name;  int age;  EnumDemo sex; public ArraylistDemo(String name, int age, EnumDemo sex) {     this.name = name;     this.age = age;     this.sex = sex; }     public static void main(String[] args) {         //定义对象         ArraylistDemo a1 = new ArraylistDemo("zhangsan ", 18, EnumDemo.nan);         ArraylistDemo a2 = new ArraylistDemo("zhangsan2 ", 18, EnumDemo.nan);         ArraylistDemo a3 = new ArraylistDemo("zhangsan3 ", 18, EnumDemo.nan);         ArraylistDemo a4 = new ArraylistDemo("zhangsan4", 18, EnumDemo.nan);      //用集合构建对象         ArrayList<ArraylistDemo> a=new     ArrayList<ArraylistDemo>();         //a.add(),添加元素,可以是混合的,也可以是单一的,在<>里面定义,         a.add(a1);         a.add(a2);         a.add(a3);         a.add(2, a4);         System.out.println(a.size());//输出集合的元素个数         for(int i=0;i<a.size();i++){  //遍历                          System.out.println(a.get(i).toString());//输出,由于是混合的,所以重写了toString 方法                      }         //************************************************         for(ArraylistDemo sd:a){            //用foreach循环             System.out.println(sd);                                   }                           //***************************************     //    迭代器遍历,用对象a,调用迭代方法---a.iterator(),ctrl+1--完善。         //用迭代器来循环,可以添加元素         Iterator<ArraylistDemo> it = a.iterator();         while(it.hasNext()){   //当集合指针后面还有下一个时,继续 //            if(it.next().equals(sb)){    可以通过判断条件来对集合进行添加元素 //                a.add(c);                 foreach和for循环都有局限性,容易变成死循环 //            }                                因为改变了集合的个数,可能会有下标越界和条件一直满足,从而死循环的可能             System.out.println(it.next());  //输出指针后面的元素                                   }     //                                  }     @Override     public String toString() {         return "ArraylistDemo [name=" + name + ", age=" + age + ", sex=" + sex                 + "]";     }                               } =====================================

LinkedList

方法主要有3个,增,删,改

增----offerFirst()在头部增加,offerLast()在尾部增加

删---pollFirst() ----- 删除第一个     polllast()--删除最后一个

获取-------peekFirst   获取第一个   peekLast   获取最后一个

set接口(唯一,无序)

package lianxi20170805Datatime; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map.Entry; import java.util.Set; public class MapDemo {     String name;  //定义属性     int age;     String home;     //构造方法     public MapDemo(String name, int age, String home) {         this.name = name;         this.age = age;         this.home = home;     }     public static void main(String[] args) {         MapDemo m1 = new MapDemo("小花", 18, "henan");         //构造对象         MapDemo m2 = new MapDemo("小嗐", 18, "henan");         MapDemo m3 = new MapDemo("小还", 18, "henan");  /*  ArrayList<MapDemo> a1 = new    ArrayList<MapDemo>();    a1.add(m1);    a1.add(m2);    a1.add(m3);*/    //使用HashMap存储对象         HashMap<String,MapDemo> hm = new HashMap<String,MapDemo>();         hm.put(m1.name, m1);     //添加元素用对象.put()添加对象,并且确定其Key的内容,以及value的内容         hm.put(m2.name, m1);         hm.put(m3.name, m1);         MapDemo m = hm.get("小还");  //用get,通过key来调取value的值,暂时用这个比较低级的方法         System.out.println(m);         System.out.println("******************三种遍历方式***************************");         Collection<MapDemo> cc = hm.values();         System.out.println("方法一");         for(MapDemo e:cc){             System.out.println(e);         }                  System.out.println("方法二");         Set<String> kk = hm.keySet();         for(String s:kk){             MapDemo md = hm.get(s);             System.out.println(md);         }         System.out.println("方法三");         Set<Entry<String, MapDemo>> en = hm.entrySet();         for(Entry<String, MapDemo> sss:en){             System.out.println(sss.getValue());                }           }     @Override     public String toString() {         return "MapDemo [name=" + name + ", age=" + age + ", home=" + home                 + "]";     } }

周四 

文本文件的读写

     用Fileinputstream和FileOutputStream读写文本文件

     用BufferedReader和BuffererWriter读写文本文件

二进制文件的读写

    使用DataInputStream和DataOutPutstream读写二进制和基本数据类型文本文件

  对象的读写

   使用Object Input Stream和objectOutputStream读写文件(序列化和反序列化)

package lianxi20170805Datatime; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; public class FileInputStreamDemo {                    @SuppressWarnings("resource")     public static void main(String[] args) throws Exception {                 FileInputStream fis = new FileInputStream("e:/我的青春谁做主.txt");            int len=0;                                           byte b[]= new byte[1024];                //定义数组,以数组的形式读取文件内容            while((len=fis.read(b))!=-1){           //当读取的内容为空的时候,返回-1,循环结束                                System.out.println(len);            //返回内容的字节数                System.out.println(b);              //输出内容的地址                System.out.println(new String(b));  //将数组的内容转为字符串            }                                    fis.close();         FileOutputStream fot = new   FileOutputStream("e:/我的青春谁做主.txt");  //在哪里写入                        String s="我是苏离";             //定义字符串            fot.write(s.getBytes());        //s.getBytes()            fot.write("我来自离山".getBytes());  //上面两步合为一部            fot.close();                   System.out.println("**************将一个文件从一个盘拷贝到另一个盘***************************************");                        FileInputStream nfit = new FileInputStream("e:/我的青春谁做主.txt");            File ff = new File("c:/fdd/");  //先指明要写入的路径,c:/fdd/ 是为了写好文件夹            if(!ff.exists()){              //判断文件夹是否存在                ff.mkdirs();               //如果不存在,那么创造一个            }            ff=new File("c:/fdd/o.txt");    //指明文件的路径            if(!ff.exists()){               //判断文件是否存在                                ff.createNewFile();        //不存在的化,创造一个            }                                                                  //在这里,一定要这样写不能一次写完,否则会出现拒绝访问,或者找不到文件异常            FileOutputStream nfos = new FileOutputStream(ff);            int le=0;            byte c[]=new byte[1024];            while((le=nfit.read(c))!=-1){        //读的流程                nfos.write(c);                    //由于有写入的流,所以在读取的时候,可以直接写入                            }                        nfos.close();                                  nfit.close();                      //关流                        System.out.println("**************FileReader的用法********************************");                        FileReader fr = new FileReader("e:/我的青春谁做主.txt"); //构造方法没什么不同,但是这是字节流            int lenn=0;            char cc[]=new char[1024];                       //最小单位是字节,所以读的的2048个字节,用来读汉子比较合适            StringBuffer sb=new StringBuffer();   //字符缓冲,在循环里面最好不要用String,占内存,StringBuffer更合适            while((len=fr.read(cc))!=-1){                sb.append(cc);                                                              }            System.out.println(sb);            fr.close();            System.out.println("***************FileReader进化版,BufferReader**********************************************");            FileReader nfr = new FileReader("e:/我的青春谁做主.txt");            BufferedReader bf = new BufferedReader(nfr);            String sss=null;            while((sss=bf.readLine())!=null){                                System.out.println(sss);                            }                        System.out.println("*****************FileWriter写入*************************************");                        FileWriter fw = new FileWriter("e:/我的青春谁做主.txt");            fw.write("苏离走了");            fw.flush();            fw.close();                        System.out.println("******************FileWriter进化版********************************************");                        FileWriter nfw = new FileWriter("e:/我的青春谁做主.txt");            BufferedWriter nbw = new BufferedWriter(nfw);            nbw.write("wo苏离又回来了");            nbw.flush();            nbw.close();            nfw.close();               }       } 周五,线程

主要讲的是创造线程的基本方法,有两个

一。继承Thread,

二,实现runnable接口,(这是一个买票的问题,解决了可能因为多线程带来的麻烦。)

package zhengze; public class Ticket implements Runnable{ int a=5; @Override public synchronized void run() { if(a>0){ System.out.println("还有"+a+"张票"); a--; }else{ System.out.println("票卖完了"); } } public static void main(String[] args) throws InterruptedException { Ticket b=new Ticket(); Thread d=new Thread(b); d.start(); Thread s=new Thread(b); s.start(); new Thread(b).start(); new Thread(b).start(); new Thread(b).start(); Thread.sleep(1000); new Thread(b).start(); }

转载请注明原文地址: https://www.6miu.com/read-29243.html

最新回复(0)