周一,时间,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接口(唯一,无序)
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();
}