黑马程序员——Java之其他对象

------------------- Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ---------------------

一、System类


System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。

1、特点

(1)该类的构造方法是private的,所以无法创建该类的对象。

(2)其内部的成员变量和成员方法都是static的,方便进行调用。

2、成员变量

(1)in   标准输入流(默认键盘输入)

(2)out 标准输出流(默认虚拟机)

(3)err   标准错误输出流(显示器)

在学习完IO相关的知识以后,可以使用System类中的成员方法改变标准输入流等对应的设备,例如可以将标准输出流输出的信息输出到文件内部,从而形成日志文件等。

3、成员方法

System类中提供了一些系统级的操作方法,这些方法实现的功能分别如下:

(1)arraycopy方法

public static voidarraycopy(Object src, int srcPos, Object dest, int destPos, int length)

该方法的作用是数组拷贝,也就是将一个数组中的内容复制到另外一个数组中的指定位置,由于该方法是native方法,所以性能上比使用循环高效。

使用示例:

int[] a = {1,2,3,4};

int[] b = new int[5];

System.arraycopy(a,1,b,3,2);

该代码的作用是将数组a中,从下标为1开始,复制到数组b从下标3开始的位置,总共复制2个。也就是将a[1]复制给b[3],将a[2]复制给b[4],这样经过复制以后数组a中的值不发生变化,而数组b中的值将变成{0,0,0,2,3}。

(2)currentTimeMillis方法

 public static longcurrentTimeMillis()

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。

例如: long l = System.currentTimeMillis();

则获得的将是一个长整型的数字,该数字就是以差值表达的当前时间。

 

使用该方法获得的时间不够直观,但是却很方便时间的计算。例如,计算程序运行需要的时间则可以使用如下的代码:

long start = System.currentTimeMillis();

for(int i = 0;i <100000000;i++){

int a = 0;

}

long end = System.currentTimeMillis();

 long  time= end – start;

则这里变量time的值就代表该代码中间的for循环执行需要的毫秒数,使用这种方式可以测试不同算法的程序的执行效率高低,也可以用于后期线程控制时的精确延时实现。

(3)exit方法

 public static voidexit(int status)

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

(4)gc方法

public static void gc()

该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。

(5)getProperty方法

public static Properties getProperties():获取系统属性信息。

注意:Properties是HashTable的子类,存储的都是字符串。

public static String getProperty(String key)获取指定键指示的系统属性。

public static String setProperty(Stringkey, String value) 设置指定键指示的系统属性。

 

该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示。

属性名列表

属性名

属性说明

java.version

Java 运行时环境版本

java.home

Java 安装目录

os.name

操作系统的名称

os.version

操作系统的版本

user.name

用户的账户名称

user.home

用户的主目录

user.dir

用户的当前工作目录

例如:

String osName =System.getProperty(“os.name”);

String user = System.getProperty(“user.name”);

System.out.println(“当前操作系统是:” + osName);

System.out.println(“当前用户是:” + user);

使用该方法可以获得很多系统级的参数以及对应的值。

 

二、Runtime类


Runtime类封装了java虚拟机的启动进程,一个java虚拟机对应一个Runtime实例对象。Runtime中许多方法与Syste类中方法重复, 但是我们不能直接创建Runtime类的实例对象,只能通过静态方法Runtime.getRuntime来获得Runtime的实例对象的引用。

Runtime类封装了java虚拟机的启动进程,一个java虚拟机对应一个Runtime实例对象。Runtime中许多方法与Syste类中方法重复, 但是我们不能直接创建Runtime类的实例对象,只能通过静态方法Runtime.getRuntime来获得Runtime的实例对象的引用。

public Process exec(String command) throwsIOException 在单独的进程中执行指定的字符串命令。返回来的可以调用Process中的destroy()方法杀掉子进程。

