Java基础
前言
记录Java常规知识点一、Java基础之文件路径
获取当前类所在的工程路径
this.getClass().getResource("/").getPath()
获取当前类的绝对路径
this.getClass().getResource("").getPath()
获取当前src下面的文件的路径
Test1.class.getClassLoader().getResource(“application.properties”)
获取其他源码包下面的文件路径
解决jar中通过new File(filePath) 读取不到文件的问题
Test1.class.getClassLoader().getResource(“application.properties”)
代码示例:
二、Java基础之属性文件读取yml、properties
2.1. yml文件读取
application.yml
spring:
application:
name: ddd
business:
- 123
- 456
- 789
代码实现:
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* @author LCZQ-BJ-User
*/
public class YamlReader {
private static Map<String, Map<String, Object>> properties = new HashMap<>();
/**
* 单例
*/
public static final YamlReader instance = new YamlReader();
static {
Yaml yaml = new Yaml();
try (InputStream in = YamlReader.class.getClassLoader().getResourceAsStream("application.yml");) {
properties = yaml.loadAs(in, HashMap.class);
} catch (Exception e) {
System.out.println("Init yaml failed !");
}
}
/**
* get yaml property
*
* @param key
* @return
*/
public Object getValueByKey(String key) {
String separator = ".";
String[] separatorKeys = null;
if (key.contains(separator)) {
separatorKeys = key.split("\\.");
} else {
return properties.get(key);
}
Map<String, Map<String, Object>> finalValue = new HashMap<>();
for (int i = 0; i < separatorKeys.length - 1; i++) {
if (i == 0) {
finalValue = (Map) properties.get(separatorKeys[i]);
continue;
}
if (finalValue == null) {
break;
}
finalValue = (Map) finalValue.get(separatorKeys[i]);
}
return finalValue == null ? null : finalValue.get(separatorKeys[separatorKeys.length - 1]);
}
public static void main(String[] args) {
YamlReader instance = YamlReader.instance;
Object valueByKey = instance.getValueByKey("business");
System.out.println(valueByKey);
}
}
2.2. properties读取
application.properties
business=123, 456, 789
spring.application.name=ddd
代码实现:
/**
* @author LCZQ-BJ-User
*/
public class PropertiesReader {
public static PropertiesReader INSTANCE = new PropertiesReader();
private static Properties properties;
static{
properties = new Properties();
try (InputStream in = PropertiesReader.class.getClassLoader().getResourceAsStream("application.properties");) {
properties.load(in);
} catch (Exception e) {
System.out.println("Init yaml failed !");
}
}
public static void main(String[] args) {
String applicationName = properties.getProperty("spring.application.name");
System.out.println(applicationName);
}
}
三、Java源码中的二进制操作
3.1. hash & 0x7FFFFFFF
为了得到一个正数
System.out.println(Integer.toBinaryString(0x7FFFFFFF));
System.out.println(9&0x7FFFFFFF%12);
输出结果:
1111111111111111111111111111111
7
3.2. (rnd & 0x80000001) == 0
为了得到一个正偶数
System.out.println(Integer.toBinaryString(0x80000001));
System.out.println(9&0x80000001);
输出结果:
10000000000000000000000000000001
1