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程序的开发,环境变量的设置, ...
随机推荐
- nginx rewrite flag
1.break可以理解为switch中的break,而last可以理解为continue,一个是跳出server{}的匹配规则,一个还将继续匹配之后的规则. 无论使用last还是break,浏览器上面 ...
- day42
今日内容: 1.子查询补充 2.正则表达式 3.pymysql 1.子查询补充 什么是子查询? 将上一次查询的结果作为下一次查询的条件或原数据 又称为内查询 作用:当你的需求,一次查询无法满足的时候( ...
- sphinx搜索 笔记
架构图: 安装sphinx,见文章http://my.oschina.net/ptk/blog/495435 sphinx关键的配置文件.在里面写查询的sql. 两个关键命令:indexer生成查询索 ...
- java中CyclicBarrier简单入门使用
一个同步辅助类,它同意一组线程互相等待,直到到达某个公共屏障点 (common barrier point). 在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待.此时 CyclicBarr ...
- vue 使用 proxyTable 解决跨域问题
1.在 main.js 中,在引入 axios: import axios from 'axios' Vue.config.productionTip = false Vue.prototype.$a ...
- LoRa---射频信号接收框架简图介绍
LoRa整体框架图如下: 内容下次再填! 内容补上: 射频信号的接收流程(小博并非专业,错了emmmmm轻喷):射频--->中频--->基带,下面按照图中标的序号开始介绍: 1.天线接受射 ...
- metasploit-smb扫描获取系统信息
1.msfconsle 2.use auxiliary/scanner/smb/smb_version 3. msf auxiliary(smb_version) > set RHOSTS 17 ...
- binary 和 varbinary 用法全解
在SQL Server中,使用数据类型 binary(n) 和 varbinary(n) 存储二进制数据,n是指字节数量: binary(n):固定长度为 n 字节,其中 n 值从 1 到 8,000 ...
- QQ快速登录协议分析以及风险反思
前言 众所周知,Tencent以前使用Activex的方式实施QQ快速登录,现在快速登录已经不用控件了.那现在用了什么奇葩的方法做到Web和本地的应用程序交互呢?其实猜测一下,Web和本地应用进行交互 ...
- 基于.NET Standard的分布式自增ID算法--Snowflake
概述 本篇文章主要讲述分布式ID生成算法中最出名的Snowflake算法.搞.NET开发的,数据库主键最常见的就是int类型的自增主键和GUID类型的uniqueidentifier. 那么为何还要引 ...