【JAVA】基础类库

一、用户相关

1.1 Java程序入口:main()方法

public static void main(String[]args){…}

public修饰符:Java类由JVM调用,为了让JVM可以自由调用main()方法,用public修饰符把这个方法暴露出来。
.
static修饰符:JVM调用这个主方法时,JVM直接通过该类来调用主方法,因此使用static修饰该主方法。
.
void返回值:因为主方法被JVM调用,该方法的返回值将返回给JVM,这没有任何意义,因此main()方法没有返回值。

1.2 Scanner

Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可以接收件、输入流、字符串作为数据源,用于从文件、输入流、字符串中解析数据。

Scanner主要提供了两个方法来扫描输入

hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果只是判断是否包含下一个字符串,则直接使用hasNext()。
nextXxx():获取下一个输入项。在默认情况下,Scanner使用空白(包括空格、Tab空白、回车)作为多个输入项之间的分隔符。

二、系统相关

2.1 System类

System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。

public class SystemTest {
    public static void main(String[] args) throws IOException {
        //获取系统所有环境变量
        Map<String,String> env = System.getenv();
        for (String name: env.keySet()){
            System.out.println(name+"-->"+env.get(name));
        }
        //获取系统指定环境变量的值
        System.out.println("获取系统指定环境变量的值:"+System.getenv("JAVA_HOME"));//获取系统指定环境变量的值:D:\Java\jdk1.8.0_202
        //获取所有系统属性,并将属性保存到props.txt中
        Properties props = System.getProperties();
        props.store(new FileOutputStream("props.txt")," System Properties");
        System.out.println("输出特定系统属性:"+System.getProperty("os.name"));  //输出特定系统属性:Windows 10

    }
}

2.2 Runtime类

Runtime类代表Java程序的运行时环境,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取与之关联的Runtime对象。

与System类似的是,Runtime类也提供了gc()方法和runFinalization()方法来通知系统进行垃圾回收、清理系统资源,并提供了load(String filename)和loadLibrary(String libname)方法来加载文件和动态链接库。

public class RuntimeTest {
    public static void main(String[] args) throws IOException {
        //获取Java程序关联的运行时对象
        Runtime rt = Runtime.getRuntime();
        System.out.println("处理器数量:"+rt.availableProcessors());
        System.out.println("空闲内存量:"+rt.freeMemory());
        System.out.println("总内存量:"+rt.totalMemory());
        System.out.println("最大内存:"+rt.maxMemory());
        //直接单独启动一个进程来运行操作系统的命令
        rt.exec("postman.exe");
    }
}

三、常用类

3.1 Object类

Object类是所有类、数组、枚举类的父类,也就是说,Java允许把任何类型的对象赋给Object类型的变量。当定义一个类时没有使用extends关键字为它显式指定父类,则该类默认继承Object父类

“自我克隆”就是得到一个当前对象的副本,而且二者之间完全隔离。由于Object类提供的clone()方法使用了protected修饰,因此该方法只能被子类重写或调用。

class Address{
    String detail;
    public Address(String detail){
        this.detail = detail;
    }
}
//实现Cloneable接口
public class User implements Cloneable{
    int age;
    Address address;
    public User(int age){
        this.age = age;
        address = new Address("江苏苏州");
    }
//    调用super.clone()实现clone()方法
    public User clone() throws CloneNotSupportedException {
        return (User) super.clone();
    }
}
public class CloneTest {
    public static void main(String[] args) throws CloneNotSupportedException {
        User u1 = new User(29);
        User u2 = u1.clone();
        //判断u1、u2是否相同
        System.out.println(u1 == u2); //false
        //判断u1、u2中address是否相同
        System.out.println(u1.address == u2.address);  //true
    }
}

Object类提供的Clone机制只对对象里各实例变量进行“简单复制”,如果实例变量的类型是引用类型,Object的Clone机制也只是简单地复制这个引用变量,这样原有对象的引用类型的实例变量与克隆对象
的引用类型的实例变量依然指向内存中的同一个实例
在这里插入图片描述

3.2 String、StringBuffer和StringBuilder类

String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。

StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。

StringBuilder类是JDKl.5新增的类,它也代表可变字符串对象。实际上,StringBuilder和StringBuffer
基本相似,两个类的构造器和方法也基本相同。不同的是,StringBuffer是线程安全的,而StringBuilder
则没有实现线程安全功能,所以性能略高。因此在通常情况下,如果需要创建一个内容可变的字符串对
象,则应该优先考虑使用StringBuilder类。

public class StringTest {
    public static void main(String[] args) {
        String a = new String("www.baidu.com");
        String b = new String("www.google.com");
        String c = new String("www.firefox.com");
        System.out.println("a.charAt(5):"+a.charAt(5));  //a  从0-len-1

        System.out.println(a.compareTo(b));  //-5  返回第一个不相等差 bcdefg  b-g的差 -5
        System.out.println(a.compareTo(c)); //-4

        System.out.println(a.endsWith(b));   //false  a和b是否结尾相同

        System.out.println(a.indexOf('c'));  //10  a字符串中第一次出现c的位置
        System.out.println(a.indexOf('c',11));  //-1 从下标11开始找c出现的位置
        System.out.println(a.indexOf(b));   //-1 找b第一次在a出现的位置

        System.out.println(a.startsWith(b));   //false  该对象是否以b开始
        System.out.println(a.toUpperCase());     //转换为大写
    }
}

3.3 Math类

public class MathTest {
    public static void main(String[] args) {
        System.out.println("平方根:"+Math.sqrt(2.3));
        System.out.println("立方根:"+Math.cbrt(3));
        System.out.println("e的n次幂:"+Math.exp(2));
        System.out.println("乘方:"+Math.pow(3,2));
        System.out.println("自然对数:"+Math.log(12));
        System.out.println("10d自然对数:"+Math.log10(12));
        System.out.println("绝对值:"+Math.abs(-4.5));
        System.out.println("最大值:"+Math.max(2,3));
        System.out.println("最小值:"+Math.min(2,3));
        System.out.println("余弦:"+Math.cos(1.2));
        System.out.println("正弦:"+Math.sin(0.8));
        System.out.println("正切:"+Math.tan(2.3));
    }
}

3.4 Random类

Random类专门用于生成一个伪随机数,它有两个构造器:一个构造器使用默认的种子(以当前时间作为种子),另一个构造器需要程序员显式传入一个long型整数的种子。

public class RandomTest {
    public static void main(String[] args) {
        Random r = new Random(50);
        byte[] b = new byte[10];
        r.nextBytes(b);
        System.out.println(r.nextBoolean());  //true
        System.out.println(Arrays.toString(b));  //[9, -52, 44, -46, 105, -120, -56, 49, -62, -102]
        System.out.println(r.nextDouble());      //0.9731544041723736
        System.out.println(r.nextInt());         //2029541121
        System.out.println(r.nextLong());       //-6261620488680096175
     }
}

四、正则表达式

正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一旦在程序中定义了正则表达式,就可以使用Pattern和Matcher来使用正则表达式。
Pattern对象是正则表达式编译后在内存中的表示形式,因此,正则表达式字符串必须先被编译为Pattern对象,然后再利用该Pattern对象创建对应的Matcher对象。执行匹配所涉及的状态保留在Matcher对象中,多个Matcher对象可共享同一个Pattern对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值