黑马程序员-学习日记12(其他对象)

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

 

 

其他对象(System)

 1.System(java.lang):
   System:类中的方法和属性都是静态的。
   out: 标准输出,默认是控制台。
   in : 标准输入,默认是键盘。

  该类中的方法:
  1)static Properties getProperties()
     确定当前的系统属性。
  2)static String getProperty(String key)
     获取指定键指示的系统属性。
  3)static String getProperty(String key, String def)
     获取用指定键描述的系统属性。


 2.Properties(java.util)类:
    extends Hashtable<Object,Object>
    Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。
    属性列表中每个键及其对应值都是一个字符串。
   
    该类中的方法:
   1)String getProperty(String key)
     用指定的键在此属性列表中搜索属性。
   2)String getProperty(String key, String defaultValue)
     用指定的键在属性列表中搜索属性。

   3)Object setProperty(String key, String value)
     调用 Hashtable 的方法 put。

 3.F:\lx\heima\practice\18>java  Enter
  
   -D<name>=<value>
   set a system property设置系统信息。

   eg:动态加载信息
    F:\lx\heima\practice\18>java -Dhaha=qqqqq SystemDemo  Enter
    ----> v=qqqqq


 描述系统一些信息。

 获取系统属性信息:Properties getProperties();

02-其他对象(Runtime)

 1.Runtime(java.lang)对象
    该类并没有提供构造函数。
    说明不可以new对象,那么会直接想到该类中的方法都是静态的。
    发现该类中还有非静态方法。
    说明该类肯定会提供了方法获取本类对象,而且该方法是静态的,并且返回值类型是本类类型。

    由这个特点可以看出该类使用了单例设计模式完成。

    该方法是static Runtime getRuntime();
 2.该类中方法:
   1)getRuntime()
  public static Runtime getRuntime()
  返回与当前 Java 应用程序相关的运行时对象。Runtime 类的大多数方法是实例方法,
  并且必须根据当前的运行时对象对其进行调用。

   2 exec()
  public Process exec(String command)
     throws IOException在单独的进程中执行指定的字符串命令。
  这是一个很有用的方法。对于 exec(command) 形式的调用而言,其行为与调用 exec(command, null, null) 完全相同。
 3.Process进程类----destroy()方法
  abstract  void destroy()
     杀掉子进程。

 4.代码:
 class  RuntimeDemo
 {
  public static void main(String[] args) throws Exception
  {
   Runtime r = Runtime.getRuntime();
   Process p = r.exec("c\\winmine.exe");
   Thread.sleep(4000);
   p.destroy();
   Process p = r.exec("notepad.exe SystemDemo.java");
  }
 }

03-其他对象(Date)

 1.Date类(java.util包中)
    1).构造方法:
   public Date()
   分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
   
 2.DateFormat类(java.text包)
  该类是个抽象类,其子类是SimpleDateFormat

  1)SimpleDateFormat的构造方法:
   SimpleDateFormat(String pattern)
     用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

  2)日期和时间模式                               结果 
   "yyyy.MM.dd G 'at' HH:mm:ss z"         2001.07.04 AD at 12:08:56 PDT 
   "EEE, MMM d, ''yy"                     Wed, Jul 4, '01 
   "h:mm a"  12:08 PM 
   "hh 'o''clock' a, zzzz"                 12 o'clock PM, Pacific Daylight Time 
   "K:mm a, z"                             0:08 PM, PDT 
   "yyyyy.MMMMM.dd GGG hh:mm aaa"           02001.July.04 AD 12:08 PM 
   "EEE, d MMM yyyy HH:mm:ss Z"             Wed, 4 Jul 2001 12:08:56 -0700 
   "yyMMddHHmmssZ"                           010704120856-0700 
   "yyyy-MM-dd'T'HH:mm:ss.SSSZ"             2001-07-04T12:08:56.235-0700 
  3)format()方法
    public final String format(Date date)
    将一个 Date 格式化为日期/时间字符串。
 3.
 字母  日期或时间元素   表示  示例 
 G Era 标志符     Text     AD 
 y  年       Year    1996; 96 
 M  年中的月份     Month   July; Jul; 07 
 w  年中的周数     Number  27 
 W 月份中的周数     Number  2 
 D 年中的天数     Number  189 
 d 月份中的天数     Number  10 
 F 月份中的星期     Number  2 
 E 星期中的天数     Text    Tuesday; Tue 
 a Am/pm 标记     Text    PM 
 H 一天中的小时数(0-23)  Number  0 
 k 一天中的小时数(1-24)    Number  24 
 K am/pm 中的小时数(0-11)  Number  0 
 h  am/pm 中的小时数(1-12)  Number  12 
 m 小时中的分钟数    Number  30 
 s 分钟中的秒数     Number  55 
 S 毫秒数      Number  978 
 z 时区       General time zone  Pacific Standard Time; PST; GMT-08:00 
 Z 时区       RFC 822 time zone  -0800 

 4.相关代码:
 public static void main(String[] args)
 {
  Date d = new Date();
  System.out.println(d);//打印的时间看不懂,希望有些格式。

  //将模式封装到SimpleDateFormat对象中。
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");

  //调用format方法让模式格式化指定Date对象。

  String time = sdf.format(d);

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

  long l = System.currentTimeMillis();

  Date d1 = new Date(l);
  System.out.println("d1:"+d1);
 }


