Java 重难点:
1、Map类型的对象中的键值 支持转义字符
import java.io.*;import java.util.*;classtest
{public static void main (String[] args) throwsjava.lang.Exception
{
Map map = new HashMap();
map.put("aa", "good\n\n\n\n\n");
System.out.println(map.get("aa"));
System.out.println("test");
}
}
输出结果如下所示:
2、JSON字符串中 Boolean 类型值的存取
import java.io.*;import java.util.*;classtest
{public static void main (String[] args) throwsjava.lang.Exception
{
Map map= newHashMap();
map.put("aa", "good\n\n\n\n\n");
map.put("bool", true);if((Boolean)map.get("bool")) {
System.out.println("正确");
}else{
System.out.println("错误");
}
System.out.println(map.get("aa"));
System.out.println("test");
}
}
输出结果:
3、mvn仓库
4、Log4j
log4j.properties 配置:
# Root logger option
log4j.rootLogger=DEBUG, stdout,file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Redirect log messages to a log file,support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\log4j.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
上述配置文件配置了控制台输出 和 文件输出(C:\\log4j.log),%-5p 配置了日志记录优先级(DEBUG 或 ERROR等),$c{1} 配置了 通过Logger.getLogger(AppClass.class) 信息, %L 配置了日志记录请求的行号, %m%n 配置日志记录后添加换行符
log4j测试代码:
packagecom.w3cschool.ide;importorg.apache.log4j.Logger;public classApp{final static Logger logger = Logger.getLogger(App.class);public static voidmain(String[] args) {
App obj= newApp();
obj.runMe("w3cschool");
}private voidrunMe(String parameter){if(logger.isDebugEnabled()){
logger.debug("This is debug : " +parameter);
}if(logger.isInfoEnabled()){
logger.info("This is info : " +parameter);
}
logger.warn("This is warn : " +parameter);
logger.error("This is error : " +parameter);
logger.fatal("This is fatal : " +parameter);
}
}
importorg.apache.log4j.Logger;public classApp {final static Logger logger = Logger.getLogger(App.class);public static voidmain(String[] args) {
App obj= newApp();try{
obj.divide();
}catch(ArithmeticException ex) {
logger.error("Sorry, something wrong!", ex);
}
}private voiddivide() {int i = 10 / 0;
}
}
log4j.propertis 放在 WEB-INF/classes 目录下,需要在 web.xml 配置文件中添加配置
log4jConfigLocation
/WEB-INF/classes/log4j.properties
5、return 语句
return语句后不能再写有效语句,否则编译报错。
多重return语句返回:
import java.io.*;import java.util.*;classtest
{static int a = 1;public static void main (String[] args) throwsjava.lang.Exception
{for(int i=0;i<1;i++) {
System.out.println(getInt());
}
}private static intgetInt() {try{
a= a/0;return 1;
}catch(Exception e) {
System.out.println(a);return ++a;
}finally{
System.out.println(a);return a++;
}
}
}
最后,返回结果是:
分析: 优先级方面,finally中的return语句、catch中的return语句、try中的return语句的优先级逐渐降低,高优先级的return语句会覆盖掉低优先级的return语句
return ++a; 会先将a值+1,然后将+1后的值保存起来工返回。如果还有其他代码的话,继续进行其他代码,最后返回保存的返回值。
return a++; 会先将a值保存在返回值的区域,然后进行+1操作。随后返回保存的旧值。
如果try语句中有运行错误,那么try语句块中该错误之后的代码都不再运行,即使有return语句,也不执行。
6、