1 CharSequence

 

描述字符串结构的接口,通过发现它的继承结构,其下面有多个子类:

 

1String

 

2 StringBuilder

 

3 StringBuffer

 

只要是字符串都可以为 CharSequence实例化

范例:代码实现

// hello 是String类的匿名对象  String类型   是charSequence子类
         
// 通过 对象自动向上转型 为charSequence 进行实例化
          CharSequence str="hello";
         
          System.out.println(str);

 

 

该接口也定义了一些方法:

 

1public int length() 取得字符串长度

 

2 char charAt(int index);给定索引返回指定索引的字符

 

3 CharSequence subSequence(int start, int end); 截取部分字符串

 

 

范例: 实现截取字符串

CharSequence str="hello";     
          System.out.println(str.subSequence(0, 2));

 

该接口藐视的就是一个字符串  (了解)

 

 

 

RunTime类

 

RunTime类主要描述的是运行时的状态,也就是说在java中RunTime类是唯一一个与JVM有关的类,并且该类使用的是单例设计模式,提供了一个默认实例获得方法

public static Runtime getRuntime();

在每一个JVM进程里面都只能存在一个Runtime 

 

 

范例: 取得RumTime类的实例

Runtime runtime=Runtime.getRuntime();// 取得对象实例

 

该类与JVM相关,所以JVM的一些基本信息都可以通过该类取得

1 public int availableProcessors(); JVM CPU的内核数

System.out.println(runtime.availableProcessors());

 

除了可以获得CPU的内核数量之外还可以获得JVM的内存空间

 

1 最大的可用内存空间 public long maxMemory();

 

2 可用内存空间  public long totalMemory()

 

3 空闲内存空间 public long freeMemory()

 

4 手工GC的内存处理 public void gc()

 

package org.runtime;
 
publicclass RunTimeTest {
     publicstaticvoid main(String[] args) {
         
          Runtime runtime=Runtime.getRuntime();// 取得对象实例
         
          System.out.println("CPU:"+runtime.availableProcessors());
         
          System.out.println("最大可用内存"+runtime.maxMemory());
         
          System.out.println("可用内存空间"+runtime.totalMemory());
         
          System.out.println("空闲内存"+runtime.freeMemory());
          String str="";
         
          for(int i=0;i<50000;i++) {
              
str+="hello";  //产量大量的垃圾
          }
          System.out.println("**********************************");
         
          System.out.println("CPU:"+runtime.availableProcessors());
         
          System.out.println("最大可用内存"+runtime.maxMemory());
         
          System.out.println("可用内存空间"+runtime.totalMemory());
         
          System.out.println("空闲内存"+runtime.freeMemory());
         
         
          System.gc();
         
         
          System.out.println("***************************");
          System.out.println("CPU:"+runtime.availableProcessors());
         
          System.out.println("最大可用内存"+runtime.maxMemory());
         
          System.out.println("可用内存空间"+runtime.totalMemory());
         
          System.out.println("空闲内存"+runtime.freeMemory());
         
     }
}

 

 

System类

 

System类一直在接触,而这个类本身提供了一些系统支持操作

 

观察该类的定义:

public final class System extends Object

 

对于该类存在三个常量:

1 public static final PrintStream err; 错误的输出
 
2 public static final InputStream in :系统输入 例如键盘中输入内容到程序中
 
3 public static final PrintStream out :控制台打印

 

普通方法:

 

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

该方法的参数如下:

 

1 src  源数组

 

2 srcPos 源数组的起始位置

 

3 dest 目标数组

 

4 destPos 目标数字起始位置

 

5 length 目标数组的长度

 

范例:实现一个数组拷贝

publicstaticvoid main(String[] args) {
// 定义两个数组
         
          int[] A=newint[]{1,2,3,4,5};
         
          int[]B=newint[10];
         
         
          System.arraycopy(A, 0, B, 0, A.length);
         
          System.out.println(Arrays.toString(B));
     }

通过以上方法可以实现数组之间的拷贝功能,主要作用就是解决数组长度不可改变的缺陷,为数组扩容

 

 

2 public static long currentTimeMillis(): 获得当前的日期时间,以long类型返回

publicstaticvoid main(String[] args) {
          long time=System.currentTimeMillis(); //获得当前的时间
          Date date=new Date(time);
          SimpleDateFormat smd=new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss");
         
          String mytime=smd.format(date);
         
          System.out.println(mytime);
     }

 

练习: 统计一次操作花费的时间,并最终把时间格式化输出:

publicstaticvoid main(String[] args) {
         
          long start=System.currentTimeMillis(); //开始时间
         
          String str="";
         
          for(int i=0;i<30000;i++) {
              
str+="hello";
          }
         
          long end=System.currentTimeMillis();//结束时间
         
          long total=end-start;
         
          String time=new SimpleDateFormat("mm:ss").format(new Date(total));
         
          System.out.println(time);
     }

 

 

 

System类中同样也存在一个方法:

 

public static void gc() 在这个该类中也存在GC方法, 在C++存在析构函数,在java不存在析构函数 finlize实现和析构函数同样的功能:

 

 

 

 

在对象创建的时候有初始化操作, 构造方法 在构造方法中赋值内容

 

小林: 出生的时候 地动山摇 ,满天乌云, 空气都是臭的 妖孽出生了

 

protected void finalize() throws Throwable; 该方法定义在Object类中说明所有的类都可以覆写该方法

package org.system;
 
publicclass Person {
@Override
     protectedvoid finalize() throws Throwable {
// TODO Auto-generated method stub
          System.out.println("小林道:如果还有下辈子,在也不抢小孩棒棒糖了");
     }
 
 
     public Person() {
         
          System.out.println("小林: 出生的时候 地动山摇 ,满天乌云, 空气都是臭的 妖孽出生了");
     }
    
     publicstaticvoid main(String[] args) {
         
          Person per=new Person(); //在对象创建的时候可以执行构造方法
         
per=null;
         
          System.gc();
     }
}

 

1 final : 终结器 定义的类不能被继承,定义的属性不可被修改 为常量, 定义的方法不能被覆写

 

2 finally: 永远都会执行的代码块 资源处理 关闭资源

 

3 finlize : 在垃圾回收机制中, 对象回收之前的操作