04-其他对象(Calendar)

 1.Calendar抽象类(java.util)-----日历

  Calendar 对象能够生成为特定语言和日历风格实现日期-时间格式化所需的所有日历字段值

    1)Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等
  日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
  瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量
    2)getInstance()方法:
    与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,
    以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,
    其日历字段已由当前日期和时间初始化:

   Calendar rightNow = Calendar.getInstance();
    3)get()方法:
    public int get(int field)
    返回给定日历字段的值

    4)set()方法:
     public final void set(int year,int month,int date)
     设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值

    5)add()方法:
   public abstract void add(int field,int amount)
   根据日历的规则,为给定的日历字段添加或减去指定的时间量。
   例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点:
   
   add(Calendar.DAY_OF_MONTH, -5)。

 2.西方日历特点
  0-11代表1到12月
  0-6代表星期一到星期日。


 3.两个练习:
   1),获取任意年的二月有多少天。
     思路:根据拽定年设置一个时间就是c.set(year,2,1)//某一年的3月1日。
      c.add(Calendar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月的最后一天。

    2)获取昨天的现在这个时刻。
  c.add(Calendar.DAY_OF_MONTH,-1);


05-其他对象(Math-Random)

1.Math类(java.lang包中)//隐式导入类
 1)ceil():
    static double ceil(double a)
          返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。
 2)floor():
  static double floor(double a)
          返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
 3)round():
  static long round(double a)
          返回最接近参数的 long。
 4)pow():
  static double pow(double a, double b)
          返回第一个参数的第二个参数次幂的值。
 5)random():
  static double random()
          返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
   

2.Random类(java.util)
 1)nextInt():
    int nextInt()
          返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
  代码:
  Random r = new Random();
  for (int x=0; x<10; x++)
  {
   //int d = (int)(Math.random()*10+1);//返回0.0到1.0之间(含0不含1)的随机数。
   int d = r.netInt(10)+1;
   sop(d);
  }

 

 

 

 

/*
类 Calendar
java.lang.Object
  java.util.Calendar
所有已实现的接口:
Serializable, Cloneable, Comparable<Calendar>
直接已知子类:
GregorianCalendar

--------------------------------------------------------------------------------

public abstract class Calendarextends Objectimplements Serializable, Cloneable, Comparable<Calendar>Calendar 类
是一个抽象类

其中的一个get方法。
 int get(int field)
          返回给定日历字段的值。

 


    类 GregorianCalendar
java.lang.Object
  java.util.Calendar
      java.util.GregorianCalendar
所有已实现的接口:
Serializable, Cloneable, Comparable<Calendar>

--------------------------------------------------------------------------------

public class GregorianCalendarextends CalendarGregorianCalendar
是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

//单独获取年,月,日;
//int getYear() Date中的方法。
//已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。

//设置年月日,并对其进行修改。
void set(int year, int month, int date)
          设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。

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

两个练习:
1 ,获取任意年的二月有多个天、
 思想:根据指定年设置一个时间就是
 c.set(year,2,1);//某一年的3月1日
 c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。
2 ,获取昨天的现在这个时刻。
 c.add(Calenar.DAY_OF_MONTH,-1);
*/

