---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
一、System类
1、java、lang包中的一个类,继承Object类
public final class System extends Object
System
类包含一些有用的类字段和方法。它不能被实例化。
在 System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
类中的3个静态字段:
public static final InputStream in“标准”输入流。此流已打开并准备提供输入数据。通常,
此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
public static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,
此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
对于简单独立的 Java 应用程序,编写一行输出数据的典型方式是: System.out.println(data)
public static final PrintStream err
- “标准”错误输出流。此流已打开并准备接受输出数据。
接下来看看类中的其他方法:
static properties getProperties();获取当前系统的属性
Properties类是HashMap的子类,那么可以通过MAP集合中的方法操作元素
static getProperty();获取指定属性的信息
static setProperty(key ,value);在系统中自定义一些特有属性信息
在jvm启动时,动态加载一些属性信息:
1.在代码中://在jvm启动时,动态加载一些属性信息
//String v=System.getProperty("黑马");
// System.out.println("v="+v);
2、在控制台上:java -D黑马=程序员 SystemDemo(类名)
示例代码:
//System类,获取系统中的属性(键值对) import java.util.*; class SystemDemo{ public static void main(String[] args){ Properties prop=System.getProperties(); //因为properties是Hashtable的子类,也就是Map集合的一个子类对象 //那么可以通过map的方法取出该集合的元素 //该集合中存储的是字符串。没有泛型定义 //在系统中设置自定义一些特有信息 //System.setProperty("mykey","myvalue"); //获取指定信息 //String value=System.getProperty("os.name"); //System.out.println("value="+value); //在jvm启动时,动态加载一些属性信息 //String v=System.getProperty("黑马"); // System.out.println("v="+v); /*打印所有系统属性信息*/ for(Object obj : prop.keySet()){ String value=(String)prop.get(obj); System.out.println(obj+"----"+value); } } }
二、Runtime类
1、在java、lang包中,每个 Java 应用程序都有一个 Runtime
类实例,使应用程序能够与其运行的环境相连接。
也就是说,每个java程序要在当前系统中执行,必须在系统中开启一个进程,才可以执行该程序
可以通过 getRuntime
方法获取当前运行时(进程)。
2、而且Runtime类没有构造函数,且类中方法不是静态的,这就是运用了java单例设计模式,保证了此时此刻只能有一个当前与java应用程序相关的运行时对象。
我们提供static Runtime getRuntime();方法获取本类对象
再通过类中方法:Process exec(String command);在单独的进程中执行该可执行程序
class RuntimeDemo{ public static void main(String[] args)throws Exception { Runtime r=Runtime.getRuntime(); //执行记事本程序,并将一个文本文件在记事本中打开 Process p=r.exec("notepad.exe"); Thread.sleep(5000); p.destroy(); //杀掉子进程。 } }
返回的process对象,这个对象中的方法可以操作该进程:如,destroy();杀掉子进程
三、操作日期时间的类:Date类
1、在java、util包中,类 Date
表示特定的瞬间,精确到毫秒。
类中的好多方法已过时,意思是,不建议我们使用它,我们用它的Data();这个构造函数类创建它的对象
package Test; import java.util.*; //文本包 import java.text.*; public class DateDemo{ public static void main(String[] args){ Date d=new Date(); System.out.println(d); } } //执行结果:Mon Nov 04 10:44:00 CST 2013
虽然能够打印出时间,但是这种时间格式我们并不能清晰的看懂他,
通过学习我们学习了另一个类;DateFormat类(抽象的)提供了对时间格式化的操作,让我们更清楚的看懂
四、DateFormat类(是一个抽象类)
1、已知子类,SimpleDateFormat类,我们可以用它创建对象,并且在构造函数上,传递日期时间的模板格式,就可以将时间格式化
import java.text.SimpleDateFormat; import java.util.Date; /** * @param args */ public class DateDemo{ public static void main(String[] args){ Date d=new Date(); System.out.println(d); //关联一个抽象类:DateFormat类;将模式封装在SimpleDateFormat对象中 SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss "); //调用format()方法让模板格式化指定将Date对象 String time=sdf.format(d); System.out.println(time); } } //执行结果: Mon Nov 04 11:04:08 CST 2013 // 2013年11月04日 星期一 11:04:08
对于SimpleDateFormat类中的格式化的字符串字段,我们可以查阅API:
五、Calendar类,是一个抽象类
1、java、util包中,它也是操作日期的类,提供了对日期更加广泛的操作,而且类中有很多静态方法,
我们通过静态方法获取实例对象:static Calendar getInstance();
package Test; import java.util.*; import java.text.*; class CalendarDemo1{ public static void main(String[] args){ Calendar c=Calendar.getInstance(); String[] month={"一月","二月","三月","四月","五月","六月","七月" ,"八月","九月","十月","十一月","十二月"}; String[] week = {"","周日","周一","周二","周三","周四","周五","周六"}; int months=c.get(Calendar.MONTH); //获取周中的星期几,并用中文表示,利用查表法在week数组中获得中文表示 int index1 = c.get(Calendar.DAY_OF_WEEK); sop(c.get(Calendar.YEAR)+"年-"+month[months]+c.get(Calendar.DAY_OF_MONTH)+"日:"+week[index1]); } public static void sop(Object obj){ System.out.println(obj); } } //执行结果:2013年-十一月4日:周一
练习代码:求某年的某个月有多少天?
package Test; import java.util.*; import java.text.*; class CalendarDemo1{ public static void main(String[] args){ Calendar c=Calendar.getInstance(); //c.set(2015,6,15);//设置年月日 // c.add(Calendar.YEAR, +3);//可以通过此方法,把当前时间日期,向前或者向后推移(如:+或- 3) //获取任意年的某个月有多少天 /*思路:1,将某一年的日期通过:set();设置好 * 2.再 通过add()方法对日期进行前后偏移,得出这个月有多少天 * 3.通过get();方法获取天数 * */ c.set(2015, 2,1); c.add(Calendar.DAY_OF_MONTH, -1); int x=c.get(Calendar.DAY_OF_MONTH); System.out.println(x+"天"); String[] month={"一月","二月","三月","四月","五月","六月","七月" ,"八月","九月","十月","十一月","十二月"}; String[] week = {"","周日","周一","周二","周三","周四","周五","周六"}; int months=c.get(Calendar.MONTH); //获取周中的星期几,并用中文表示,利用查表法在week数组中获得中文表示 int index1 = c.get(Calendar.DAY_OF_WEEK); sop(c.get(Calendar.YEAR)+"年-"+month[months]+c.get(Calendar.DAY_OF_MONTH)+"日:"+week[index1]); } public static void sop(Object obj){ System.out.println(obj); } } //执行结果:28天 2015年-二月28日:周六
六、Math类(对数学运算操作的类)
1.在java.lang包中,被final修饰的类,且方法全为静态方法
2.类中也有求随机数的方法:Math.random();
代码练习:
package Test; class MathDemo{ public static void main(String[] args ){ Double d=new Double(Math.ceil(16.25978));//返回大于指定double数据的最小整数 Double d1=new Double(Math.floor(12.34));//返回小于指定double数据的最小整数 Long lo=new Long(Math.round(12.58));//四舍五入 Double d2=new Double(Math.pow(2,6));//求2的6次方的值 sop(d); sop(d1); sop(lo); sop(d2); sop("---------------------------------------"); for(int x=0;x<10;x++){ //Math类中求随机数的方法:random(); Integer d3=new Integer((int)(Math.random()*10+1)); sop(d3); } } public static void sop(Object obj){ System.out.println(obj); } } 打印结果: 17.0 12.0 13 64.0 --------------------------------------- 10 5 9 2 3 7 7 6 7 4