Java常用类System、Math和File类

本文详细介绍了Java中的System类,包括标准输入输出流、数组拷贝和时间戳等方法。接着讲解了Math类的数学运算,如绝对值、平方根等,并展示了斐波那契数列的计算。最后,讨论了File类在文件和目录操作中的应用,包括创建、删除、获取属性等。通过示例代码演示了如何在Java中操作文件和目录。
摘要由CSDN通过智能技术生成

Java

一、System:系统类

System中包含一些有用的类字段和方法,不能够进行实例化
public final class System extends Object

特点:
    构造器是私有的,是使用private进行修饰的,不能够创建对象

属性:
    标准输入流
        public static final InputStream in
        调用它
        System.in
        最终赋值成为什么样的值
        InputStream in = System.in;
    标准输出流
        System.out:输出语句中常用

    代表错误的输出流
       System.err 输出错误的信息
 //如果数组长度不为2,就将当前的虚拟机停止
        if(args.length != 2){
            System.exit(0);
        }

        //获取到主函数的参数的第一个元素
        String param1 = args[0];

        //获取到主函数的参数的第二个元素
        String param2 = args[1];
        System.out.println("name = " + param1);

        //Integer.parseInt(param2):将字符串参数解析为带符号的十进制整数。
        System.out.println("age = " + (2022 - Integer.parseInt(param2)));
成员方法:
    1、exit():终止当前正在运行的java虚拟机
        按照惯例非0状态表示异常终止
    2、currentTimeMillis():
        返回以毫秒为单位的当前时间
        1秒 = 1000 毫秒
        如果要统计一段程序执行的时间长短
//从系统类中直接调用的方法
        System.out.println(System.currentTimeMillis());
        //InputStream in = System.in;

        //定义开始的时间
        long start = System.currentTimeMillis();
        for(int x = 0; x < 100000; x++){
            System.out.println("hello" + x);
        }

        long end = System.currentTimeMillis();
        System.out.println("一共消耗了:" + (end - start) + "毫秒");
    3、
      数组拷贝
      public static void arraycopy(Object src,int srcPos,Object dest,
                                   int destPos,int length)
      src - 源数组。
      srcPos - 源数组中的起始位置。
      dest - 目标数组。
      destPos - 目的地数据中的起始位置。
      length - 要复制的数组元素的数量。
   //源数组
        int[] src = {1,2,3,4,5,6,7,8,9,10};
        //目标数组
        int[] dest = {10,20,30,40,50,60,70,80,90,100};

        System.arraycopy(src,2,dest,4,5);

        System.out.println(Arrays.toString(src));
        System.out.println(Arrays.toString(dest));

常用的:
in:标准输入流
out:标准输出流
数组拷贝:
public static void arraycopy(Object src,int srcPos,Object dest,
int destPos,int length)
获取当前系统毫秒时间
public static long currentTimeMillis()
停止java虚拟机
public static void exit(int status)
垃圾回收机制,调用垃圾回收器
public static void gc()

    写质数的计算规则,然后根据质数的相关规则输出系统执行时间

在系统中操作命令行参数
    public class SystemDemo {
        public static void main(String[] args) {
            if(args.length != 2){
                System.exit(0);
            }
            String param1 = args[0];
            String param2 = args[1];
            System.out.println("name = " + param1);
            System.out.println("age = " + (2022 - Integer.parseInt(param2)));
        }
    }


    PS C:\Users\ChenyangZheng> d:           进入磁盘
    PS D:\> cd test                         进入文件夹
    PS D:\test> javac SystemDemo.java       对java文件进行编译转换为字节码文件
    PS D:\test> java SystemDemo 何洋 2000   给文件加参数
    PS D:\test> javac SystemDemo.java       执行.class文件

二、Math 数学类

1、Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数等。
2、常量
  E
    double值比其他任何一个都更接近 e ,自然对数的基数。
  PI
    double值比任何其他的更接近 pi ,圆周长与其直径的比率。

3、构造函数
    因为构造函数是私有的,所以无法创建对象

4、找方法
    (1)abs绝对值
    (2)ceil返回大于或等于参数的最小(最接近负无穷大) double值,等于一个数学整数。
    (3)floor返回小于或等于参数的最大(最接近正无穷大) double值,等于一个数学整数。
    (4)max(double a, double b)
          返回两个 double值中的较大值。
    (5)min(double a, double b)
          返回两个 double的较小值。
    (6)pow将第一个参数的值返回到第二个参数的幂。
    (7)round(double a)
            返回参数中最接近的 long ,其中 long四舍五入为正无穷大。
    (8)random()
             返回值为 double值为正号,大于等于 0.0 ,小于 1.0 。
    (9)sqrt(double a)
           返回的正确舍入正平方根 double值。
    (10)rint(double a)
            返回与参数最接近值的 double值,并且等于数学整数。

