您的位置:首页 > 编程语言 > Java开发

20145110 《Java程序设计》第八周学习总结

2016-04-24 21:09 225 查看

20145110 《Java程序设计》第八周学习总结

教材学习内容总结

15.1日志

15.1.1日志API简介

Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,,要取得Logger实例,必须使用Logger的静态方法getLogger()。

import java.util.logging.*;

public class LoggerDemo {
public static void main(String[] args) {
Logger logger = Logger.getLogger(LoggerDemo.class.getName());
logger.log(Level.WARNING, "WARNING 讯息");
logger.log(Level.INFO, "INFO 讯息");
logger.log(Level.CONFIG, "CONFIG 讯息");
logger.log(Level.FINE, "FINE 讯息");
}
}




15.1.2指定日志层级

在没有任何组态设定的情况下,默认取得的Logger实例,层级必须大于或等于Logger.GLOBAL_LOGGER_NAME名称空间Logger实例设定的Level.INFO,才可能输出信息。

在java中负责日志输出的是Handler实例,Logger可以使用addHandler()新增handler实例,使用RomoveHandler移除实例,书中有一个程序范例,可以将目前Logger与新建的FileHandler层级设定Level.CONFIG,并使用addHandler()设定至Logger实例:

import java.io.IOException;
import java.util.logging.*;

public class HandlerDemo {
public static void main(String[] args) throws IOException {
Logger logger = Logger.getLogger(HandlerDemo.class.getName());
logger.setLevel(Level.CONFIG);
FileHandler handler = new FileHandler("%h/config.log");
handler.setLevel(Level.CONFIG);
logger.addHandler(handler);
logger.config("Logger 组装完成");
}
}

import java.time.Instant;
import java.util.logging.*;

public class FormatterDemo {
public static void main(String[] args) {
Logger logger = Logger.getLogger(FormatterDemo.class.getName());
logger.setLevel(Level.CONFIG);
ConsoleHandler handler = new ConsoleHandler();
handler.setLevel(Level.CONFIG);
handler.setFormatter(new Formatter() {
@Override
public String format(LogRecord record) {
return "日志來自 " + record.getSourceClassName() + "."
+ record.getSourceMethodName() + "\n"
+ "\t层级\t: " + record.getLevel() + "\n"
+ "\t讯息\t: " + record.getMessage() + "\n"
+ "\t时间\t: "  + Instant.ofEpochMilli(record.getMillis())
+ "\n";
}
});
logger.addHandler(handler);
logger.config("自订 Formatter 讯息");
}
}




15.1.5使用logging.Filter

可以通过logging.properties来设定Logger组态,启动JVM时,指定java.util.logging.config.file系统属性为.propertiles名称。

15.3规则表示式

规则表达式简介:如果我想根据某个字符串或字符进行切割,可以使用String的split()方法,它会返回切割后各子字符串组成的String数组。就像下面的程序:

```

import static java.lang.System.out;

public class SplitDemo {

public static void main(String[] args) {

// 根据逗号切割

for(String token : "Justin,Monica,Irene".split(",")) {

out.println(token);

}

// 根据Orz切割

for(String token : "JustinOrzMonicaOrzIrene".split("Orz")) {

out.println(token);

}

// 根据Tab字元切割

for(String token : "Justin\tMonica\tIrene".split("\t")) {

out.println(token);

}

}

}

```



JDK8API增强功能:

1.如果我们有一组字符串,我们想要指定每个字符串之间以“,”进行分隔,现在,我们可以使用String新增的join()静态方法。

2.对于数组操作,在JDK8中针对大型数组的平行化操作,在Arrays上新增了parallelPrefix(),ParallelSetall()与parallelSort()方法。

本周代码托管截图



学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周200/2001/220/20
第二周300/5001/318/38
第三周500/10001/422/60
第四周300/13001/530/90
第五周300/16001/630/160
第六周700/23002/730/190
第七周400/27002/930/220
第八周400/31002/1130/250

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: