Oracle为Java提供了丰富的基础类库,通过这些基础类库可以提高开发效率,降低开发难度。作为合格的Java程序员而言,至少要熟悉Java SE中70%以上的类。
运行Java程序的参数// Java程序入口:main()方法 public static void main(String[ ] args){....}
- public修饰符:Java类由JVM调用,为了让JVM可以自由调用这个main()方法,所以使用public修饰符把这个方法暴露出来。
- static修饰符:JVM调用这个主方法时,不会先创建该主类的对象,然后通过对象来调用该主方法。JVM直接通过该类来调用主方法,因此使用static修饰该主方法。
- void返回值:因为主方法被JVM调用,该方法的返回值将返回给JVM,这没有任何意义,因此main()方法没有返回值。
- 还包括了一个字符串数组形参数,根据方法调用的规则:谁调用方法,谁负责为形参赋值。也就是说,main()方法由JVM调用,即args形参应该由JVM负责赋值。
但是JVM怎么知道如何为args数组赋值呢?
public class ArgsTest { public static void main(String[ ] args) { // 输出args数组的长度 System.out.println(args.length); // 遍历args数组的每个长度 for(String arg : args){ System.out.println(arg); } } }
执行上面的程序,发现程序仅仅输出一个0,这表明args数组是一个长度为0的数组—这是合理的。因为程序没有给args数组设定参数值,那么JVM就不知道args数组的元素,所以JVM将args数组设置成一个长度为0的数组。
如果改用下面的命令来运行的话
java ArgsTest Java Spring
那么输出则为
2 Java Spring使用Scanner获取键盘输入
Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串解析出基本类型值和字符串值。
Scanner还提供了两个简单的方法来逐行读取
System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。
package 测试; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Map; import java.util.Properties; public class Test1 { public static void main(String[] args) throws FileNotFoundException, IOException { Mapenv = System.getenv(); for (String name : env.keySet()) { System.out.println(name + ">>>>>>" + env.get(name)); } // 获取指定环境变量的值 System.out.println("获取指定环境变量的值:---->" + System.getenv("Java_HOME")); // 获取所有的系统属性 Properties props = System.getProperties(); // 将所有的系统属性都保存到props.txt文件中 props.store(new FileOutputStream("props.txt"), "System.properties"); // 输出特定的系统属性 System.out.println("输出特定的系统属性---->" + System.getProperty("os.name")); } }
此外还会在此路径下创建一个props.txt文件,该文件记录了当前平台的所有系统属性。
System类还有两个获取系统当前时间的方法:currentTimeMillis()和nanoTime(),它们都返回一个long型整数。实际上它们都返回当前时间与UTC 1970年1月1日午夜的时间差,前者以毫秒作为单位,后者以纳秒作为单位。必须指出的是,这两个方法返回的时间粒度取决于顶层 *** 作系统,可能所在的 *** 作系统根本不支持以毫秒】纳秒作为计时单位。
System类的in、out和err分别代表系统的标准输入(通常是键盘)、标准输出(通常是显示器)和错误输入流,并提供了setIn(),setOut()和setErr()方法来改变系统的标准输入、标准输出和标准错误输出流。
Object类日期、时间类 Date类当程序使用System.out,println()方法输出一个对象,或者把某个对象和字符串进行连接运算时,系统会自动调用该对象的toString()方法返回该对象的字符串表示。object类的toString()方法返回"运行时类名@十六进制hashCode值"格式的字符串,但是很多类都重写了Object类的toString方法,用于返回可以表述该对象信息的字符串
Date对象既包括日期,也包括时间。
Date类提供的构造器
Date对象提供的方法
Calendar类总体来说,Date是一个设计相当糟糕的类,因此Java官方推荐尽量少用Date的构造器和方法。
Calendar 类是一个抽象类,它为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为 *** 作日历字段(如获得下星期的日期) 提供了一些方法。
创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。getInstance() 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。
Calendar c = Calendar.getInstance();
Calendar 对象可以调用 set() 方法将日历翻到任何一个时间,当参数 year 取负数时表示公元前。Calendar 对象调用 get() 方法可以获取有关年、月、日等时间信息,参数 field 的有效值由 Calendar 静态常量指定。
Calendar 类中定义了许多常量,分别表示不同的意义。
- Calendar.YEAR:年份。
- Calendar.MONTH:月份。
- Calendar.DATE:日期。
- Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
- Calendar.HOUR:12小时制的小时。
- Calendar.HOUR_OF_DAY:24 小时制的小时。
- Calendar.MINUTE:分钟。
- Calendar.SECOND:秒。
- Calendar.DAY_OF_WEEK:星期几。
package 时间类; import java.util.Calendar; import java.util.Date; public class Calendar的使用 { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); // 如果不设置时间,则默认为当前时间 calendar.setTime(new Date()); // 将系统当前时间赋值给 Calendar 对象 System.out.println("现在时刻:" + calendar.getTime()); // 获取当前时间 int year = calendar.get(Calendar.YEAR); // 获取当前年份 System.out.println("现在是" + year + "年"); int month = calendar.get(Calendar.MONTH) + 1; // 获取当前月份(月份从 0 开始,所以加 1) System.out.print(month + "月"); int day = calendar.get(Calendar.DATE); // 获取日 System.out.print(day + "日"); int week = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 获取今天星期几(以星期日为第一天) System.out.print("星期" + week); int hour = calendar.get(Calendar.HOUR_OF_DAY); // 获取当前小时数(24 小时制) System.out.print(hour + "时"); int minute = calendar.get(Calendar.MINUTE); // 获取当前分钟 System.out.print(minute + "分"); int second = calendar.get(Calendar.SECOND); // 获取当前秒数 System.out.print(second + "秒"); int millisecond = calendar.get(Calendar.MILLISECOND); // 获取毫秒数 System.out.print(millisecond + "毫秒"); int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); // 获取今天是本月第几天 System.out.println("今天是本月的第 " + dayOfMonth + " 天"); int dayOfWeekInMonth = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH); // 获取今天是本月第几周 System.out.println("今天是本月第 " + dayOfWeekInMonth + " 周"); int many = calendar.get(Calendar.DAY_OF_YEAR); // 获取今天是今年第几天 System.out.println("今天是今年第 " + many + " 天"); Calendar c = Calendar.getInstance(); c.set(2012, 8, 8); // 设置年月日,时分秒将默认采用当前值 System.out.println("设置日期为 2012-8-8 后的时间:" + c.getTime()); // 输出时间 } }
现在时刻:Fri Dec 31 15:41:22 CST 2021 现在是2021年 12月 31日 星期5 15时 41分 22秒 17毫秒 今天是本月的第 31 天 今天是本月第 5 周 今天是今年第 365 天 设置日期为 2012-8-8 后的时间:Sat Sep 08 15:41:22 CST 2012DateFormat 类
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期→文本)、解析(文本→日期)和标准化日期。
在创建 DateFormat 对象时不能使用 new 关键字,而应该使用 DateFormat 类中的静态方法 getDateInstance(),示例代码如下:
DateFormat df = DateFormat.getDatelnstance();
格式化样式主要通过 DateFormat 常量设置。将不同的常量传入到表 1 所示的方法中,以控制结果的长度。DateFormat 类的常量如下。
- SHORT:完全为数字,如 12.5.10 或 5:30pm。
- MEDIUM:较长,如 May 10,2016。
- LONG:更长,如 May 12,2016 或 11:15:32am。
- FULL:是完全指定,如 Tuesday、May 10、2012 AD 或 11:l5:42am CST。
// 获取不同格式化风格和中国环境的日期 DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA); DateFormat df2 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA); DateFormat df3 = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA); DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA); // 获取不同格式化风格和中国环境的时间 DateFormat df5 = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA); DateFormat df6 = DateFormat.getTimeInstance(DateFormat.FULL, Locale.CHINA); DateFormat df7 = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CHINA); DateFormat df8 = DateFormat.getTimeInstance(DateFormat.LONG, Locale.CHINA); // 将不同格式化风格的日期格式化为日期字符串 String date1 = df1.format(new Date()); String date2 = df2.format(new Date()); String date3 = df3.format(new Date()); String date4 = df4.format(new Date()); // 将不同格式化风格的时间格式化为时间字符串 String time1 = df5.format(new Date()); String time2 = df6.format(new Date()); String time3 = df7.format(new Date()); String time4 = df8.format(new Date()); // 输出日期 System.out.println("SHORT:" + date1 + " " + time1); System.out.println("FULL:" + date2 + " " + time2); System.out.println("MEDIUM:" + date3 + " " + time3); System.out.println("LONG:" + date4 + " " + time4);
SHORT:21-12-31 下午3:53 FULL:2021年12月31日 星期五 下午03时53分12秒 CST MEDIUM:2021-12-31 15:53:12 LONG:2021年12月31日 下午03时53分12秒SimpleDateFormat 类
如果使用 DateFormat 类格式化日期/时间并不能满足要求,那么就需要使用 DateFormat 类的子类——SimpleDateFormat。
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期/时间格式的模式。
SimpleDateFormat 类主要有如下 3 种构造方法。
- SimpleDateFormat():用默认的格式和默认的语言环境构造 SimpleDateFormat。
- SimpleDateFormat(String pattern):用指定的格式和默认的语言环境构造 SimpleDateF ormat。
- SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的语言环境构造 SimpleDateF ormat。
package 时间类; import java.text.SimpleDateFormat; import java.util.Date; public class SimpleDateFormat类的使用 { public static void main(String[] args) { Date now = new Date(); // 创建一个Date对象,获取当前时间 // 指定格式化格式 SimpleDateFormat f = new SimpleDateFormat("今天是 " + "yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒"); System.out.println(f.format(now)); // 将当前时间袼式化为指定的格式 } }
今天是 2021 年 12 月 31 日 星期五 15 点 55 分 52 秒
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)