import java.util.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
class CalendarDemo{
 public static void main(String args[]){
  method4();
 }
 public static void method1(){
  Date d = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  String year = sdf.format(d);//返回的是字符串。
  System.out.println(year);
 }
 public static void method2(){
  Calendar c = Calendar.getInstance();//怎样做更简单?
  sop(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日"+"星期"+c.get(Calendar.DAY_OF_WEEK));
 }
 public static void method3(){//查表法。//查表法。//查表法。
  Calendar c = Calendar.getInstance();
  String[] mons = {"一月","二月","三月","四月",
       "五月","六月","七月","八月",
       "九月","十月","十一月","十二月"};
  String weeks[] = {"","星期日","星期一","星期二",
    "星期三","星期四","星期五","星期六"};
  int index = c.get(Calendar.MONTH);
  int index1 = c.get(Calendar.DAY_OF_WEEK);
  sop(mons[index]);
  sop(weeks[index1]);

 }
 public static void method4(){
  Calendar c = Calendar.getInstance();
  //c.set(2012,2,23);//此处的2,代表的是3月,0代表1月。
  c.add(Calendar.YEAR,4);//
  getCalendar(c);
 }
 public static void getCalendar(Calendar c){//查表法。//查表法。//查表法。
  
  String[] mons = {"一月","二月","三月","四月",
       "五月","六月","七月","八月",
       "九月","十月","十一月","十二月"};
  String weeks[] = {"","星期日","星期一","星期二",
    "星期三","星期四","星期五","星期六"};
  int index = c.get(Calendar.MONTH);
  int index1 = c.get(Calendar.DAY_OF_WEEK);
  sop(c.get(Calendar.YEAR));
  sop(mons[index]);
  sop(weeks[index1]);
 }
 public static void sop(Object obj){
  System.out.println(obj);
 }
}

 

 

/*
类 Date
java.lang.Object
  java.util.Date
所有已实现的接口:
Serializable, Cloneable, Comparable<Date>
直接已知子类:
Date, Time, Timestamp

--------------------------------------------------------------------------------

public class Date extends Object implements Serializable, Cloneable, Comparable<Date>类 Date 表示特定的瞬间,精确到毫秒。

时间也具备可比较性。

一般和这个类相关莲的类都会在此有描述。
另请参见:
DateFormat, Calendar, TimeZone(时区,东八区), 序列化表格

类 DateFormat
java.lang.Object
  java.text.Format
      java.text.DateFormat
所有已实现的接口:
Serializable, Cloneable
直接已知子类:
SimpleDateFormat

--------------------------------------------------------------------------------

public abstract class DateFormat extends FormatDateFormat
是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
该类是一个抽象类,不能实例化对象,但有一个SimpleDateFormat子类。

 String format(Date date)
          将一个 Date 格式化为日期/时间字符串。
    怎样把我指定的格式和日期相关连呢?


类 SimpleDateFormat
java.lang.Object
  java.text.Format
      java.text.DateFormat
          java.text.SimpleDateFormat
所有已实现的接口:
Serializable, Cloneable

--------------------------------------------------------------------------------

public class SimpleDateFormatextends DateFormat
SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。

SimpleDateFormat(String pattern)
          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

*/

import java.util.*;
import java.text.SimpleDateFormat;
class DateDemo{
 public static void main(String args[]){
  method2();
 }
 public static void method(){
  Date d = new Date();
  System.out.println(d);//打印的时间看不懂,希望有些格式。
 }
 public static void method1(){
  Date d = new Date();
  System.out.println(d);
  //将模式封装到SimpleDateFormat对象中。
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
  //调用format方法让模式格式化指定Date对象。
  String time = sdf.format(d);
  System.out.println("time = "+time);
 }
 public static void method2(){
  Date d = new Date();
  System.out.println(d);
  //将模式封装到SimpleDateFormat对象中。
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss");
  //调用format方法让模式格式化指定Date对象。
  String time = sdf.format(d);
  System.out.println("time = "+time);
 }
}
 

 

 

/*
练习:给定一个小数,保留该小数的后两位。
先得到一个小数,使这个数*100,在四舍五入,再使这个数除100;
*/
import java.util.*;
class MathDemo{
 public static void main(String args[]){
  Random r = new Random();
  for(int x=0;x<10;x++){
   //int d = (int)(Math.random()*10+1);
   int d = r.nextInt(10)+1;
   sop(d);
  }
  sop("===================");
  decimal();//一个方法。
 }
 public static void show(){
  double d = Math.ceil(16.34);//ceil返回大于指定数据的最小整数。
  double d1 = Math.floor(12.34);//floor返回小于指定数据的最大整数。
  long l = Math.round(12.54);//四舍五入。第一次调用该方法时,它将创建一个新的伪随机数生成器,与以下表达式完全相同 new java.util.Random
  sop("d= "+d);
  sop("d1 = "+d1);
  sop("l = "+l);
  double d2 = Math.pow(2,3);
  sop("d2 = "+d2);
 }
 public static void decimal() {//保留该小数的后两位。
  Random r1 = new Random();
  double d1 = r1.nextDouble()*1000;
  long d = Math.round(d1);
  double d2 = d/100.0d;
  sop(d1+"         "+d+"         "+d2);
 }
 public static void sop(Object obj){
  System.out.println(obj);
 }
}

 

 

 

/*
java.lang
类 Runtime
java.lang.Object
  java.lang.Runtime

--------------------------------------------------------------------------------

public class Runtime extends Object每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。

应用程序不能创建自己的 Runtime 类实例。
没有构造函数,不能直接创建对象。按理说里面的方法应都是静态的。
可是里面的方法都是非静态的,,(不让我建对象,但对我提供了,被
对象调用的方法,说明应该有一个静态的返回值类型为本类类型的
对象方法,,供我使用,

static Runtime getRuntime()
          返回与当前 Java 应用程序相关的运行时对象。
    这个对象无需建立,应用程序一执行,它本身就创建完毕。
    由这个特点可以看出该类使用了单例设计模式完成。

该类中并无提供构造函数,说明不可new对象,那么会直接想到该类
中的方法都是静态的,发现该类中还有非静态的方法,说明该类肯定
会提供一个方法获取本类对象,而且该方法是静态的,且返回值类型
为本类类型,该方法是static Runtim getRuntime();

 Process exec(String command)
          在单独的进程中执行指定的字符串命令。
  public Process exec(String command)
  throws IOException在单独的进程中执行指定的字符串命令。

 

*/

import java.util.*;
class RuntimeDemo{
 public static void main(String args[])throws Exception{
  Runtime r = Runtime.getRuntime();
  //r.exec("c:\\winmine.exe");
  r.exec("H:\\扣扣音乐\\QQMusic.exe");
  //r.exec("notepad.exe");
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值