1. Java System.getProperty("java.io.tmpdir") 獲取系統臨時目錄
System.getProperty("java.io.tmpdir") 是獲取操作系統的緩存臨時目錄
在windows7中的目錄是:
C:\Users\登錄用戶~1\AppData\Local\Temp\
在linux下的目錄是:
/tmp
可以獲取系統的配置信息,下面說一下System.getProperty()的參數有那些:
java.version | Java運行時環境版本 |
---|---|
java.vendor | Java運行時環境供應商 |
java.vendor.url | Java供應商的 URL |
java.home | Java安裝目錄 |
java.vm.specification.version | Java虛擬機規范版本 |
java.vm.specification.vendor | Java虛擬機規范供應商 |
java.vm.specification.name | Java虛擬機規范名稱 |
java.vm.version | Java虛擬機實現版本 |
java.vm.vendor | Java虛擬機實現供應商 |
java.vm.name | Java虛擬機實現名稱 |
java.specification.version | Java運行時環境規范版本 |
java.specification.vendor | Java運行時環境規范供應商 |
java.specification.name | Java運行時環境規范名稱 |
java.class.version | Java類格式版本號 |
java.class.path | Java類路徑 |
java.library.path | 加載庫時搜索的路徑列表 |
java.io.tmpdir | 默認的臨時文件路徑 |
java.compiler | 要使用的 JIT 編譯器的名稱 |
java.ext.dirs | 一個或多個擴展目錄的路徑 |
os.name | 操作系統的名稱 |
os.arch | 操作系統的架構 |
os.version | 操作系統的版本 |
file.separator | 文件分隔符(在 UNIX 系統中是“/”) |
path.separator | 路徑分隔符(在 UNIX 系統中是“:”) |
line.separator | 行分隔符(在 UNIX 系統中是“/n”) |
user.name | 用戶的賬戶名稱 |
user.home | 用戶的主目錄 |
user.dir | 用戶的當前工作目錄 |
- 用commons-lang.jar中的StringUtils.isNotEmpty()判空, 代替null和""的比較
- String substring(int beginIndex, int endIndex) 截取的范圍是左閉右開[beginIndex, endIndex)
4.Boolean.getBoolean("xxx")
獲取系統屬性并解析為boolean值,看源代碼可知,與parseBoolean()功能完全不同。詳細
-
ClassLoader.getResourceAsStream(String path)
獲取不到classpath
下的文件,是因為沒有將resource標記為Test Resource Root就可以了,查看編譯后的代碼,可以看到Resource目錄下的xml文件被放置到了classpath下,這樣也就可以正常獲取了。
文件結構
標記目錄為Test Resource Root
image.png
因此,檢查
ClassLoader.getResourceAsStream(String path)
方法的文件路徑是否正確,不應該去java文件所在的目錄下檢查是否存在該文件,應該去檢查class文件所在的根路徑下(classpath
)是否存在該文件,java項目就去bin目錄下,maven項目就去target\classes
目錄和target\test-classes
目錄下檢查文件是否存在
6.Collectors.toMap()
方法中value不能為null,因為Map不允許null作為值,因為如果你在Map中查找鍵k并且它不存在,那么返回的值已經是null(參見javadoc)。具體報錯原因參考Collectors源碼
public static void main(String[] args) {
List<User> userList= new ArrayList<>();
userList.add(new User(1, "mccree"));
userList.add(new User(2, "tracer"));
userList.add(new User(3, null));
// 這行代碼會報NPE,因為
Map<Integer, String> userMap =
userList.stream().collect(Collectors.toMap(User::getId, User::getName));
}
https://stackoverflow.com/a/53185359/6528237
- 獲取classpath下的資源文件的絕對路徑
// 使用classpath相對路徑
if (conf.contains("classpath:")) {
conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());
}
TreeMap.lastKey()是獲取key最大的Entry,而不是最后一次插入的Entry 示例
TreeMap是基于紅黑樹的實現的排序Map,對于獲取最大Key等操作優于HashMap快速打印數組
int[] array = {1,2,3,4,5};
System.out.println(Arrays.toString(array));
- 求最大值,最小值
Math.max(2, 5);
Math.min(3, 9);
- 求數組元素之和
int[] nums = {1, 2, 3, 4, 5};
int sum = IntStream.of(nums).sum();
- 判斷字符是否為數字或字母
char ch = 'a'
boolean flag = Character.isLetterOrDigit(ch);
- 字符串反轉
String string="runoob";
String reverse = new StringBuffer(string).reverse().toString();
- 求交集
Set<Integer> record1 = new HashSet(); // {1, 2, 3, 4}
Set<Integer> record1 = new HashSet(); // {2, 4, 6}
// 求兩個集合的交集, 結果為{2, 4}保存在record1中
record1.retainAll(record2);
- 當 Map 中不存在指定元素時不返回 null 而返回 默認值
Map<Integer, Integer> map= new HashMap<>();
int count = map.getOrDefault(n, 0); // 不存在元素n時不返回null, 返回默認值 0
// 等價于以上操作
if (recored1.containsKey(n)) {
int count = map.get(n);
} else {
int count = 0;
}