java学习之其他对象API 灰太狼 2022-08-05 02:47 91阅读 0赞 一、System类 System类中的方法和属性都是静态的 常见方法: 1、long currentTimeMillis(); 获取当前时间的毫秒值,返回的是当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差。 2、Properties getProperties(); 获取系统的属性信息,并存储到了Properties集合中。Properties其实是 Hashtable的子类,所以存放的是键值对。Properties集合中存储的都是String类型的键和值,最好 使用它自己的存储和取出的方法来完成元素的操作。如下图: 第4行中,stringPropertyNames()返回的是属性列表中的键集合,用一个Set集合来接收。第5行用foreach进行 集合的遍历,第6行用getProperty(name)获取键对应的值。 public static void demo1() { Properties prop = System.getProperties(); Set<String> nameSet = prop.stringPropertyNames(); for(String name : nameSet) { String value = prop.getProperty(name); System.out.println(name + " : " + value); } } 在不同的操作系统中有不同的换行符,可以用System.getProperty("`line.separator`")来获取当前系统的换行符。 在windows系统中,换行符为“\\r\\n”,在UNIX系统中,换行符是"\\n"。 二、RunTime类 RunTime类没有构造方法摘要,说明该类不可以创建对象。又发现该类还有非静态的方法, 说明该类应该提供静态的返回该类对象的方法,而且只有一个,说明RunTime类使用单例设计模式。 下图第3行中,用Runtime类中的静态方法getRuntime()类获取该类对象,第4行用exec()方法执行程序, 开启记事本程序,然后解析指定文件。 public static void main(String[] args) throws IOException { Runtime r = Runtime.getRuntime(); r.exec("notepad.exe E:\\新建文本文档.txt"); } 三、Math类 Math提供了操作数学运算的方法,都是静态的。 方法: ceil(); 返回大于参数的最小整数 floor(); 返回小于参数的最大整数。 round(); 返回四舍五入的整数。 pow(a, b); 返回a的b次方。 random(); 返回大于等于0.0小于1.0的double值 下图中第9行是产生1到10的随机数。 public static void demo1() { System.out.println(Math.ceil(9.45));//10.0 System.out.println(Math.floor(9.45));//9.0 System.out.println(Math.round(9.45));//9 System.out.println(Math.pow(10, 2));//100.0 for(int i = 0; i < 10; i++) { int n = (int)(Math.random()*10 + 1); System.out.println(n); } } 四、Date类 日期对象和毫秒值之间的转换: 毫秒值--->日期对象 1.通过Date对象的构造方法 new Date(timeMillis) 2.通过setTime方法设置 为什么要转换? 因为可以通过Date对象的方法对该日期中的各个字段(年月日等)进行操作。 日期对象转--->毫秒值: 1.getTime方法 为什么要转换? 因为可以通过具体的数值进行运算。可以算两个日期相差的毫秒值。 下图中第3行用System类中的静态方法获取了当前的毫秒值,然后将该值作为参数传递给第7行Date类的构造函数,在打印出Date对象,结果显示把毫秒值转换成了日期和时间。 public static void demo1() { long time = System.currentTimeMillis(); System.out.println(time);//1433301286420 Date date1 = new Date();//将当期日期和时间封装成Date对象 System.out.println(date1);//Wed Jun 03 11:14:46 CST 2015 Date date2 = new Date(1433301286420l);//将制定毫秒值封装成Date对象 System.out.println(date2);//Wed Jun 03 11:14:46 CST 2015 } 日期对象和日期字符串之间也可以相互转化: 将日期对象--->日期格式的字符串 使用的是DateFormat类中的format方法。 DateFormat类是抽象类,下图中第5行直接用类中的静态方法获取日期格式对象,然后第6行用format 方法(参数为日期对象)得到日期字符串。如果要获得日期和时间的字符串,可使用getDateTimeInstance 方法,如第8行。 public static void demo2() { Date date = new Date(); //获取日期格式对象,具备着默认的风格。可以用FULL LONG等指定风格 DateFormat dateFormat = DateFormat.getDateInstance(); String strDate = dateFormat.format(date); System.out.println(strDate);//2015-6-3 DateFormat dateTime = DateFormat.getDateTimeInstance(); String strDateTime = dateTime.format(date); System.out.println(strDateTime);//2015-6-3 18:49:40 } 如果要使用自定义的日期字符串风格,可以使用DateFormat的子类SimpleDateFormat来创建对象, 并在构造函数的参数中指定字符串格式,其中y代表年份,M代表月份,d代表日。 public static void demo3() { Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy--MM--dd"); String strDate = dateFormat.format(date); System.out.println(strDate);//2015--06--03 } 将日期格式的字符串--->日期对象 使用的是DateFormat类中的parese()方法 下图中第7行中要转换的字符串是自定义格式的字符串,所以需要使用SimpleDateFormat来指定自定义个格式。 public static void demo4() throws ParseException { String strDate = "2015-5-20"; DateFormat dateFormat = DateFormat.getDateInstance(); Date date = dateFormat.parse(strDate); System.out.println(date);//Wed May 20 00:00:00 CST 2015 strDate = "2015|4|12"; dateFormat = new SimpleDateFormat("yyy|MM|dd"); date = dateFormat.parse(strDate); System.out.println(date);//Sun Apr 12 00:00:00 CST 2015 } 五、Calendar类 Calendar类是一个抽象类,要用类中的静态方法getInstance来获取对象。 下图中第4-6行用类中的get方法来获取年月日,传递的参数为静态字段,第5行获取月份是要加1, 因为c.get(Calendar.MONTH)返回值是从0开始到11,返回0表示1月,返回11表示12月,所以要 在返回值的基础上加1。 public static void demo1() { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH) + 1; int day = c.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + month + "月" + day + "日"); } 给定一个年份,输出改年的2月有几天。 可以是用add方法,在指定的日历字段中增加或减去时间量。3月1号减去1天就是2月份的最后一天。 如下图第6行,将Calendar.DAY\_OF\_MONTH字段减去一天得到了2月份最后一天,再用get方法 获取天数,就得到了改年2月份的天数了。 public static void demo2() { Calendar c = Calendar.getInstance(); int years = 2012; c.set(years, 2, 1); c.add(Calendar.DAY_OF_MONTH, -1); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH) + 1; int day = c.get(Calendar.DAY_OF_MONTH); System.out.println(year + "年" + month + "月" + day + "日"); }
还没有评论,来说两句吧...