package com.softmax.basic.datastructure.sample;

import java.time.LocalDateTime;

/**
 * @author Jarvis
 * @date 2018/8/17
 */
public class StringCode {

    public static void main(String[] args) {
        var originStr = "ABCD";
        var newStr = reverse(originStr);
        System.out.println(newStr);

        changeLen(1, 2, 3, 4, 5, 6);
        //Byte、Short、Integer、Long、Char这几个装箱类的valueOf()方法是以128位分界线做了缓存的,
        // 假如是128以下且-128以上的值是会取缓存里面的引用的
        Integer a = Integer.valueOf(300);
        Integer b = Integer.valueOf(300);
        //true
        System.out.println(a.equals(b));
        //false
        System.out.println(a == b);

        //左侧补0
        String str = String.format("%5d", 3).replace(" ", "0");
        System.out.println(str);
    }

    /**
     * 字符串反转
     *
     * @param originStr
     */
    private static String reverse(String originStr) {
        if (originStr == null || originStr.length() <= 1) {
            return originStr;
        }
        return reverse(originStr.substring(1)) + originStr.charAt(0);
    }

    /**
     * 字符串反转
     *
     * @param originStr
     */
    private static String reverse1(String originStr) {
        if (originStr == null || originStr.length() <= 1) {
            return originStr;
        }
        return new StringBuilder(originStr).reverse().toString();
    }


    /**
     * 可变参数
     *
     * @param first
     * @param list
     */
    private static void changeLen(int first, int... list) {
        System.out.println(first);
        for (int item : list) {
            System.out.println(item);
        }
    }


    private static void stringTest() {
        String str0 = "123";
        String str1 = "123";
        //"=="在Java比较的不是两个对象的值,而是比较两个对象的引用是否相等
        System.out.println(str0 == str1);

        String str2 = "234";
        String str3 = "234";
        //Java虚拟机的解释器每遇到一个new关键字,都会在堆内存中开辟一块内存来存放一个String对象,不同的引用 false
        System.out.println(str2 == str3);
        //对比值相等
        System.out.println(str2.equals(str3));

        //昨天的当前时刻
        LocalDateTime today = LocalDateTime.now();
        var yesterday = today.minusDays(1);
        System.out.println(yesterday);


    }

}