黑马程序员----7其它对象

------- android培训java培训、期待与您交流! ----------


>>System

 

eg:获取系统信息方法staticProperties getProperties()

import java.util.*;

class SystemDemo

{

         publicstatic void main(String[] args)

         {

                   Propertiesprop = System.getProperties();

                   SetkeySet = prop.keySet();

                   Iteratorit = keySet.iterator();

                   while(it.hasNext())

                   {        //可以看出是成对存在的

                            Stringkey = (String)it.next();

                            Stringvalue = (String)prop.get(key);

                           

                            System.out.println(key+"="+value);

                   }

         }

}

输出:F:\java\workspace>java SystemDemo

java.runtime.name=Java(TM) SE RuntimeEnvironment

sun.boot.library.path=D:\ProgramFiles\Java\jdk1.6.0_12\jre\bin

java.vm.version=11.2-b01

java.vm.vendor=Sun Microsystems Inc.

java.vendor.url=http://java.sun.com/

path.separator=;

java.vm.name=Java HotSpot(TM) Client VM

file.encoding.pkg=sun.io

sun.java.launcher=SUN_STANDARD

user.country=CN

sun.os.patch.level=

java.vm.specification.name=Java VirtualMachine Specification

user.dir=F:\java\workspace

…………………………………………

 

也可以只获取其中的一项,有方法:

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

eg:………………

String name = System.getPorperty(“os name”);

System.out.println(name);

………………

输出:Windows Vista

 

在jvm启动的时候加载自定义信息:

如果上述例子改成:

eg:………………

String name = System.getPorperty(“myKey”);

System.out.println(name);

………………

输出:null

在命令提示符中直接输入java,可以找到这样的命令:

-D<name>=<value>//seta system property

于是,输入:F:\java\workspace>java -DmyKey=myValue SystemDemo

结果:myValue

如果生成批处理文件,我们可以加载更多的信息

 

>>在java.lang中有Runtime类,没有构造函数,每个Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。

 

         没有构造函数,不能实例化,但是有非静态方法,这就意味着,该类一定有静态方法来调用这些非静态方法:

staticRuntime getRuntime()

          返回与当前 Java 应用程序相关的运行时对象。

         其实Runtime是由单例设计模式设计出来的。保证一个程序运行时在内存中的唯一性。

 

eg:运行一个程序以及使用一个程序加载文件

import java.io.*;

class RunTimeDemo

{

         publicstatic void main(String[] args)

         {

                   Runtimerun = Runtime.getRuntime();

                   try

                   {

                            //如果找不到文件便会报异常

                            //run.exec("winmine.exe");//启动扫雷

 

                            //可以通过指定应用程序,去解析指定的文件。

run.exec("notepad.exe,SystemDemo.java");

                   }

                   catch(IOExceptione)//异常是java.io中的

                   {

                            System.out.println("notfound!");

           }

         }

}

 

类 Process中的方法:abstract void destroy()//杀掉子进程。

eg:………………

Process p =run.exec("notepad.exe SystemDemo.java");

Thread.sleep(2000);//停两秒,注意,这个要抛异常

         p.destroy();

………………

注意,destroy方法只能关闭exec开启的进程,windows中的不能关

 

>> java.lang包中的Math类

public finalclass Mathextends ObjectMath 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

 

方法:

static double ceil(double a)//返回大于等于a的最小整数

static double floor(double a)//返回小于等于a的最大整数

 

long round(double a) :四舍五入。

pow(a,b):a的b次幂。

random():伪随机数,返回0到1之间的数不包括1,

|--Random类中方法

double nextDouble() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。

float nextFloat() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。

int nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

 

eg:import java.util.*;

class MathDemo

{

         publicstatic void main(String[] args)

         {

 

                   doubled1 = Math.ceil(12.45);

                   doubled2 = Math.floor(12.45);

 

                   System.out.println("d1="+d1);//d1=13.0

                   System.out.println("d2="+d2);//d2=12.0

 

                   longl = Math.round(12.54);

                   System.out.println("l="+l);

 

                   doubled = Math.pow(3,2);

                   System.out.println("d="+d);

 

                   //生成随机数之一

                   System.out.println("----------");

                   for(intx=0; x<10; x++)

                   {

                            inti = (int)(Math.random()*10+1);//伪随机数。1-10

 

                            System.out.println("i="+i);

                   }

                  

                   //生成随机数之二

                   System.out.println("----------");

                   Randomr = new Random();

                   for(intx=0; x<10; x++)

                   {        //调用Random类中方法

                            inti = r.nextInt(10)+1;//伪随机数。1-10

                            System.out.println("i="+i);

                   }

         }

}

 

>>Java中的日期,Date类中的方法,基本方法

eg:import java.util.*;

importjava.text.*;

 

class DateDemo

{

         publicstatic void main(String[] args)throws Exception

         {

                   method_3();

         }

//日期对象的中的其他方法。

         publicstatic void method_3()

         {

                   longtime2 = 1309487500781l;

 

                   Dated1 = new Date(time2);

 

                   Dated2 = new Date();

                   Dated3 = new Date();

 

                   System.out.println(d1.after(d2));//测试此日期是否在指定日期之后。

                   System.out.println(d1.before(d2));//测试此日期是否在指定日期之前。

                   System.out.println(d1.compareTo(d2));//比较两个日期的顺序。

                   System.out.println(d1.equals(d2));

                   System.out.println("-----------");

                   System.out.println(d3.after(d2));

                   System.out.println(d3.before(d2));

                   System.out.println(d3.compareTo(d2));

                   System.out.println(d3.equals(d2));

         }

        

         /*

         日期对象和毫秒值之间的转换。

         */

        

         //将日期对象转成一个毫秒值。