编程实例:在Java程序中启动一个Windows记事本程序的运行实例,并在该运行实例中打开这个java程序的源文件,启动的记事本程序 5秒钟后被关闭。
public class TestProperties { 
   public static void main(String[] args) { 
       Properties sp = System.getProperties(); 
       Enumeration  e =sp.propertyNames();//返回属性列表中所有键的枚举 
       while(e.hasMoreElements()){ 
           String key = (String)e.nextElement(); 
           System.out.println(key+"="+sp.getProperty(key)); 
       } 
       Process p = null; 
        try { 
           p = Runtime.getRuntime().exec("notepad.exeTestProperties.java");//TestProperties.java文件要放在TestProperties文件夹根目录下 
       } catch (IOException e1) { 
           e1.printStackTrace(); 
       } 
       try { 
           Thread.sleep(5000); 
       } catch (InterruptedException e1) { 
           e1.printStackTrace(); 
       } 
       p.destroy(); 
   } 
}

三、Date类


在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。

1、Date类代表当前系统时间

                  Date d = new Date();

                  System.out.println(d);

使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下:

Thu Apr 09 19:12:43 CST 2015

在该格式中,Thu代表Thursday(周四),Apr代表April (四月),09代表9号,CST代表China Standard Time(中国标准时间,也就是北京时间)。

 

2、日期格式化

如果想要将日期格式化可以使用SimpleDateFormat类的format方法,格式化日期。

public static void methods_3(){
         Date d= new Date();
         System. err .println(d);
         SimpleDateFormat s= new SimpleDateFormat("yyy年MM月dd日 hh点:mm分:ss秒:SS毫秒 " );
         String time=s.format(d);
         System. err .println(time);
    }

 

四、抽象Calendar类


Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

该类将时间等一些信息放在键值对中,我们可以单独获取时间的信息。

public static Calendar getInstance()  使用默认时区和语言环境获得一个日历

public int get(int field)  返回给定日历字段的值。

public void set(int field, int value)   将给定的日历字段设置为给定值。

public abstract void add(int field, intamount)  根据日历的规则,为给定的日历字段添加或减去指定的时间量。

public static void methods_4(){
         Calendar c=Calendar. getInstance();
         c.set(2014,2,1); //三月1日
         c.add(Calendar. DAY_OF_MONTH , -1);//二月的最后一天
         System. err .println(c.get(Calendar. YEAR)+ "年");
         System. err .println(c.get(Calendar. MONTH)+ "月");
         System. err .println(c.get(Calendar. DAY_OF_MONTH)+ "日");
         System. err .println("星期" +c.get(Calendar. DAY_OF_WEEK));
    }


五、Math类


Math.PI 记录的圆周率

Math.E记录e的常量

Math.abs 求绝对值

Math.sin 正弦函数 Math.asin 反正弦函数

Math.cos 余弦函数 Math.acos 反余弦函数

Math.tan 正切函数 Math.atan 反正切函数&nbsp;Math.atan2商的反正切函数

Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度

Math.ceil 得到不小于某数的最大整数

Math.floor 得到不大于某数的最大整数

Math.IEEEremainder 求余

Math.max 求两数中最大

Math.min 求两数中最小

Math.sqrt 求开方

Math.pow 求某数的任意次方, 抛出ArithmeticException处理溢出异常

Math.exp 求e的任意次方

Math.log10 以10为底的对数

Math.log 自然对数

Math.rint 求距离某数最近的整数(可能比某数大,也可能比它小)

Math.round 同上,返回int型或者long型(上一个函数返回double型)

Math.random 返回0,1之间的一个随机数

练习:给定一个小数,保留小数的后位。
public static void method_1(){
          //double d=Math.round((4.4265*100));
          //System.err.println(d/100);
          double d=1.35555;
         BigDecimal b= new BigDecimal(d);
         b=b.setScale(2,BigDecimal. ROUND_HALF_EVEN );
         System. err .println(b);
    }

------------------- Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ---------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值