java小知识点

IO流
import java.io.File;

public class TestFile {

public static void main(String[] args) {
    // 绝对路径
    File f1 = new File("d:/LOLFolder");
    System.out.println("f1的绝对路径:" + f1.getAbsolutePath());
    // 相对路径,相对于工作目录,如果在eclipse中,就是项目目录
    File f2 = new File("LOL.exe");
    System.out.println("f2的绝对路径:" + f2.getAbsolutePath());

    // 把f1作为父目录创建文件对象
    File f3 = new File(f1, "LOL.exe");

    System.out.println("f3的绝对路径:" + f3.getAbsolutePath());
}

}


import java.io.File;
import java.util.Date;

public class TestFile {

public static void main(String[] args) {

    File f = new File("d:/LOLFolder/LOL.exe");
    System.out.println("当前文件是:" +f);
    //文件是否存在
    System.out.println("判断是否存在:"+f.exists());
     
    //是否是文件夹
    System.out.println("判断是否是文件夹:"+f.isDirectory());
      
    //是否是文件(非文件夹)
    System.out.println("判断是否是文件:"+f.isFile());
      
    //文件长度
    System.out.println("获取文件的长度:"+f.length());
      
    //文件最后修改时间
    long time = f.lastModified();
    Date d = new Date(time);
    System.out.println("获取文件的最后修改时间:"+d);
    //设置文件修改时间为1970.1.1 08:00:00
    f.setLastModified(0);
      
    //文件重命名
    File f2 =new File("d:/LOLFolder/DOTA.exe");
    f.renameTo(f2);
    System.out.println("把LOL.exe改名成了DOTA.exe");
     
    System.out.println("注意: 需要在D:\\LOLFolder确实存在一个LOL.exe,\r\n才可以看到对应的文件长度、修改时间等信息");
}

}
运行结果截图
在这里插入图片描述


遍历文件夹
package file;

import java.io.File;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;

public class TestFile {

public static void main(String[] args) throws IOException {

    File f = new File("C:\\WINDOWS");

    float file_max_size = 0f;
    float file_min_size = 10000f;

    // 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
    File[] fs = f.listFiles();
    File max_file = null;
    File min_file = null;

    for (File file : fs) {

        if (file.isFile()) {

            if (file_max_size < file.length()) {
                file_max_size = file.length();
                max_file = file;
            }
            if (file_min_size > file.length()) {
                file_min_size = file.length();
                min_file = file;
            }
        }

    }
    System.out.println("最大的文件是" + max_file.getAbsolutePath() + ",其大小是" + file_max_size + "字节");
    System.out.println("最小的文件是" + min_file.getAbsolutePath() + ",其大小是" + file_min_size + "字节");

}

}


泛型
使用泛型的好处:
泛型的用法是在容器后面添加《<Type类型>》
Type可以是类,抽象类,接口
泛型表示这种容器,只能存放APHero,ADHero就放不进去了。


多线程

3种方式再整理一下:

  1. 继承Thread类
  2. 实现Runnable接口
  3. 匿名类的方式

注: 启动线程是start()方法,run()并不能启动一个新的线程
package multiplethread;

import charactor.Hero;

public class KillThread extends Thread{

private Hero h1;
private Hero h2;

public KillThread(Hero h1, Hero h2){
    this.h1 = h1;
    this.h2 = h2;
}

public void run(){
    while(!h2.isDead()){
        h1.attackHero(h2);
    }
}

}

。。
package multiplethread;

import charactor.Hero;

public class TestThread {

public static void main(String[] args) {
     
    Hero gareen = new Hero();
    gareen.name = "盖伦";
    gareen.hp = 616;
    gareen.damage = 50;

    Hero teemo = new Hero();
    teemo.name = "提莫";
    teemo.hp = 300;
    teemo.damage = 30;
     
    Hero bh = new Hero();
    bh.name = "赏金猎人";
    bh.hp = 500;
    bh.damage = 65;
     
    Hero leesin = new Hero();
    leesin.name = "盲僧";
    leesin.hp = 455;
    leesin.damage = 80;
     
    KillThread killThread1 = new KillThread(gareen,teemo);
    killThread1.start();
    KillThread killThread2 = new KillThread(bh,leesin);
    killThread2.start();
     
}

}

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值