         publicstatic void method_2()

         {

                   Dated = new Date();

                  

                   longtime = d.getTime();

// 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此Date对象表示的毫秒数。

                   System.out.println(d);

         }

        

       //将毫秒值转成日期对象。

         publicstatic void method_1()

         {

                   //获取当前时间的毫秒值。

                   longtime = System.currentTimeMillis();

 

                   System.out.println(time);

                   //将毫秒值转成日期对象。//通过Date的构造函数。

                   Dated = new Date(time);

 

                   System.out.println(d);

 

                   //通过setTime方法。

                   Dated1 = new Date();

                   d1.setTime(time);

 

                   System.out.println(d1);

                  

 

                   longtime2 = 1309487500781l;

 

                   Dated3 = new Date(time2);

 

                   System.out.println("d3="+d3);

         }

}

 

>>以上例子的输出阅读性很差,但其实日期也有格式化方法

eg:import java.util.*;

importjava.text.*;//格式化方法于这个包中

         ………………

public staticvoid method_4()

         {

                   Dated = new Date();

                   SimpleDateFormatsdf = new SimpleDateFormat("yyyy年MM月dd日hh:mm:ss");

                   Stringstr = sdf.format(d);

                   System.out.println(str);

         }//SimpleDateFormat类为DateFormat的子类

        

         //第二种格式化方法

         publicstatic void show_2()

         {

                   Dated = new Date();

                  

                   DateFormatdf = DateFormat.getDateInstance();//获取日期

                   DateFormatdfTime = DateFormat.getTimeInstance();//获取时间

                   DateFormatdfDateTime = DateFormat.getDateTimeInstance();//获取日期和时间

                  

                   Stringstr = df.format(d);

                   StringstrTime = dfTime.format(d);

                   System.out.println(str+""+strTime);//日期和时间分开

                  

                   StringstrDateTime = dfDateTime.format(d);

                   System.out.println(strDateTime);//日期和时间一起

                  

                   //使用给定的风格。

                   DateFormatdfSelf = DateFormat.getDateInstance(DateFormat.LONG);

                  

                   //LONG风格的日期和时间

                   dfSelf= DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);

                   StringstrSelf = dfSelf.format(d);

                   System.out.println(strSelf);//显示2011年7月25日 上午10时53分53秒

         }

        

>>练习

需求:

         "2011-4-12"

         "2011-5-20"

         这两个日期间隔多少天?

 

         思路:

         1,先将字符串转成日期对象。

         2,然后将日期对象转成毫秒值。

         3,相减。

         4,将毫秒值转成天数。

 

import java.util.*;

import java.text.*;

class DateTest

{

         publicstatic void main(String[] args) throws Exception

         {

                   method();

         }

 

        

         publicstatic void method()throws Exception

         {

                   Stringstr_time1 = "2011-4-112";

                   Stringstr_time2 = "2011年5月20日";

                  

                   //将具体的日期格式封装成对象。

                   SimpleDateFormatsdf1 = new SimpleDateFormat("yyyy-MM-dd");

                   Dated1 = sdf1.parse(str_time1);

                   SimpleDateFormatsdf2 = new SimpleDateFormat("yyyy年MM月dd日");

                   Dated2 = sdf2.parse(str_time2);

 

                   System.out.println("d1="+d1);

                   System.out.println("d2="+d2);

 

                   longtime1 = d1.getTime();//转换成毫秒形式

                   longtime2 = d2.getTime();//转换成毫秒形式

 

                   longtime = Math.abs(time1-time2);//防止负数,加上绝对值

 

                   time= time/1000/60/60/24;

 

                   System.out.println(time);

         }

}

 

>>Date类中的过时方法被类Calendar取代

eg:import java.util.*;

class CalendarDemo

{

         publicstatic void main(String[] args)

         {

//获取一个日历

                   Calendarc = Calendar.getInstance();

                  

                   //根据相应的字段从日历中获取数据

System.out.println(c.get(Calendar.YEAR)

+"年"+getDateString(c.get(Calendar.MONTH)+1)

+"月"+getDateString(c.get(Calendar.DAY_OF_MONTH))

+"日"+getWeek(c.get(Calendar.DAY_OF_WEEK)));

         }

        

//对月份和日期补零保证长度不变

public staticString getDateString(int num)

         {

                   returnnum>9?num+"":"0"+num;

         }

 

//计算机的星期从0开始计算,转换成一般的阅读方法

         publicstatic String getWeek(int week)

         {       

                   String[]arr = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

                   returnarr[week-1];

         }

}

 

自行设定日期的set方法

eg:………………

Calendar c = Calendar.getInstance();

                   c.set(2012,4,1);

System.out.println(c.get(Calendar.YEAR)

+"年"+getDateString(c.get(Calendar.MONTH)+1)

+"月"+getDateString(c.get(Calendar.DAY_OF_MONTH))

+"日"+getWeek(c.get(Calendar.DAY_OF_WEEK)));

………………

注意,输出结果2012年5月1日星期二,计算机从0开始算月份,即如果输入c.set(2012,12,1);,会显示2013年1月1日星期二,特别注意。

 

增减日期的add方法

eg:………………

c.set(2012,1,32);

c.add(Calendar.YEAR,-2);

………………

显示2010年3月3日星期三

 

获取任意年份二月的天数

eg:………………

         publicstatic void getDays(int year)

         {

                   Calendarc = Calendar.getInstance();

                   c.set(year,2,1);//该年的3月1日

                   c.add(Calendar.DAY_OF_MONTH,-1);//减一天为二月最后一天

                   System.out.println(getDateString(c.get(Calendar.DAY_OF_MONTH))+"天”);

         }

………………


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值