有名的斐波那契数列,计算第一百位数

  public static BigInteger fun(BigInteger n){
        BigInteger big1 = new BigInteger("1");
        BigInteger big2 = new BigInteger("2");
        if(n.equals(big1) || n.equals(big2)){
            return big1;
        }else{
            return fun(n.subtract(big1)).add(fun(n.subtract(big2)));//前两个数的和
        }
    }

    public static void main(String[] args) {
        BigInteger bigInteger = new BigInteger("100");
        System.out.println(fun(bigInteger));
    }

三、File:文件类

IO: InputStream  OutPutStream
    io流是用来读取文件和写文件的
    当我们需要把内存中的数据存储在持久化的设备上的时候,进行一个叫输出(写)的OutputStream
    当我们需要把持久化设备上的信息读取出来的时候是进行输入(读),InputStream

File类的出现:
    文件和目录路径名的抽象表示。
    即:java中把文件或者目录(文件夹)都封装在File类中
    如果我们要到硬盘上去操作文件,都是对File类进行操作

以下是file类经常要用到的方法

 File file=new File("D:\\fileDemo.java");
        //获取文件或者目录的名称:getName()
        System.out.println(file.getName());

        //获取文件的相对路径getPath()
        System.out.println(file.getPath());

        //获取文件的绝对路径getAbsolutePath()
        System.out.println(file.getAbsolutePath());

        //获取文件中的字节个数:long length()
        System.out.println(file.length());

        //存储这个文件的父目录getParent
        System.out.println(file.getParent());

        //找到相对路径需要从src开始进行定义
       File file1=new File("fileDemo.java");
        System.out.println(file1.exists());
 //对文件或者文件夹进行操作
        File file = new File("D:\\test\\1.txt");
        //创建文件,如果文件不存在就创建,返回为true
        //如果说文件存在就不创建,返回为false
        //如果路径错误就会出现一个IO异常
        boolean f  = file.createNewFile();
        System.out.println("f = " + f);
        boolean f1=file.delete();
        System.out.println(f1);



        //-------------对目录进行操作 创建,删除,判断------------------------
        File dir = new File("d:\\test\\abc\\859\\857\\akm");
        //只能创建单级目录,如果目录中还有目录,不能创建
        boolean b2 = dir.mkdir();
        System.out.println(b2);
        //创建多级目录
        boolean b3 = dir.mkdirs();
        System.out.println("b3 = " + b3);
        //如果文件夹中有文件,就不能删除
        //只有将目录中的内容全部删除保证要删除的文件夹是一个空文件夹之后才能进行删除
        boolean b4 = dir.delete();
        System.out.println("b4 = " + b4);

        //----------判断一个地址是一个文件还是一个目录-------
        File file1 = new File("d:\\test\\abc\\859\\857\\asj ");
        System.out.println(file1.createNewFile());
        System.out.println(file1.isFile());//这里判断是否是一个文件
        System.out.println(file1.isDirectory());//这里判断是否是一个文件夹
        System.out.println(file1.delete());



        //1、创建文件对象,给定一个文件夹地址
        File file = new File("D:\\software  date\\idea\\javaSE\\20220322\\src\\cn\\java\\file");

        //2、找一个方法,取出所有的文件个数
        String[] arr = file.list();//取出文件夹中所有的文件和文件夹的名称
        System.out.println(Arrays.toString(arr));

        File[] arr2 = file.listFiles();//将文件夹中的文件转换为一个个文件对象
        //因为如果转换的是文件对象,是对象就可以调用对象中的方法
        System.out.println(Arrays.toString(arr2));

        long sum = 0;

        //对文件数组进行遍历
        for(int i = 0; i < arr2.length; i++){
            System.out.println("文件名称:" + arr2[i].getName());
            System.out.println("文件大小:" + arr2[i].length());
            System.out.println("----------------------------");
            sum = sum + arr2[i].length();
        }
        System.out.println("文件夹所有的文件的大小是:" + sum + "字节");

        int index = 0;
        //将文件夹中所有的.java文件全部打印出来并且进行计数
        for(int i = 0; i < arr2.length; i++){
            //判断一个字符串以什么结尾
            if(arr2[i].getName().endsWith(".java")){
                System.out.println(arr2[i].getName());
                index++;
            }
        }

        System.out.println("文件夹中一共有" + index + "个.java文件");

递归打印一个目录的所有子文件

 //递归打印所有文件子目录的路径
    //编写一个方法来打印指定目录中的所有的文件的路径,井进行方法的调用
    //拖指定的目录中有子目录,那么就吧子目录中的文件也打印出来
    public static void getFileAll(File file){
        File[] files=file.listFiles();//将文件夹中的文件转换为一个个文件对象
        for (File s:files
             ) {
            if(s.isDirectory()){
                getFileAll(s);
            }else {
                System.out.println(s);
            }
        }
    }

    public static void main(String[] args) {
        File file=new File("D:\\software  date\\idea");
        getFileAll(file);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值