一。String、StringBuffer、StringBuilder三者的异同?

String:不可变的字符序列;底层使用char[]存储
StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储
StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储

源码分析:String str = new String();//char[] value = new char[0];String str1 = new String("abc");//char[] value = new char[]{'a','b','c'};StringBuffer sb1 = new StringBuffer();//char[] value = new char[16];底层创建了一个长度是16的数组。System.out.println(sb1.length());//sb1.append('a');//value[0] = 'a';sb1.append('b');//value[1] = 'b';StringBuffer sb2 = new StringBuffer("abc");//char[] value = new char["abc".length() + 16];//问题1. System.out.println(sb2.length());//3//问题2. 扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组。默认情况下,扩容为原来容量的2倍 + 2,同时将原有数组中的元素复制到新的数组中。指导意义:开发中建议大家使用:StringBuffer(int capacity) 或 StringBuilder(int capacity)@Testpublic void test1(){StringBuffer sb1 = new StringBuffer("abc");sb1.setCharAt(0,'m');System.out.println(sb1);StringBuffer sb2 = new StringBuffer();System.out.println(sb2.length());//0}}

二。StringBuffer的常用方法:

​​​StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
StringBuffer delete(int start,int end):删除指定位置的内容:左闭右开
StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str :左闭右开
StringBuffer insert(int offset, xxx):在指定位置插入xxx
StringBuffer reverse() :把当前字符序列逆转
public int indexOf(String str)
public String substring(int start,int end):返回一个从start开始到end索引结束的左闭右开区间的子字符串 :左闭右开
public int length()
public char charAt(int n )
public void setCharAt(int n ,char ch)

