Java基础

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值