1.StringBuffer 类 StringBuffer ,StringBuilder , String 的区别.
String 类特点
- 直接赋值:自开辟一块堆内存空间,可以自动入池;
- 构造方法:开辟两块堆内存空间,不能自动入池,需要使用inten()方法手动入池;
- 任何一个字符串都是String类的匿名对象;
- 字符串一旦声明则不可改变,可以改变的只是String类对象的引用
String类一定会使用,但是String类有一个问题,String类的内容不可改变.为此java里面提供有另外一个类----StringBuffer类(内容可以进行修改)
String 类对象可以使用"+"进行字符的连接操作,但是在StringBuffer类里面必须使用append()方法进行追加
- 方法: public StringBuffer append(数据类型 变量);
- StringBuffer sb = new StringBuffer (StringBuffer 不像String那样可以直接赋值,而是需要进行实例化对象)
- StringBuffer类的内容是可以进行修改的,而String的内容是不可以进行修改的.
- 假如说字符串要进行不断的修改StringBuffer类是首选.
编号 | String | StringBuffer |
1 | public final class String extends Object implements Serializable, Comparable<String>, CharSequence | public final class StringBuffer extends Object implements Serializable, CharSequence |
String 与StringBuffer 都是CharSequence接口的子类,如何某些方法的操作上是CharSequence接口,只需要传递字符串即可;
String 与StringBuffer类虽然有这共同的接口,但是这两个类对象之间如果要转换不能够直接转换
String转换为StringBuffer 类的方法:
- 利用StringBuffer 类的构造方法完成
- 方式二:利用append();
StringBuffer 类变为String类
- toString()方法;
- 可以利用String构造方法转换
String 与StringBuffer类进行比较方法:public boolean contentEquals(StringBuffer sb );
StringBuffer常用方法:
- 字符串反转:public StringBuffer reverse();
- 在指定的索引位置增加数据:public StringBuffer insert( int offset , 数据类型 变量);
- 删除部分数据: public StringBuffer delete(int start ,int end );
StringBuffer 类与StringBuilder类 的定义是非常相似的,方法也几乎一样.
面试题:请解释String , StringBuffer , StringBuilder的区别?
- String 的内容一旦声明则不可改变,而StringBuffer 与StringBuilder 声明内容可以改变;
- String 与StringBuffer类都提供了同步方法,属于安全的线程操作,而StringBuilder类中的方法都属于异步方法属于非线程安全的操作.
- 只用频繁修改的时候才会进行使用StringBuffer与StringBuilder类
- String 类依旧是最常用的字符串描述类;
Runtime类
- Runtime类主要作用;
- Runtime类的定义形式;
- 每一个JVM都会存在有一个Runtime类的对象,这个类的主要功能是取得一些与运行时有关的环境的属性,或者创建进程等操作.
- 类定义结构: public class Runtime extends Object;
- 在Runtime 类定义的时候它的构造方法已经被私有化了,属于单利设计模式的应用.保证进程里面只有唯一的一个Runtime类对象所以在Runtime类里面提供了一个static 型的方法可以取得Runtime类的实例化对象. public static RunTime getRunTime();
- Runtime类是直接与本地运行有关的所有相关属性的集合,所以Runtime类定义有如下方法:
- 返回所有可用内存空间:public long totalMemory();字节描述
- 返回最大可用内存空间:public long maxMemory();字节描述
- 返回空余内存空间:public long freeMemory();字节描述
- 一旦产生过多垃圾之后就会改变可用内存空间大小
- 在Runtime类里面有一个方法:public void gc(); 可以释放掉垃圾空间 run.gc();
什么叫GC?如何处理?
- GC(Garbage Collector)垃圾收集器, 指的是释放无用的内存空间;
- GC会由系统不定期进行自动的回收,或者调用Runtime类中的gc()方法手工回收;
- RumTime 类 可以调用本机的可执行程序,并且创建进程
- 执行程序: public Process exec(String command) throws IOException;
- 使用destroy();类进行销毁
总结:
1.Runtime类使用了单例设计模式必须使用内部的getRunTime()方法才能取得Runtime类对象
2.Runtime类提供了gc()方法,可以用于手工释放内存;
System类
- 代码执行时间和垃圾收集操作
- System.out.printIn();就属于System类的操作功能
- System.arraycopy();方法实现数组拷贝;public static void arraycopy(Object src , int srcPos , Objcet dest , int destPos , int length );了解
- 重要方法:取得当前的系统时间: public static long currentTimeMillis(); 毫秒级
- 如果想统计所花费的毫秒时间就使用Long型数据进行直接进行统计
- 重要, System类的一个重要的操作方法:public static void gc(); 等价于调用RunTiime 的gc();方法;
- 对象产生一定会调用构造方法,可以进行一下处理操作,对象回收需要进行收尾,收尾可以考虑覆写Object类中的finalize()方法完成 finalize()方法的定义:protected void finalize() throws Throwable;
- 在对象回收时就算抛出了任何的一次也不会影响到整个程序的正常执行
- 构造方法是对象初始化时使用的,finalize()方法是留给对象回收前使用的
final , finally , finalize 的区别?
- final: 关键字:定义不能被继承的类,不能被覆写的方法, 定义常量;
- finally : 关键字 :异常的统一出口;
- finalize: 方法 Objcet 定义的方法:protected void finalize() throws Throwable;指的是对象回收前的收尾方法,出现异常也不会因为出产异常从而导致中断执行;
总结:System 类可以使用currentTimeMillies()方法取得当前的系统时间:
System 类中的gc()方法就直接调用了"Runtime.getRuntime.gc"方法
对象克隆(了解)
- 清楚对象克隆的操作结构
- 巩固接口的作用
- 对象克隆就是对象的复制操作在Object类里面提供了有一个专门的克隆方法
- 对象克隆: protected Object clone()thows CloneNotSupportedException;
- CloneNotSupportedException克隆不支持,如果要使用对象克隆的类没有实现 Clongeable 接口,就会抛出此异常
- 接口有抽象方法和全局常量组成.但是 Cloneable 接口看不到方法;
- 接口的三大作用 ,制定标准, 标识接口表示一种操作能力,
- 调用父类的克隆方法
- 标识接口:没有任何方法定义,只是一个空接口的声明;