zoukankan      html  css  js  c++  java
  • 面试知识点总结

    1、Java字符串拼接的方式:

    (1)用  + 符号:

    原理:其实是调用StringBuilder来实现的,”a” + “b”等效于下面的代码片:

    String a = "a";  StringBuilder sb = new StringBuilder();  sb.append(a).append("b");  String str = sb.toString();
    用“+”号每拼接一次都会新建一个StringBuilder对象,并且最后toString()方法还会生成一个String对象,在循环拼接十万次的时候,
    就会生成十万个StringBuilder对象,十万个String对象。

    (2)使用String的方法concat:

    public String concat(String str) {

    int otherLen = str.length(); if (otherLen == 0) { return this;

    } int len = value.length;

    char buf[] = Arrays.copyOf(value, len + otherLen); str.getChars(buf, len); return new String(buf, true); }

    (3)使用StringBuilder的append/StringBuffer的append

    2、Java日期相关

    /**
    * 获得指定日期的前一天
    * @param specifiedDay
    * @return
    * @throws Exception
    */
    public static String getSpecifiedDayBefore(String specifiedDay){
    //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    Date date=null;
    try {
    date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    c.setTime(date);
    int day=c.get(Calendar.DATE);
    c.set(Calendar.DATE,day-1);

    String dayBefore=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    return dayBefore;
    }
    /**
    * 获得指定日期的后一天
    * @param specifiedDay
    * @return
    */
    public static String getSpecifiedDayAfter(String specifiedDay){
    Calendar c = Calendar.getInstance();
    Date date=null;
    try {
    date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    c.setTime(date);
    int day=c.get(Calendar.DATE);
    c.set(Calendar.DATE,day+1);

    String dayAfter=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    return dayAfter;
    }

    这两个类实现append的方法都是调用父类AbstractStringBuilder的append方法,
    只不过StringBuffer是的append方法加了sychronized关键字,因此是线程安全的

    (4)使用使用StringBuffer的append

    1、循环拼接字符串

    StringBulider > StringBuffer >> String.concat > “+”。

    在只拼接少量字符串的情况下的时候,他们效率的按快慢排序是
    String.concat > StringBulider > StringBuffer > “+”。

    从以上分析我们可以得出以下几点结论
    1.无论如何直接用“+”号连接字符串都是最慢的
    2.在拼接少数字符串(不超过4个)的时候,concat效率是最高的
    3.多个字符串拼接的时候,StringBuilder/StringBuffer的效率是碾压的
    4.在不需要考虑线程安全问题的时候,使用StringBuilder的效率比StringBuffer更高

    2、jvm调优

    3、Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH) + 1;
            // int day = calendar.get(Calendar.DAY_OF_MONTH);
            int hour = calendar.get(Calendar.HOUR);
            int min = calendar.get(Calendar.MINUTE);
            int sec = calendar.get(Calendar.SECOND);
            int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            // System.out.println(year);
            // System.out.println(month);
            // System.out.println(day);
            // System.out.println(hour);
            // System.out.println(min);
            // System.out.println(sec);
            // System.out.println(week);
            // 获取某个月份的最后一天
            int currMonth = 2;
            calendar.set(calendar.get(Calendar.YEAR), currMonth, 1);
            calendar.add(Calendar.DATE, -1);
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.println(day);

  • 相关阅读:
    Python学习心得第四周-03 名称空间与作用域
    Python学习心得第四周-02 函数对象和嵌套
    Python学习心得第四周-01 函数的参数
    Python学习心得第三周-06 函数返回值
    Python学习心得第三周-05 函数
    Spring 3.x 企业应用实战—— AOP基础
    Spring 3.x 企业应用实战—— IoC 配置概述
    Spring 3.x 企业应用实战—— IoC 概述
    技巧 用curl测试服务器响应时间
    Spring JDBC Pagination Tutorial
  • 原文地址:https://www.cnblogs.com/wmm1117/p/10168391.html
Copyright © 2011-2022 走看看