Java学习之StringBuffer
1.类介绍
①线程安全的可变字符串序列,一个类似于String的字符串缓冲区,但是不能修改(就是不能通过加号+连接,String就可以)
②StringBuffer和String类的区别
String是一个可改变的字符序列
StringBuffer是一个可变的字符序列
2.构造方法
StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符
StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定初始容量
StringBuffer(CharSequence seq) 构造一个字符串缓冲区,其中包含与指定的 CharSequence相同的字符。
StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。
notes:
从jdk5开始,为该类补充了一个单个线程使用的等价类,即StringBuilder类,通常优先使用StringBuilder类,因为他支持所有相同操作,但是由于它不执行同步,所有速度更快
3.增删,替换翻转,截取() StringBuffer sb = new StringBuffer("abcd");
①添加
sb.append("str12"); //在末尾添加一个字符串
sb.insert(3,"hhh"); //在指定位置添加指定字符串
②删除
sb.deleteCharAt(3); //删除指定1位置的字符 并返回本身
sb.delete(1,3); //左闭右开
③清空缓冲区
sb.delete(0,sb.length()); ④替换
sb.replace(0,3,"bai") // 包含头不包含尾
⑤翻转
sb.reverse();
⑥截取
sb.substring(int start) //从指定位置截取到末尾
sb.substring(int start,int end) //从指定位置开始到结束位置,包括开始位置,不包括结束位置
// 截取 返回值不再是StringBuffer而是String 4.StringBuffer --> String
String --》 StringBuffer
a.通过构造方法
StringBuffer stringBuffer = new StringBuffer("woai");
System.out.println(stringBuffer); // 通过构造方法完成转换成String
b.通过append()方法
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("woai");
System.out.println(stringBuffer); // 通过append()方法完成转换成String StringBuffer --》 String
StringBuffer sb = new StringBuffer("woai1");
a.通过构造方法
String s = new String(sb); // 通过构造方法
System.out.println(s);
b.通过toString()方法
String string = sb.toString(); //通过toString()方法
System.out.println("string = " + string);
c.通过subString(0,length);
String substring = sb.substring(0, sb.length());
System.out.println(substring); 5.数组 --> 字符串
举例:
int [] arr = {1,2,3,};
输出结果:
"[1,2,3]"
用StringBuff的功能实现:
int[] arr = {1, 2, 3};
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
stringBuffer.append(arr[i]).append("]"); // 使用这样的添加方式会减少垃圾的存在
}else {
stringBuffer.append(arr[i]).append(",");
}
}
System.out.println(stringBuffer); 6.字符串翻转
通过StringBuffer进行翻转 7.StringBuffer和StringBuilder区别
StringBuffer是jdk1.0版本的,是线程安全的,效率低的 (对于用户访问量大的bat 保证其稳定性,对于金融要求,保证其稳定,其他都不存在)
StringBuilder是jdk1.5版本的,是线程不安全的,效率高的 String和StringBuffer,StringBuilder的区别
String是一个不可变的字符序列
StringBuffer,StringBuilder是可变的字符序列 8.String和StringBuffer作为参数传递
基本数据类型的值传递,不改变其值
引用数据类型的值传递,改变其值 // 因为传递的是内存地址, String s = "heihei";
System.out.println(s);
change(s);
System.out.println(s); // heihei
System.out.println("------------------");
StringBuffer sb = new StringBuffer();
sb.append("hhhhhh");
change(sb);
System.out.println("sb = " + sb); // heiheihhhhhh
9.数组-冒泡,选择,二分排序
(1)冒泡
// 数据元素:{24,69,80,57,13}
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
(2)选择
(3)二分排序
10.Arrays类
11.Interger类
12.String --> int
13.Interger面试题
Java学习之StringBuffer的更多相关文章
- java学习笔记 --- StringBuffer类
1.定义:字符串缓冲区,即它是一个容器,容器中可以装很多字符.并且能够对其中的字符进行各种操作. StringBuffer的特点: 1.是一个字符串缓冲区,其实就是一个容器. 2.长度是可变,任意类型 ...
- Java学习|String,StringBuffer,StringBuilder?
1 String (1) String的创建机理 由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池.其运行机制是:创建一个字 ...
- Java学习——String,StringBuffer和StringBuilder
Java学习——String,StringBuffer和StringBuilder 摘要:本文主要介绍了String字符串在内存中的存储情况,以及StringBuffer和StringBuilder的 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- Java 学习文章汇总
目前JAVA可以说是产业界和学术界最热门的语言,许多人都很急切想把JAVA学好. 但学习是需要步骤的,除非像电影中演的那样,能够把需要的专业技巧下载到脑海:主角只花了几秒下载资料,就马上具备飞行员的技 ...
- Java学习路线图分析
Java学习路线分析图 第一阶段 技术名称 技术内容 J2SE(java基础部分) java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置, ...
随机推荐
- 第13章 GPIO—位带操作
第13章 GPIO—位带操作 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- [HNOI2012]矿场搭建 BZOJ2730 点双+结论
Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一 ...
- [Baltic 2011]Lamp BZOJ2346
分析: 建图最短路,比较裸. 我们可以考虑,如果是‘\’那么,左上连右下边权为0,左下连右上边权为1,反之亦然. 卡裸spfa,加点优化能过,我就直接改成的堆优化Dijkstra 附上代码: #inc ...
- [HNOI2012]集合选数 BZOJ2734
分析: 构造法...每次找到一个没有被选过的数,用这个数推出一个表格,之后在表格上跑状压DP,时间复杂度O(n) 附上代码: #include <cstdio> #include < ...
- 一、CnPack源码模板功能快速添加注释
Delphi通过CnPack源码模板功能,能快速添加注释,非常之好用,使用方法如下图: 1.选择CnPack的源码模板专家 2.设置Pacal标准过程头 3.设置内容如下,并且设置了Ctrl+W的快捷 ...
- c# 多线程和异步
有时候需要多线程来运行处理后端和UI的更新. 通常用 ((Action)delegate() { if (isBussy) { return; } isBussy = true; while (tru ...
- 20155308『网络对抗技术』Exp5 MSF基础应用
20155308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...
- # 2017-2018-2 20155319《网络对抗技术》Exp9 :Web安全基础
2017-2018-2 20155319<网络对抗技术>Exp9 :Web安全基础 实践过程 webgoat准备 从GitHub上下载jar包(老师的虚拟机中有 无需下载) 拷贝到本地,并 ...
- [Python]-pip-ReadTimeoutError: Read timed out 问题
问题描述 就是在安装Python包的时候,由于时间太长引起的超时问题 问题解决 第一个办法是更改源地址:在 ~/.pip/ 下创建文件 pip.conf(如果还没有的话), 模版如下: [global ...
- 让vim成为VS的编辑器
编辑代码是还是感觉vim的比较方便--于是让vim成为VS的编辑器. 发现,安装了VsVim之后,也不失VS的便捷性,相当不错呢-- 对了我用的是VS2012---- 1.菜单栏->工具-> ...