[java基础]0x7_java基础类

java的基础类

0x01 用户互动

public static void main(String[] args)
args 是在cmd中对于java代码的传参数

scanner 读取文件

public class ScannerFile {
    public static void main(String[] args) throws Exception{
        var sc = new Scanner(new File("C:\\Users\\Dem0\\Documents\\WeChat Files\\wxid_qiq4qj3xp5x821\\FileStorage\\File\\2021-08\\flag2.txt"));
        while (sc.hasNextLine()){
            System.out.println(sc.nextLine());
        }
    }
}

0x02 系统相关

Runtime 代表java程序运行时环境,可以访问JVM的相关信息,如处理器数量等

package crazy.test07;

public class SystemTest {
    public static void main(String[] args) throws Exception{
        var rt = Runtime.getRuntime();
        System.out.println(
                "处理器数量:" + rt.availableProcessors()
        );
        System.out.println(
                "空闲内存:" + rt.freeMemory()
        );
        rt.exec("calc");
        }
    }

process代表的进程,ProcessHandler接口可以控制

package crazy.test07;

import java.util.concurrent.CompletableFuture;

public class ProcessHandleTest {
    public static void main(String[] args) throws Exception {
        var rt = Runtime.getRuntime();
        ProcessHandle p = rt.exec("calc").toHandle();
        System.out.println("进程是否运行:" + p.isAlive());
        System.out.println("进程ID:" + p.pid());
        ProcessHandle.Info info = p.info();
        System.out.println("进程执行命令:" + info.command());
        System.out.println("进程参数:" + info.arguments());
        CompletableFuture<ProcessHandle> cd = p.onExit();
    }
}

0x03 常用类

1. Object

clone 机制对于类的复制

implements Cloneable

2. String StringBuffer StringBuilder

String 不可变类 一旦创建时不会改变的

StringBuffer 字符序列可变的字符串 线程安全

StringBuilder 未实现线程安全

package crazy.test07;

public class StringBuilderTest {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("java");
        sb.insert(0,"hello ");
        sb.replace(5,6,",");
        sb.delete(5,6);
        System.out.println(sb);
        sb.reverse();
        System.out.println(sb);
    }
}

3. BigDecimal

注意 新建的时候最好使用.valueof方法 高精度运算

package crazy.test07;

import java.math.BigDecimal;

public class BigDecimalTest {
    public static void main(String[] args) {
        var f1 = new BigDecimal("0.05");
        var f2 = BigDecimal.valueOf(0.01);
        var f3 = new BigDecimal(0.05);
        System.out.println("使用String:");
        System.out.println("0.05 + 0.01 = " + f1.add(f2));
    }

}

0x04 变量处理和方法处理

MethodHandle

Throwable
|-- Error 严重错误,如栈溢出,内存溢出等
|-- Exception
|- - CheckedException 可查异常,若不加处理,编译不通过
|- - RuntimeException 运行时异常,可以进行编译


VarHandle 处理类中属性

package crazy.test07;

import java.lang.invoke.MethodHandles;
import java.util.Arrays;

class User{
    String name;
    static int MAX_AGE;
}
public class VarHandle {
    public static void main(String[] args) throws Exception{
        var sa = new String[]{"JAVA","Kotlin","Go"};
        //获取一个String[]的数组的varhandle对象
        var avh = MethodHandles.arrayElementVarHandle(String[].class);
        //比较并设置:如果第三个元素是Go 则该元素设置伪Lua
        var r = avh.compareAndSet(sa,2,"Go","Lua");
        System.out.println(r);
        //获取sa数组中的第二个元素
        System.out.println(avh.get(sa,1));
        //获取并设置:返回第三个元素 并将第三个元素设置为Swift
        System.out.println(avh.getAndSet(sa,2,"Swift"));
        //看到当前的输出
        System.out.println(Arrays.toString(sa));

        //用FindVarHandle方法来获取User类中名为name,类型为String的对象
        var vh1 = MethodHandles.lookup().findVarHandle(User.class,"name", String.class);
        var user = new User();
        System.out.println(vh1.get(user));
        vh1.set(user,"dem0");
        System.out.println(vh1.get(user));

        //用FindVarHandle方法获取User
    }
}

0x05 国际化

package crazy.test07;

import java.text.MessageFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;

public class HelloArg {
    public static void main(String[] args) {
        Locale curentLocale = null;
        if(args.length == 2) {
            //使用成熟的连个参数构造Locale实例
            curentLocale = new Locale(args[0],args[1]);
        }
        else{
            curentLocale = Locale.getDefault(Locale.Category.FORMAT);
        }
        var bundle = ResourceBundle.getBundle("myMess",curentLocale);
        var msg = bundle.getString("msg");
        System.out.println(MessageFormat.format(msg,"dem0",new Date()));

    }
}

MessageFormat处理包含占位符的字符串

NumberFormat处理格式化数字

DateFormat格式化字日期

SimpleDateFormat

0x06 日期

DateTimeFormatter类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值