java基础类库-常见类简介

一、String、StringBuffer、StringBuilder的区别

    1.String类是字符串的首选类,其最大的特点是内容不允许修改。

    2.StringBuffer和StringBuilder都是可修改的。

    3.StringBuffer是在JDK1.0时提出的,属于线程安全的操作;StringBuilder是在JDK1.5时提出的,属于非线程安全的操作。

二、CharSequence接口

        1.String:  public final class String implements java.io.Serializable, Comparable<String>, CharSequence;

        2.StringBuffer: public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence;

        3.StringBuilder: public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence ;

87520cfb5d196785f94cdb2d249d8fc4915.jpg   

以后只要看到CharSequence描述的就是一个字符串。

三、AutoCloseable接口

在日后资源开发的处理上,以实现资源的自动关闭(释放资源),例如:在进行文件、网络、数据库开发的过程中,由于服务器的资源有限,所以使用之后才会关闭资源,这样才能被更多的使用者所使用。

范例:手工实现

interface IMssage extends  AutoCloseable {
    public void  send();
}
class Message1 implements  IMssage{
    public boolean open() {
        System.out.println("获取消息链接资源");
        return true;
    }

    @Override
    public void send() {
        if(this.open()) {
            System.out.println("发送消息");
        }
    }

    public void close(){
        System.out.println("资源关闭");
    }
}
public class Demo1 {
    public static void main(String[] args) {
        try(Message1 message1 = new Message1();){
            message1.send();
        }catch(Exception e){

        }
    }
}

da19c04674acc270898eb30035c58c459f6.jpg

        要跟异常一起捆绑使用,才能正常使用。

四、Runtime类

Runtime类是唯一一个与JVM运行状态有关的类,并且都会默认提供一个该类的实例化对象。

Runtime类的构造方法被私有化,所以一定会用到单例模式。

662399448e5f6c184477b62dff1c5586951.jpg

范例:获取cup的的内核数

public class RunTimeDemo {
    public static void main(String[] args) {
        Runtime run = Runtime.getRuntime();
        System.out.println(run.availableProcessors());
    }
}

除了以上方法之外,在Runtime里面还提供了以下四种方法:

    1.获取最大可用内存空间:public long maxMemory();默认为本机内存的4分之一;

    2.获取可用内存空间:public long totalMemory();默认为本机内存的64分之一;

    3.获取空闲内存空间:public long freeMemory();

    4.手工GC处理:public void gc();

范例:四种方法的应用

public class RunTimeDemo {
    public static void main(String[] args) throws  Exception {
        Runtime run = Runtime.getRuntime();

        System.out.println(run.maxMemory());
        System.out.println(run.totalMemory());
        System.out.println(run.freeMemory());
        for(int i = 0; i < 30000; i++){

        }
        System.out.println(run.maxMemory());
        System.out.println(run.totalMemory());
        System.out.println(run.freeMemory());
        Thread.sleep(1000);
        run.gc();
        System.out.println(run.maxMemory());
        System.out.println(run.totalMemory());
        System.out.println(run.freeMemory());


    }
}

面试题:什么是GC?如何处理?

    GC(Carbage Collector) 垃圾收集器,是可以由系统调用的垃圾释放功能,或者使用Runtime里面的gc()手工调用。

五、System类

System类中定义了许多常用的方法:

    1.数组的拷贝:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

    2.获取当前日期时间数值:public static long currentTimeMillis();

    3.进行垃圾回收:public static void gc();这里的gc()相当于Runtime.getRuntime().gc(),系统中只有一个gc()方法那就是    Runtime.getRuntime().gc()

六、Cleaner类

这是在jdk1.9提供的,主要是提供的是一个对象清理操作,其主要功能是进行finialize()方法的替代,在C++里面有两种特殊的函数:构造函数、析构函数(对象手工回收),在java里面垃圾空间都是通过gc()完成的,所以很多情况下是不需要使用这类析构函数的,也正是因为如此,java没有提供这方面的支持。

但是java本身也提供了给用户收尾的操作,每一个实例化对象在回收之前,给他一个喘息的机会,最初实现对象收尾的方法是Object中的finialize()方法,但是此方法在JDK1.9后不建议使用。建议开发者使用AutoCloseable或者使用java.lang.ref.Cleaner类进行回收处理。

七、对象克隆

克隆就是指对象的复制,需要使用Object中的clone()方法,protected native Object clone() throws CloneNotSupportedException;这里抛出了CloneNotSupportedException异常,虽然所有的类都会继承Object方法,但是不是所有的类都希望被克隆,所以要想实现对象克隆,要实现一个Cloneable接口,此接口没有任何方法,是因为此接口表现的是一种能力。

  范例:clone实现对象克隆

class Member implements  Cloneable{
    private  String name;
    private int  age;

    public Member(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Member{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    @Override
    protected  Object clone() throws  CloneNotSupportedException{
        return super.clone();
    }
}

public class ClearDemo {
    public static void main(String[] args)  throws  Exception{
        Member memberA = new Member("chenzhou",23);
        Member memberB = (Member)memberA.clone();
        System.out.println(memberA);
        System.out.println(memberB);
    }
}

 

 

转载于:https://my.oschina.net/chenzhou/blog/2052243

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值