1.1 可变字符串类



- 当字符串的长度超过字符串对象的初始容量时,该字符串对象会自动扩容
- 默认扩容算法是:原始容量*2 + 2
 
 

- StringBuilder类的源码分析
 
底层采用byte[]来存放所有内容。
- indexOf查找
 - setCharAt() 修改单个字符
 - replace
 
笔试考点
       //考点一: 既然StringBuilder类的对象本身可以修改, 那么为什么成员方法还有返回值呢?
       //解析:为了连续调用
       //str4.reverse().reverse();
       //考点二:如何实现StringBuiler类型和String类型之间的转换呢?
       //str4.toString();
       //StringBuilder str5 = new StringBuilder(“1234”);
       //
       //考点3: 效率比较
       //String < StringBuffer < StringBuilder
package com.lagou.task13;/*** @author 西风月* @date 2020/7/27* @description*/public class StringBuilderTest {public static void main(String[] args) {StringBuilder str1 = new StringBuilder();System.out.println("str1 = " + str1);System.out.println("str1.capacity() = " + str1.capacity());System.out.println("str1.length() = " + str1.length());System.out.println();StringBuilder str2 = new StringBuilder(20);System.out.println("str2 = " + str1);System.out.println("str2.capacity() = " + str2.capacity());System.out.println("str2.length() = " + str2.length());System.out.println();StringBuilder str3 = new StringBuilder("hello");System.out.println("str3 = " + str1);System.out.println("str3.capacity() = " + str3.capacity());System.out.println("str3.length() = " + str3.length());System.out.println(str3.insert(0, "abcd"));System.out.println(str3);System.out.println(str3.append("abcd"));System.out.println(str3.append("666777112"));System.out.println(str3.length());System.out.println(str3.capacity());StringBuilder str4 = new StringBuilder("012345678abcdefg87654321abcd");System.out.println(str4.deleteCharAt(8));for(int i = 8; i < 12; i++) {//System.out.println(str4.deleteCharAt(i));System.out.println(str4.deleteCharAt(8));}//01234567efg87654321abcdSystem.out.println(str4.delete(str4.length() -4 , str4.length()));//01234567efg87654321System.out.println(str4.replace(1,5,"abcd"));//0abcd567efg87654321str4.setCharAt(0, 'A');System.out.println(str4);//Aabcd567efg87654321System.out.println(str4.reverse());System.out.println(str4.indexOf("b"));System.out.println(str4.lastIndexOf("b"));//笔试考点//考点一: 既然StringBuilder类的对象本身可以修改, 那么为什么成员方法还有返回值呢?//解析:为了连续调用//str4.reverse().reverse();//考点二:如何实现StringBuiler类型和String类型之间的转换呢?//str4.toString();//StringBuilder str5 = new StringBuilder("1234");////考点3: 效率比较//String < StringBuffer < StringBuilder}}
1.2 Java8之前的日期相关类

package com.lagou.task13;/*** @author 西风月* @date 2020/7/28* @description*/public class SystemTest {public static void main(String[] args) {//1. 获取当前系统时间距离1970年1月1日0分0秒的毫秒数System.out.println("Now timegap [197001010000]" + System.currentTimeMillis() + "毫秒");//通常用于测试某一段代码额执行效率 --> 计算两个时间点的时间差}}

package com.lagou.task13;
import java.util.Date;
/**
 * @author 西风月
 * @date 2020/7/28
 * @description
 */
public class DateTest {
    public static void main(String[] args) {
        Date d1 = new Date();
        System.out.println("d1 = " + d1);
        System.out.println("=======================================");
        Date d2 = new Date(86400000);
        System.out.println("d2 = " + d2); //d2 = Fri Jan 02 08:00:00 CST 1970 东八区时差
        System.out.println(d2.getTime());
        d2.setTime(d2.getTime()+86400000*3);
        System.out.println("d2 = " + d2);
    }
}



package com.lagou.task13;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * @author 西风月
 * @date 2020/7/28
 * @description
 */
public class CalendarTest {
    public static void main(String[] args) {
        Date d1 = new Date(2020-1900,7-1,28,20,30);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(d1));
        System.out.println("==================================================");
        Calendar instance = Calendar.getInstance();
        instance.set(2020,7-1,28,20,30, 00);
        Date d2 = instance.getTime();
        System.out.println("获取到的时间是: " + sdf.format(d2));
        System.out.println("==================================================");
        instance.set(Calendar.YEAR, 2018);
        System.out.println(sdf.format(instance.getTime()));
        instance.add(Calendar.MONTH, 12);
        System.out.println(sdf.format(instance.getTime()));
        //考点:既然Calendar是抽象类,不能创建对象,下面的方法为什么可以获取Calendar的引用变量  解析:由源码可知,返回的并不是Calendar类型的对象,而是子类对象,形成了多态
    }
}
1.3 Java8中的日期相关类

package com.lagou.task13;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
/**
 * @author 西风月
 * @date 2020/7/28
 * @description
 */
public class LocalDateTimeTest {
    public static void main(String[] args) {
        LocalDate now = LocalDate.now();
        System.out.println(now);
        LocalTime now1 = LocalTime.now();
        System.out.println(now1);
        //使用最多的方法是:LocalDateTime
        LocalDateTime now2 = LocalDateTime.now();
        System.out.println(now2);
        System.out.println("===============================================");
        LocalDateTime of = LocalDateTime.of(2020, 7, 28, 21, 11, 12);
        System.out.println(of);      //自动调用toString()方法
        System.out.println(of.getYear());
        System.out.println(of.getMonthValue());
        System.out.println(of.getDayOfMonth());
        System.out.println(of.getHour());
        System.out.println(of.getMinute());
        System.out.println(of.getSecond());
        System.out.println("===============================================");
        LocalDateTime localDateTime = of.withYear(2019);
        System.out.println(localDateTime); //调用对象本身的内容不会改变
        System.out.println(of.withMonth(12));
        System.out.println("===============================================");
        System.out.println(of.plusDays(2)); //调用对象本身的内容不会改变
        System.out.println(of.plusHours(2));
        System.out.println(of.minusMinutes(1));
        System.out.println(of.minusSeconds(60));
    }
}
任务的总结
- 可变字符串类(重点)
- StringBuilder
 - StringBuffer
 
 - Java8之前的日期相关类(熟悉)
- Date类
 - Calendar类
 - SimpleDateFormat类
 
 - Java8增加的日期相关类(熟悉)
- LocalDateTime类
 - Instant类
 - DateTimeFormatter类
 - 熟悉概念与常用方法
 
 
  