总结:
        增:append(xxx)
        删:delete(int start,int end)
        改:setCharAt(int n ,char ch) / replace(int start, int end, String str)
        查:charAt(int n )
        插:insert(int offset, xxx)
        长度:length();
        *遍历:for() + charAt() / toString()
     */

    @Testpublic void test2(){StringBuffer s1 = new StringBuffer("abc");s1.append(1);s1.append('1');System.out.println(s1);
//        s1.delete(2,4);
//        s1.replace(2,4,"hello");
//        s1.insert(2,false);
//        s1.reverse();String s2 = s1.substring(1, 3);System.out.println(s1);System.out.println(s1.length());System.out.println(s2);}

三者效率对比:

ps:StringBuilder和StringBuffer的方法上是一样的,区别是一个同步一个不同步

三。日期时间的API

java.util.Date类|---java.sql.Date类1.两个构造器的使用>构造器一:Date():创建一个对应当前时间的Date对象>构造器二:创建指定毫秒数的Date对象
2.两个方法的使用>toString():显示当前的年、月、日、时、分、秒>getTime():获取当前Date对象对应的毫秒数。(时间戳)3. java.sql.Date对应着数据库中的日期类型的变量>如何实例化>如何将java.util.Date对象转换为java.sql.Date对象
 @Testpublic void test2(){//构造器一:Date():创建一个对应当前时间的Date对象Date date1 = new Date();System.out.println(date1.toString());//Sat Feb 16 16:35:31 GMT+08:00 2019System.out.println(date1.getTime());//1550306204104//构造器二:创建指定毫秒数的Date对象Date date2 = new Date(155030620410L);System.out.println(date2.toString());//创建java.sql.Date对象java.sql.Date date3 = new java.sql.Date(35235325345L);System.out.println(date3);//1971-02-13//如何将java.util.Date对象转换为java.sql.Date对象//情况一:
//        Date date4 = new java.sql.Date(2343243242323L);
//        java.sql.Date date5 = (java.sql.Date) date4;//情况二:Date date6 = new Date();java.sql.Date date7 = new java.sql.Date(date6.getTime());}//1.System类中的currentTimeMillis()@Testpublic void test1(){long time = System.currentTimeMillis();//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。//称为时间戳System.out.println(time);}
}

JAVASE学习总结(20):字符串相关的类--StringBuffer相关推荐

  1. JAVASE学习笔记 Java中的常用类--StringBuffer类、StringBuilder类

    1.StringBuffer类概述 在Java中我们如果对字符串进行拼接操作,每次拼接都能构建一个新的String对象,这样操作既费时有浪费时间,StringBuffer类就能解决这个问题. Stri ...

  2. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

  3. 字符串相关的类String

    String类 一.String类概述 二.String类的使用 1. 不可变性的体现 2. 对象的创建的两种方式及存储结构 2. 两种不同的连接方式的对比 三.String类和其他类的转换 1. 和 ...

  4. JavaSE学习小结二

    JavaSE学习小结二 记录学习----------JavaSE模块三&四 其中大部分是一些工具类,会将常用方法及其功能描述整理成表格方便日后查阅 文章目录 JavaSE学习小结二 一.Obj ...

  5. javaSE学习笔记——第十四天正则表达式、Math类、System类、Data类、Calendar类等

    javaSE学习第十四天 java知识 正则表达式的概述和简单使用 A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. 作用:比如 ...

  6. Java常用类(数学相关类 /字符串相关类/时间相关类/格式化类)

    Java类库概述 Java类库文档 https://docs.oracle.com/javase/8/docs/api/ 可以下载文档离线版本(chm格式) https://blog.csdn.net ...

  7. 【JAVASE(7)】JAVASE学习--注解及小众常用类篇

    A.注解--Annotation     一.概念:         注释:文字描述程序,给人看         注解:说明程序,给计算机看 1)从JDK5开始,Java增加对元数据的支持(MetaD ...

  8. 面试算法基础及编程 第四弹 (字符串、数值类、或其他常见相关)

    // # -*- coding:utf-8 -*- // # @Author: Mr.chen(ai-chen2050@qq.com) // # @Date: 2018-08-18 21:06:30 ...

  9. Java常用类(1)--字符串相关类String、StringBuffer、StringBuilder全面知识

    文章目录 String类 StringBuffer类 StringBuilder类 String:不可变的字符序列:底层使用char[]存储 StringBuffer:可变的字符序列:线程安全的,效率 ...

  10. 零基础带你学习MySQL—字符串相关的函数(十三)

    零基础带你学习MySQL-字符串相关的函数(十三) 一.CHARSET (str)返回子串字符集 二.CONCAT连接子串,将多个列拼接成一列 三.INSTR(string,substring)返回s ...

最新文章

  1. Android移动开发之【Android实战项目】在Service中弹出Dialog对话框,即全局性对话框
  2. boost::erase相关的测试程序
  3. 关于JavaScript的变量和函数提升
  4. 查看数据库系统字符集
  5. C++中类和对象的一些注意事项 ---继承
  6. (贪心)区间问题大致思路
  7. Dart核心语言基础const关键字与final关键字的区别
  8. vue.js v-bind
  9. WebRTC 将一统实时音视频天下?
  10. 最近谷歌苹果亚马逊扎堆收购的公司,会不会下一个就是你?
  11. 连线杂志:史上最强的恶意软件Stuxnet揭秘
  12. IP66 IP67 防护等级介绍
  13. Kubernetes总结一:初识Kubernetes
  14. Amigo---Android hotfix terminator
  15. 基于P5.js的动态绘板
  16. 是谁在觊觎娱乐圈站点?揭秘神秘黑客组织-黑界
  17. JavaScript对象、基本类型和字面值之间的区别
  18. 【socket】socket编程总目录
  19. 30天自制操作系统——第五天
  20. 关于微信公众号调起支付

热门文章

  1. 地图上导出坐标html文件,如何将标签的坐标、海拔等属性导出到TXT文本中
  2. Java程序开发的基本流程是什么样的?
  3. Fortran 95 数据类型、输入输出、声明
  4. ORACLE GOLDENGATE: WHAT IS ADD TRANDATA REALLY DOING?
  5. 客户成功案例 | 台湾杜邦:提升制程能力的法宝 — 先进的数据分析
  6. android实体键盘输入法,推荐一个实体键盘专用输入法,是对 autotext的改进
  7. 影集电子相册制作系统普及版 39.9.7已注册版
  8. python定时重启程序
  9. 各种音视频编解码学习详解
  10. 质数的后代c语言,GRE机经:2014数学sub回忆题(造福后人)