1、字符串相关类

  1. String
  2. StringbBuffer
  3. StringBuilder

    String类

  4. 代表字符串

  5. String类是一个final类,代表不可变的字符序列,不能被继承
  6. 字符串是常量,用双引号引起来,它们在创建之后不能修改
  7. String对象的字符内容是存储在一个final的字符数组value[]中的,体现不可变性
  8. String 实现了Serializable 接口 可序列化
  9. String 实现了Comparable 接口 可比较大小
  10. String 内部定义了final char[] value 用于存储字符串
  11. 通过字面量的方式给一个字符串赋值,此时字符串值声明在字符串常量池中
  12. 字符串常量池中不会存在相同内容

    1、例子:

    ```java

public class HelloWorld {

  1. /**
  2. * 1.字符串常量和常量的拼接在常量池中.且字符串常量池中不会存在相同的常量
  3. * 2.只要有一个变量参与,字符串的计算结果就在堆空间中。
  4. * 3.如果计算的结果调用 intern 方法结果就在常量池中
  5. * @param args
  6. */
  7. public static void main(String[] args) {
  8. String s1 = "hello";
  9. String s2 = "world";
  10. String s3 = "helloworld";
  11. String s0 = "hello"+ "world";
  12. System.out.println(s3 == s0);//true
  13. String s4 = s1 + "world";
  14. System.out.println(s3 == s4);//false
  15. String s5 = s4.intern();
  16. System.out.println(s3 == s5);//true
  17. }

}

  1. <a name="jF2fG"></a>
  2. ### 2、String的常用方法
  3. ```java
  4. public class HelloWorld {
  5. /**
  6. * 1.字符串常量和常量的拼接在常量池中.且字符串常量池中不会存在相同的常量
  7. * 2.只要有一个变量参与,字符串的计算结果就在堆空间中。
  8. * 3.如果计算的结果调用 intern 方法结果就在常量池中
  9. * @param args
  10. */
  11. public static void main(String[] args) {
  12. String s = "HelloWorld";
  13. //1.字符串的长度
  14. System.out.println(s.length());
  15. //2.字符串指定索引的字符
  16. System.out.println(s.charAt(1));
  17. //3.字符串转大写
  18. System.out.println(s.toUpperCase());
  19. //4.字符串转小写
  20. System.out.println(s.toLowerCase());
  21. //5.去除首尾空白字符串
  22. String s1 = " hello word ";
  23. System.out.println(s1.trim());
  24. //6.比较两个字符内容是否相等
  25. System.out.println("helloworld".equals(s));
  26. //7.比较两个字符内容是否相等 忽略大小写
  27. System.out.println("helloworld".equalsIgnoreCase(s));
  28. //8.字符串连接 等同于+
  29. System.out.println(s1.concat("xuezhiyi"));
  30. //9.字符串截取
  31. System.out.println(s.substring(2));
  32. //10.字符串截取 左闭右开
  33. System.out.println(s.substring(2,5));
  34. //11.字符串比较
  35. String s2 = "hello";
  36. String s3 = "world";
  37. System.out.println(s2.compareTo(s3));
  38. //12.以什么开始或者结尾
  39. System.out.println(s3.endsWith("ld"));
  40. System.out.println(s3.startsWith("wo"));
  41. System.out.println(s3.startsWith("rl",2));
  42. //13.包含字符串
  43. String s4 = "Hello";
  44. System.out.println(s.contains(s4));
  45. String s5 = "lol";
  46. System.out.println(s.indexOf(s5));//找不到返回-1
  47. }
  48. }

3、String StringBuffer StringBuilder 异同

  1. String 不可变的字符序列 底层使用 final char[]
  2. StringBuffer 可变的字符序列 线程安全的效率低 底层使用 char[]
  3. StringBuilder 可变的字符序列 线程不安全的效率高 底层使用 char[]
  4. StringBuffer StringBuilder 超出长度会扩容为原来的2倍+2 将原来的数组copy到新的数组 ```java public class HelloWorld {

    /**

    • @param args */ public static void main(String[] args) {

      StringBuffer buffer = new StringBuffer(); buffer.append(‘a’); buffer.append(‘b’); buffer.append(‘c’); buffer.append(‘d’); System.out.println(buffer); buffer.replace(2,3,”eee”); System.out.println(buffer.charAt(1)); System.out.println(buffer.insert(1,”pppp”)); StringBuffer delete = buffer.delete(1, 2); System.out.println(delete);

  1. }

}

  1. > 效率 StringBuilder > StringBuffer > String
  2. <a name="nIlNv"></a>
  3. ## 2、jdk8之前的日期类
  4. <a name="8v7wU"></a>
  5. ### 1、System类
  6. 获取毫秒时间戳 当前时间和1970年的时间差 毫秒为单位<br />long l = System._currentTimeMillis_();
  7. <a name="M1fkE"></a>
  8. ### 2、java.util.Date;
  9. <a name="0PzjK"></a>
  10. #### 1、两个构造器的使用
  11. 1. Date date = new Date(); 创建当前时间对应的时间的对象
  12. 1. Date date1 = new Date(1626925140460L); 创建指定时间对应的时间对象
  13. <a name="Ldz3y"></a>
  14. #### 2、两个方法的使用
  15. 1. toString() 返回年月日时分秒
  16. 1. date.getTime();//返回当前对象的毫秒时间戳
  17. <a name="1Yq2U"></a>
  18. ### 3、SimpleDateFormat
  19. <a name="TtZTx"></a>
  20. #### 格式化:日期转换成字符串
  21. <a name="9cmR8"></a>
  22. #### 解析:字符串转成日期
  23. ```java
  24. //日期格式化 21-7-22 下午1:41
  25. Date date = new Date();
  26. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  27. String format = sdf.format(date);
  28. System.out.println(format);
  29. //日期解析 Thu Jul 22 13:38:00 CST 2021
  30. String mydate= "2021-51-22 13:51:09";
  31. Date parse = sdf.parse(mydate);
  32. System.out.println(parse);

练习1:

  1. @Test
  2. public void test1() throws ParseException {
  3. //"2021-07-22" 转换成 java.sql.date
  4. String date = "2021-07-22";
  5. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  6. Date parse = sdf.parse(date);
  7. java.sql.Date date1 = new java.sql.Date(parse.getTime());
  8. System.out.println(date1);
  9. }

4、Calendar

3、jdk8之后的日期类

4、java比较器

5、System类

6、Math类

7、BigInteger BigDecimal