第7章 与运行环境交互
@(马克飞象)
- 关于
public static void main(String[] args)
public 修饰符:Java类由JVM调用,为了让JVM可以调用main方法,所以使用public修饰符。 - 获取键盘输入:Scanner和BufferedReader,System.in代表标准输入,就是键盘输入。
//Scanner方法
Scanner sc = new Scanner(System.in);
while(sc.hadNext()){
System.out.println(sc.next());
}
//BufferedReader方法
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
- Runtime类可以直接单独启动一个进程来运行操作系统的命令,比如以下代码将启动记事本:
Runtime rt = Runtime.getRunTime();
rt.exec("notepad.exe");
- String、StringBuffer和StringBuilder类
String类是不可变类,从创建到销毁其字符序列不可变。
StringBuffer对象是字符序列可变的字符串,提供append()、insert()、reverse()、setCharAt()、setLength()等方法。
StringBuilder与StringBuffer类似,比起stringBuffer没有实现线程安全功能,性能略高,一般情况下优先使用该类创建可变字符串。 - 字符串中equals 和 == 的区别:= =用来判断两个对象的地址是否相同,是否指向同一个对象,比较的是真正意义上的指针操作;equals()比较字符串的字符序列是否相同。即java.lang.String类重写了equals方法,如果两个字符串对象包含有相同的内容返回true,但是= =只有它们引用的地址相同时才会返回true。
- 创建BigDecimal对象时,要使用String作为构造器参数而不是直接使用Double。比如:使用
BigDecimal f1 = new BigDecimal("0.05");
而不是BigDecimal f1 = new BigDecimal(0.05);
。 - 正则表达式预定义字符
|预定义字符|说明|
|-|-|-|
| .|匹配任何字符|
| d|0-9所有数字|
| D|非数字|
| s|所有的空白字符,包括空格、制表符、回车符、换页符、换行符等|
| S|所有的非空白字符|
| w|所有的单词字符,包括0-9数字、26个英文字母和下划线(_)|
| W|所有的非单词字符| - 判断电子邮件地址是否合法的正则表达式:
String mailRegEx = "\w{3,20}@\w+\.(com|cn|net|org|edu.cn)";
- String类也提供了replaceAll()、replaceFirst()、split()等方法使用正则表达式来进行字符串操作,比如
String str = "result,replace,respect";
str.replaceAll("re\w*","xx-");//结果为xx-,xx-,xx-
- 使用SimpleDateFormat格式化日期实例
Date d = new Date();
System.out.println(d);
SimpleDateFormat sdf1 = new SimpleDateFormat("Gyyyy年中第D天");
String dateStr = sdf1.format(d);
System.out.println(dateStr);
String str = "07###三月##21";
SimpleDateFormat sdf2 = new SimpleDateFormat("y###MMM##d");
System.out.println(sdf2.parse(str));
/***输出
* Mon Dec 25 23:26:01 CST 2017
* 公元2017年中第359天
* Wed Mar 21 00:00:00 CST 2007
*/
SimpleDateFormat把日期格式化成什么样的字符串,以及能把怎样的字符串解析成Date,取决于创建该对象时指定的pattern参数,即使用日期字段占位符的日期模板。